JSCODE Logo
프로그래밍 과외블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

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

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

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

[실습] EC2 인스턴스에 Spring Boot 프로젝트 배포하기

JSCODE 박재성
JSCODE 박재성
2025-12-06
author
JSCODE 박재성
category
AWS
createdAt
Dec 6, 2025
series
비전공자도 이해할 수 있는 AWS 중급/실전 (보안 가용성편)
slug
exercise-deploy-spring-boot-to-ec2
type
post
updatedAt
Jan 12, 2026 12:03 AM

✅ 아키텍처 미리보기

notion image
 
 

✅ [실습] EC2 인스턴스에 Spring Boot 프로젝트 배포하기

  1. Bastion Host에 접속하기
    1. notion image
       
  1. instagram-server 인스턴스에 접속하기
    1. $ cd [키 페어 파일이 존재하는 경로] $ ssh -i "instagram-server.pem" ubuntu@[instagram-server 인스턴스의 프라이빗 IP]
       
  1. JDK 설치하기
    1. $ sudo apt update # 패키지 관리 시스템(apt)의 패키지 정보 업데이트 $ sudo apt install openjdk-17-jdk -y # JDK 17 버전 설치 $ java -version # JDK가 잘 설치됐는 지 확인
       
  1. Github으로부터 Spring Boot 프로젝트 clone 하기
    1. $ git clone https://github.com/JSCODE-COURSE/aws-vpc-springboot.git
      프로젝트 설명
      aws-vpc-springboot
      JSCODE-COURSE • Updated Mar 23, 2025
      • JPA의 옵션으로 인해 Board 테이블을 자동으로 생성
      • /health GET : Heatlh Check API
      • /boards : 게시글 조회 API (더미 데이터 생성을 위한 게시글 저장 로직 포함)
       
  1. application.yml 파일 수정하기
    1. $ cd aws-vpc-springboot/src/main/resources $ vi application.yml
       
      application.yml
      server: port: 80 spring: datasource: url: jdbc:mysql://___________:3306/instagram # RDS 인스턴스 엔드포인트 username: ______ # RDS 마스터 사용자 이름 password: ______ # RDS 마스터 비밀번호 driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: update show-sql: true
      파일을 열어보면 위와 같이 코드가 작성되어 있다. 자신의 RDS 정보에 맞게 수정해주자.
       
  1. 빌드해서 Spring Boot 서버 실행시키기
    1. $ cd ~/aws-vpc-springboot $ ./gradlew clean build -x test # 빌드하기 $ cd build/libs $ sudo nohup java -jar aws-vpc-springboot-0.0.1-SNAPSHOT.jar &
       
  1. 잘 작동하는 지 확인하기
    1. $ curl localhost:80/health $ curl localhost:80/boards # 게시글 조회 (+ 게시글 저장)
      notion image
      notion image
       
  1. 다시 Bastion Host로 나오기
    1. $ exit
       
      instagram-server-b 인스턴스에도 똑같이 Spring Boot 프로젝트를 배포하자.
       
  1. instagram-server-b 인스턴스에 접속하기
    1. $ cd [키 페어 파일이 존재하는 경로] $ ssh -i "instagram-server.pem" ubuntu@[instagram-server-b 인스턴스의 프라이빗 IP]
       
  1. JDK 설치하기
    1. $ sudo apt update # 패키지 관리 시스템(apt)의 패키지 정보 업데이트 $ sudo apt install openjdk-17-jdk -y # JDK 17 버전 설치 $ java -version # JDK가 잘 설치됐는 지 확인
       
  1. Github으로부터 Spring Boot 프로젝트 clone 하기
    1. $ git clone https://github.com/JSCODE-COURSE/aws-vpc-springboot.git
       
  1. application.yml 파일 수정하기
    1. $ cd aws-vpc-springboot/src/main/resources $ vi application.yml
       
      application.yml
      server: port: 80 spring: datasource: url: jdbc:mysql://___________:3306/instagram # RDS 인스턴스 엔드포인트 username: ______ # RDS 마스터 사용자 이름 password: ______ # RDS 마스터 비밀번호 driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: update show-sql: true
      파일을 열어보면 위와 같이 코드가 작성되어 있다. 자신의 RDS 정보에 맞게 수정해주자.
       
  1. 빌드해서 Spring Boot 서버 실행시키기
    1. $ cd ~/aws-vpc-springboot $ ./gradlew clean build -x test # 빌드하기 $ cd build/libs $ sudo nohup java -jar aws-vpc-springboot-0.0.1-SNAPSHOT.jar &
       
  1. 잘 작동하는 지 확인하기
    1. $ curl localhost:80/health $ curl localhost:80/boards # 게시글 조회 (+ 게시글 저장)
      notion image
      notion image
       
       
지금까지 2개의 EC2 인스턴스에 Spring Boot 프로젝트를 배포해봤다. 하지만 일반 사용자가 백엔드 API 서버에 요청을 보내기 위해 Bastion Host에 접속하는 과정을 거칠 수는 없다. 따라서 일반 사용자도 백엔드 API에 직접 요청을 보낼 수 있게 만들어주어야 한다. 그리고 사용자보고 2개의 백엔드 서버에 골고루 요청을 나눠서 보내라고 시킬 수가 없다. 따라서 사용자의 요청을 여러 대의 백엔드 서버에 골고루 전달하기 위한 장치가 필요하다. 그게 바로 로드 밸런서(ELB)이다. 로드 밸런스를 도입하면 여러 대의 EC2에 골고루 트래픽을 분산시킬 수 있게 된다. 뿐만 아니라 Bastion Host를 거치지 않고 외부 인터넷에서 요청을 보낼 수 있게 된다. 다음 강의에서는 ELB를 도입해보도록 하자.
author
JSCODE 박재성
category
AWS
createdAt
Dec 6, 2025
series
비전공자도 이해할 수 있는 AWS 중급/실전 (보안 가용성편)
slug
type
series-footer
updatedAt
Jan 12, 2026 12:02 AM
📎
이 글은 비전공자도 이해할 수 있는 AWS 중급/실전 (보안, 가용성편) 강의의 수업 자료 중 일부입니다.