AWS Elastic Beanstalk에 Java SE 플랫폼 기반으로 API 서버를 구축한 기록입니다
(2022.08.13 -Xms 관련 명령서 순서 변경을 확인해서 해당글에서 수정했습니다.)
아래와 같이 총 3가지 상황에 따른 구축 방법과 주의할 점에 대한 글로 나누어 작성할 예정입니다.
2편 Procfile 기반
3편 Procfile 기반 다수 JAR + Arguments + ebextentions NGINX Reverse Proxy 설정
이번 포스팅에서 다룰 내용은
Procfile 기반 실행 가능한 단일 JAR + Arguments입니다.
앞서 1편에서는 JAR 하나만 간단하게 배포했었고 포트는 환경변수로 수정해 봤습니다.
실제 운영환경에서는 저렇게 간단하게 하지 않고 보통은 추가적으로 JVM 옵션이나 Arguments를 지정해서 상황에 맞게 운영하게 됩니다.
Beanstalk에서 Tomcat 기반 플랫폼을 선택하면 콘솔에서 JVM명령줄 옵션을 입력해 간단히 해결할 수 있지만 Java 플랫폼을 선택하면 그렇게 간단하게 해결되지 않습니다.


이 부분을 해결하기 위해서는 몇 가지 방법이 있는데 이 포스팅에서 소개할 방법은 Procfile에서 직접 원하는 JVM옵션을 명시하는 방법입니다.
Procfile이란?
Elastic Beanstalk에 실행할 JAR가 무엇인지 명시하는 파일
(https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/java-se-procfile.html)

예시로 foo.jar와 -Xms256m을 명시해 배포해 보겠습니다.
Procfile을 다음과 같이 작성합니다.
Procfile
foo: java -Xms256m -jar foo.jar
그리고 실행할 foo.jar를 Procfile과 함께 압축합니다.

압축한. zip 파일을 Beanstalk에 배포하면 foo.jar가 -Xms256m과 함께 실행된 것을 확인하실 수 있습니다.

zip으로 묶은 Procfile과 foo.jar는 /var/app/current에서 확인할 수 있습니다.

한 가지 유의하실 점은 1편에서 작성한 것과 마찬가지로 실행할 JAR의 포트는 5000번으로 명시해 주셔야 합니다.
1. 환경변수에서 SERVER_PORT를 5000번으로 맞춰주시거나
2. 스프링 부트 2인 경우 Procfile에서 -Dserver.port=${port}를 추가로 명시해 주시면 됩니다.
여기까지 Procfile을 활용한 배포에 대해 다뤄봤습니다. 다음 포스팅에서 다룰 내용은 Procfile의 예제에 있던 여러 JAR실행에 대해서 ebextentions와 Nginx Reverse Proxy를 활용해 여러 API를 실행해 보는 내용을 다뤄보겠습니다.
'AWS' 카테고리의 다른 글
| AWS Elastic Beanstalk + Java SE환경 API 서버 구축기 (3) (0) | 2020.01.06 |
|---|---|
| AWS Elastic Beanstalk + Java SE환경 API 서버 구축기 (1) | 2019.12.31 |