AWS-EC2 인스턴스

8.1. AWS 프리티어로 Spring Boot 백엔드 서버 구축하기(EC2 + RDS 구성 및 비용 절감 방법 포함)

backend 따라쟁이 2025. 2. 3. 23:40

목차

  1. EC2 인스턴스에 Spring Boot 백엔드 서버 배포하기
  2. RDS(MySQL)와 EC2 연동 및 RESTful API 테스트
  3. 비용 절감: EC2 중지 및 RDS 스냅샷 백업 & 복원

8.1. EC2 인스턴스에 Spring Boot 백엔드 서버 배포하기

1-1. AWS EC2 인스턴스 생성

  1. AWS 프리티어 계정을 사용하여 AWS Management Console에 로그인합니다.
  2. EC2 서비스로 이동하여 인스턴스 시작을 클릭합니다.

(그림1) 검색 조건에 "EC2" 입력하고 서비스 목록에 "EC2"를 클릭 합니다.
(그림2) EC2 대시보드 화면이 오픈되며, "인스턴스 시작" 버튼을 클릭 합니다.

  1. 인스턴스 이름과 생성 정보를 선택하고 설정 합니다.
    - 이름 입력
      예) ec2-AppServer 
    - Amazon Machine Image(AMI) 선택
       Ubuntu 22.04 LTS (프리티어 무료 사용 가능)
    - 인스턴스 유형 선택
       t2.micro (프리티어 무료 제공)
    - 키 페어 생성 및 다운로드
       키 페어 이름 입력(예: "sshkey")하고 "새 키 페어 생성"을 클릭하면 sshkey.pem 파일이 다운로드 된니다.
       생성된 sshkey.pem 키 파일을 저장하여 SSH 접속 시 사용 합니다.
    - 보안 그룹 설정
       HTTP(80), HTTPS(443), SSH(22), MySQL/Aurora(3306) 포트 열기

(그림1) 인스턴스 이름 입력, Amazon Machine Image(AMI) 선택

 

(그림2) 인스턴스 유형 선택, 키 페어 생성 및 다운로드
(그림3) 보안 그룹 설정 (참고: 알려진 IP주소의 엑세스만 허용함)

 

 

  1. 인스턴스가 시작 버튼을 클릭하고, 시작되면 퍼블릭 IP 확인 합니다.
    • 퍼블릭 IPv4 주소를 복사해 둡니다.

(그림1) 인스턴스 시작 버튼 클릭

 

(그림2) 인스턴스 시작이 성공하면, 모든 인스턴스 보기 버튼을 클릭 합니다.
(그림3) 퍼블릭 IP를 확인하고 복사해 둡니다.


1. EC2 인스턴스에서 8080 포트 오픈 설정 방법 

EC2 인스턴스에서 Spring Boot 백엔드 서버를 실행할 때, 외부에서 접근할 수 있도록 8080 포트를 열어야 합니다.
이를 위해 AWS 보안 그룹(Security Group) 설정을 수정하면 됩니다.

 

AWS 관리 콘솔에서 보안 그룹을 설정하는 방법입니다.

1) EC2 인스턴스의 보안 그룹 확인
    - AWS 콘솔 → EC2 서비스 이동
    - 실행 중인 EC2 인스턴스 선택
    - 하단에서 보안(Security) 탭 선택
    - 연결된 보안 그룹 이름 클릭 (예: sg-0123456789abcdef0)

(그림) 연결된 보안 그룹 이름을 클릭하여 오픈된 화면

 

2) 보안 그룹에 8080 포트 추가
    - 보안 그룹 설정 페이지에서 "인바운드 규칙(Inbound rules)" 탭 선택
    - "인바운드 규칙 편집(Edit inbound rules)" 버튼 클릭
    - 새 규칙 추가:
       유형(Type): Custom TCP
       포트 범위(Port Range): 8080
       소스(Source): Anywhere (0.0.0.0/0, ::/0) (또는 특정 IP 제한 가능)
     - 저장(Save)
     - 결과: 이제 EC2의 8080 포트가 외부에서 접근 가능해짐

(그림) 유형, 포트 점위, 소스 입력 후 "규칙 저장" 클릭

1-2. SSH로 EC2 인스턴스 접속 후 Java 설치하기

EC2에 SSH 접속 후, 필요한 패키지를 설치합니다.

# 로컬PC에서 SSH 사용하여 EC2 서버에 접속
ssh -i "다운로드한 .pem파일" ubuntu@"복사해둔 EC2 퍼블릭 IP"
(그림) 로컬PC에서 SSH 사용하여 EC2 서버에 접속(EC2 인스턴스에 login한 화면)
 
 
# EC2 서버에 로그인하여 Java 21 설치
sudo apt update
sudo apt install openjdk-21-jre-headless
 
# 설치된 java 버전 확인
java --version


1-3. Spring Boot 애플리케이션 AWS에 배포 & 실행하기

  1. 로컬PC에서 개발/테스트가 완료된 Spring boot 프로그램의 jar 파일을 생성 합니다.
    # Maven을 이용해 프로젝트 빌드
    #  -DskipTests 옵션: 빌드 시 Junit 테스트를 skip하고 빌드 합니다.
    #                              빌드 시 Junit 테스트가 실행될 경우, 테스트가 실패하면 빌드도 실패하게 됨 
      ./mvnw clean package -DskipTests
 
(그림) Maven을 이용해 프로젝트 빌드
  1. 로컬PC에서 빌드된 jar파일을 AWS EC2서버로 복사(배포) 합니다.
    # scp 명령으로 jar파일을 배포
    scp -i "키파일.pem" your-app.jar ubuntu@"퍼블릭IP":/home/ubuntu/
  2. AWS의 EC2 서버에서 애플리케이션을 실행 합니다.
    java -jar build/libs/your-app.jar

(그림) EC2서버에서 어플리케이션 실행

  1. 백그라운드 실행 (종료 방지)
    # 그냥 실행시 터미널이 종료되면 프로세스도 함께 종료되는 문제를 해결하기 위함이며,
    # output.log 파일로 Application 실행 중 발생되는 로그(stdout/stderr)가 저장되도록 함. 
    nohup java -jar build/libs/your-app.jar > output.log 2>&1 &

(그림) 백그라운드 실행 및 output 로그 확인 방법