본문 바로가기
개발/Trouble Shooting

[Spring Boot/배포] Elastic Beanstalk + Spring boot + github action으로 배포하기(1) - Elastic beanstalk 생성하기

by 킴과다페인(chae eun kim) 2023. 3. 22.

필자는 서버 요금과 관련된 부분은 자세하지 기재하지 않았음을 참고해주세요!

 

Elastic Beanstalk + Spring boot + github action으로 배포하는 과정에서 github action으로 빌드한 배포 zip파일을 elastic beanstalk에 배포하기위해 환경 구성하는 방법을 정리해보겠습니다.

 

 

1) Elastic beanstalk 생성하기

  • AWS Elastic beanstalk - 환경 - 새 환경 생성

  • 아래 순서대로 클릭
  1. [웹 서버 환경] 선택
  2. [애플리케이션 이름], [환경 이름] 작성

*애플리케이션 이름을 작성하면 자동으로 환경 이름이 작성되는데, 나중에 프로젝트의 workflow yaml파일에 적을 때 헷갈릴 것 같아서 필자는 두 개 똑같이 작성함!

3) [플랫폼] - Java 선택 시 자동으로 브랜치, 버전 선택되므로 그대로 사용

 

4) [추가 옵션 구성] 선택 

여기서부터는 섹션 별로 설명하겠습니다.

 

 

  • 사전 설정 섹션

[구성 사전 설정] → 단일 인스턴스(프리 티어 사용 가능) 으로 유지

 

  • 소프트웨어 섹션
    • [인스턴스 로그를 CloudWatch Logs로 스트리밍] → 로그 스트리밍 활성 체크
      • 필자의 경우 cloudwatch 요금 부과를 감안하고 체크함!
    • [환경 속성] → 여기에 나중에 환경 변수 쓸 수 있는 것으로 보임! 일단 패스인데, 어떤곳은 PORT를 등록하기도 함.

 

  • 인스턴스 섹션
    • [EC2 인스턴스 보안 그룹] 에 EC2에 꼭 적용시켜야되는 보안그룹을 꼭!! 설정해주어야함
      • 필자의 경우 여기서 보안 그룹 설정을 안했더니, 재배포할 때마다 보안그룹이 리셋되는 현상을 목격함. EC2에 수동으로 연결했던 22, 8080, 18400 포트에 대한 인바운드 규칙이 EBS 재배포마다 사라지는 현상을 목격했는데, 여기서 보안 그룹을 설정하니까 계속 유지됨!!

  • 용량 섹션
    • [환경 유형] - 단일 인스턴스
    • [인스턴스 유형] - 중요!
      • 소규모 프로젝트라면 t2.micro와 t2.small을 선택하고, 나중에 성능 문제가 발생하면 t2.medium과 t2.micro를 선택할 것을 추천함.
        • 필자의 경우 t2.micro와 t2.small의 ebs에 평소처럼 개발해서 배포했는데 갑자기 서버가 터졌었음. 
        • 새로 배포한 코드에 이상이 전혀없는데 어느날 EBS가 SEVERE로 터진다면, 인스턴스 유형이 더이상 애플리케이션을 감당할 용량 or CPU가 안된다는 것으로 생각하고 업그레이드 할 것을 추천함

 

  • 롤링 업데이트 섹션
    • [배포 방식] - 한 번에 모두
    • [롤링 업데이트 유형] - 비활성
  • 보안 섹션
    • EC2 키 페어에 ec2 접속을 위한 키 페어를 선택해야함
      • 키 페어가 없다면 → EC2 로 가서 왼쪽 메뉴바의 [키 페어]에 가서 새로 생성하기

 

여기까지 설정을 했으면 이제 EBS 환경을 생성하면 된다! 필자는 이미 생성 완료한 EBS를 예시로 성공시 화면을 들겠음.

 

5) ebs 환경 - 생성한 환경 클릭 후 → 상태가 OK(초록색)이면 환경 생성 성공이다.

참고로 규모가 있는 Spring boot 애플리케이션을 EBS에 배포할 경우 주의사항

필자가 개발중인 애플리케이션은 소규모는 아니기때문에, t2.micro 유형으로는 역부족이었고, 이것에 대해서는 따로 아티클을 쓸 예정인데 결론만 요약하면 아래와 같음.

  1. EBS 로드 밸런싱 유형 (최소 인스턴스 1개, 최대 2개) + t2.medium 인스턴스 유형 → SEVERE 상태, 서버는 동작함 = CPU 딸림
  2. EBS 단일 인스턴스 유형 + t2.micro 인스턴스 유형 → SEVERE 상태, 서버 동작 안함 = 용량, CPU 딸림
  3. EBS 단일 인스턴스 유형 + t2.medium 인스턴스 유형 → OK 상태, 서버 동작함 = 해결

 

 

다음 아티클로는 

(2) 규모가 있는 Spring boot 애플리케이션으로 Elastic beanstalk 환경 생성 시 주의해야할 점
(3) github action으로 spring boot 애플리케이션 빌드한 후 Elastic beanstalk을 이용해서 배포하기

 

를 작성하고자 하는데, 필자는 거의 대부분의 설정파일을 아래 블로그를 참고했으므로 자세한 설명은 아래 아티클을 참고하시길 바랍니다. 내가 굳이 아티클을 쓰지않아도 천재분들께서 너무 잘 설명해주셔서 도움이 많이 되었습니다!

https://wonit.tistory.com/595

https://earth-95.tistory.com/111