JSCODE Logo
JSCODE 박재성JSCODE 제이온JSCODE 시니
과외유튜브블로그후기
완강 후기 이벤트블로그 리뷰 이벤트AWS SAA 합격 후기 이벤트
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2026 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침

비전공자도 이해할 수 있는 AWS 중급/실전 (보안 가용성편)

서비스 운영에 필수적인 네트워크 구성 방법 (VPC)

목표 설정
VPC란? / VPC를 왜 쓰는 걸까?
CIDR이란? / CIDR 표기법 해석 방법
[예제] CIDR 표기법 해석하기
사설 IP(프라이빗 IP) vs 공인 IP(퍼블릭 IP)
[실습] 사설 IP(프라이빗 IP)로 통신해보기
[실습] VPC 생성하기
서브넷이란 ?
[실습] 서브넷 생성하기
[실습] 퍼블릭 서브넷에 EC2 배치해보기
인터넷 게이트웨이란?
[실습] 인터넷 게이트웨이 생성하기
라우팅 테이블이란?
[실습] 라우팅 테이블 생성하기
AWS 아키텍처 그림으로 표현해보기
[복습] 퍼블릭 서브넷에 EC2 배치하기

외부 접근을 차단해 보안 강화시키기 (프라이빗 서브넷)

NAT 게이트웨이란 ?
[실습] NAT 게이트웨이 생성하기
[실습] 프라이빗 서브넷에 EC2 배치해서 외부 접근 차단하기
[실습] 프라이빗 서브넷의 EC2에 접속하는 방법
Bastion Host란?
[실습] 퍼블릭 서브넷에 Bastion Host 배치하기

서비스 장애 예방하기 (고가용성, 시스템 이중화)

가용성이란 ? / 시스템 이중화란 ?
가용 영역이란 ?
[실습] 가용 영역 2개를 활용해 VPC 구성하기
[실습] 새로운 가용 영역에 EC2 배치하기
[실습] 프라이빗 서브넷에 RDS 인스턴스 추가하기
[실습] 프라이빗 서브넷에 있는 RDS에 접속하는 방법
[실습] EC2 인스턴스에 Spring Boot 프로젝트 배포하기
[실습] ELB 추가하기
RDS의 다중 AZ 배포란?
[실습] RDS에 다중 AZ 배포 설정으로 장애 대비하기

접근 범위를 제한해서 보안 강화시키기 (보안 그룹)

최소 권한의 원칙(PoLP)이란?
보안 그룹이란?
[실습] 로드 밸런서(ALB)의 보안 그룹 수정하기
[보충 강의] 보안 그룹에 포함되지 않은 주체가 요청을 보내면 어떻게 작동할까?
[실습] EC2(Bastion Host)의 보안 그룹 수정하기
[실습] EC2(백엔드 서버)의 보안 그룹 수정하기
[실습] RDS(데이터베이스 서버)의 보안 그룹 수정하기

현업에서 자주 사용하는 AWS 인프라 아키텍처 직접 구축하기

[최종 미션] 현업에서 자주 사용하는 AWS 인프라 아키텍처 직접 구축해보기
[해설 강의] VPC 구성하기
[해설 강의] Bastion Host 배치하기
[해설 강의] RDS 배치하기
[해설 강의] 백엔드 서버 배치하기
[해설 강의] ALB 배치하기
[해설 강의] 보안 그룹 타이트하게 수정하기 (Bastion Host, ELB, 백엔드 서버, RDS)
← 블로그 목록으로 돌아가기

[해설 강의] 백엔드 서버 배치하기

JSCODE 박재성
JSCODE 박재성
2026. 03. 14.
author
JSCODE 박재성
category
AWS
createdAt
Dec 6, 2025 12:52 PM
isPublic
isPublic
series
비전공자도 이해할 수 있는 AWS 중급/실전 (보안 가용성편)
slug
solution-backend
type
post
updatedAt
Mar 14, 2026 09:00

✅ [해설 강의] 백엔드 서버 배치하기

  1. EC2 인스턴스 생성하기
      • 이름 : instagram-server-a
      • 키 페어 생성 : instagram-server
      • 서브넷 : instagram-private-app-subnet-a
      • 보안 그룹 이름 : instagram-server-security-group
        • 보안 그룹 규칙 : HTTP 모든 IPv4에 대해 허용 (디테일한 수정은 나중에)
       
  1. EC2 인스턴스 한 대 더 생성하기
      • 이름 : instagram-server-b
      • 키 페어 생성 : instagram-server (기존 꺼 사용)
      • 서브넷 : instagram-private-app-subnet-b
      • 보안 그룹 이름 : instagram-server-security-group (기존 꺼 사용)
       
  1. instagram-server-a에 접속하기 위해 bastion-host로 키 페어 전달
    1. # scp -i [EC2 접근을 위한 키 페어 파일] [전송할 파일명] [서버 username]@[EC2 인스턴스의 Public IP]:[전송 받을 파일 위치] $ scp -i instagram-bastion-host.pem instagram-server.pem ubuntu@[EC2 인스턴스의 Public IP]:~/
      그런 뒤 Bastion Host로 다시 접속 (AWS EC2 페이지에서 명령어 참고)
       
  1. Bastion Host에서 instagram-server-a로 접속
    1. $ chmod 400 "instagram-server.pem" $ ssh -i "instagram-server.pem" ubuntu@10.1.3.78 # EC2 페이지에서 참고
       
  1. Spring Boot 프로젝트 배포하기
    1. $ git clone https://github.com/JSCODE-COURSE/aws-vpc-springboot.git # application.yml 파일 수정하기 $ cd aws-vpc-springboot/src/main/resources $ vi application.yml # JDK 설치하기 $ sudo apt update $ sudo apt install openjdk-17-jdk -y $ java -version # Spring Boot 서버 빌드 후 실행시키기 $ cd ~/aws-vpc-springboot $ ./gradlew clean build -x test $ cd build/libs $ sudo nohup java -jar aws-vpc-springboot-0.0.1-SNAPSHOT.jar & # Spring Boot가 정상 실행 중인지 확인 $ sudo lsof -i:80 $ curl localhost:80/health
 
  1. instagram-server-b도 똑같은 과정으로 Spring Boot 프로젝트 배포하기
 
 
사실 이렇게 번거롭게 백엔드 서버 2대를 배치하지 않아도 된다. 나중에 오토 스케일링 그룹이라는 걸 활용하거나, AMI가 뭔지 배우게 되면 이 작업을 훨씬 편하게 할 수 있다. 하지만 이번 강의는 보안과 가용성에 초점을 둔 강의이기 때문에 귀찮더라도 수동으로 진행을 했다. 그럼 다음 강의에서는 ALB를 배치해보도록 하자.
 
 
 
📎
이 글은 비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편) 강의의 수업 자료 중 일부입니다.