1. Spring Boot 배포 방법

Spring Boot 공식문서를 보면 AWS에서 스프링부트를 배포할 수 있는 다양한 방법에 대해서 설명하고 있습니다. 그 중 Elastic Beanstalk을 가장 대표적으로 안내하고 있는데요, CLI를 통해서 배포하는 방법을 링크로 소개해주고 있지만 여기서는 GUI를 통해서 간단하게 배포해보고 또 그 과정에서 생긴 자잘한 버그에 대해서 공유해보고자 합니다.

 

2. Elastic Beanstalk을 이용한 배포 과정

2.1 AWS Management console에서 beanstalk을 검색합니다.

2.2 새 환경 생성을 클릭하고 환경 티어를 선택합니다.

우리는 Spring Boot를 이용한 웹 서버를 배포할 예정이므로 웹 서버 환경을 선택하도록 합니다.

2.3 웹 서버 환경 생성

  • 어플리케이션 이름 : 원하시는 어플리케이션 이름을 설정하시면됩니다.
  • 환경 정보 : 환경 이름과 도메인 정보를 입력합니다. 환경이름은 보통 어플리케이션 이름과 동일하게 사용합니다.
  • 플랫폼 : 관리형 플랫폼을 선택합니다.
    • 플랫폼은 Spring Boot를 위해 Java를 사용하도록합니다.
    • 플랫폼 브렌치는 자바 버전에 맞게 8 또는 11버전을 사용하도록 합니다. 스프링 부트와 호환되는 버전을 사용하시면 됩니다.
    • 플랫폼 버전은 추천되는 버전을 사용하도록 합니다.
  • 어플리케이션 코드
    • 여기서 스프링에서 배포할 JAR파일을 업로드 해도 되지만 우선 샘플 애플리케이션을 선택하도록 합니다. 만약 사용하는 Spring Boot가 데이터베이스를 사용하는 경우(대부분 그렇겠지만) 에러가 발생하기 때문에 데이터 베이스 구성을 완료한 이후 배포할 JAR 파일을 업로드 하는 것이 좋습니다.

2.4 Elastic Beanstalk 데이터베이스 설정

대부분의 Spring Boot 프로젝트는 데이터베이스를 사용합니다. 하지만 Elasic Beanstalk은 자동으로 데이터베이스까지 구성해주지 않기 때문에 데이터베이스를 먼저 설정해주어야합니다.

 

1. 좌측 Drawer에서 구성을 클릭합니다.

2. 구성 목록 중 가장 아래에 있는 데이터베이스에서 편집을 클릭합니다.

3. 편집에서 자신이 사용하고자 하는 데이터베이스 엔진과 옵션을 선택하도록 합니다.

4. 적용을 클릭합니다.

 

이렇게하면 Elastic Beanstalk을 위한 데이터베이스가 생성되며 아래와 같이 데이터베이스 엔드포인트가 생성됩니다.

3. Spring Boot Profile 수정

이제 배포를 위한 Spring Boot의 환경을 구성해보도록 합시다. 배포를 위한 prod 프로파일을 application.yml에 생성하고 여기에 데이터베이스 url과 server port를 입력하도록 합니다.

1. spring:datasource:url 입력

제가 사용한 url의 형식은 다음과 같습니다. {*} 대신에  이전과정에서 설정한 데이터베이스 옵션과 생성할 데이터베이스 이름을 설정해주도록합시다. 사실 데이터베이스 이름이나 사용자 이름 비밀 번호 등은 datasource에서 옵션으로 지정해주어도 되지만 저는 url을 사용하는게 습관이 되어서 아래처럼 형식을 생성했습니다. 

jdbc:mysql://{사용자 이름}:{비밀먼호}@{데이터베이스 엔드포인트 주소}/{데이터베이스 이름}?createDatabaseIfNotExist=true

2. server port

Elastic Beanstalk은 기본적으로 5000 포트로 요청을 받습니다. 따라서 디폴트인 8080을 사용하면 에러가 발생하기 때문에 서버 포트를 5000번으로 수정합니다.

3. Jar 스냅샷 생성

이제 JAR 스냅샷을 생성하여 Elastic Beanstalk에 업로드를 준비해 봅시다. 저는 gradle을 이용하여 JAR 파일을 생성하였습니다. maven을 사용하시는 분은 maven 빌드를 이용해서 똑같이 JAR파일을 생성할 수 있습니다.

./gradlew clean bootJar -Pprofile=prod

4. Spring Boot JAR 배포

이제 마지막입니다. 코드를 배포하기 전 Elastic Beanstalk에서도 프로파일 옵션을 활성화해주어야 합니다. 좌측 Drawer에서 구성을 클릭하고 소프트웨어 카테고리의 편집을 클릭합니다.

환경 속성에서 SPRING_PROFILES_ACTIVE을 prod로 설정합니다.

적용 버튼을 누르고 Elastic Beanstalk의 초기화면으로 돌아와 업로드 및 배포 버튼을 클릭하여 이전에 생성한 스프링 부트 JAR파일을 선택합니다!

배포가 완료되면 상태가 확인으로 변하게 됩니다. 만약 위험이나 경고 등 버그가 발생한다면 좌측 Drawer에서 로그를 클릭하고 전체 로그를 요청합니다. 전체 로그 파일을 다운로드 한 후 web.stdout.log 파일을 확인하면 Intellij 에서 처럼 Spring Boot 실행시 발생한 로그를 확인할 수 있습니다.

4. 접속

Elastic Beanstalk의 초기화면에 있는 도메인을 클릭해서 정상적으로 실행된다면 성공입니다. 저는 API Document인 Swagger에 접속하였습니다. 

 

혹시 글에 잘못된 점이나 궁금한 점이 있다면 댓글로 알려주시면 감사드리겠습니다!

+ Recent posts