[AWS] 4. CI/CD 2

문정준's avatar
Jun 18, 2025
[AWS] 4. CI/CD 2

Elastic Beanstalk

  • PaaS ( Platform as a Service ) : 이미 환경 구축이 완료되어 있는 플랫폼 제공
  • 단일 서버 배포에 강함
notion image
 

Elastic Beanstalk

  • 단일 또는 다중 서버를 On-Demand 환경에 맞추어 자동으로 설정할 수 있는 서비스
  • Elastic Beanstalk 내부의 관리자가 각 서버에 배포 환경 및 서버 파일을 배포
  • 단일 서버의 경우 EC2가 1개만 생성되기 때문에 로드밸런서 (LB) 도 만들어지지 않음
  • 다중 서버 (2개 이상) 의 경우 서버가 여러 대 생성됨에 따라 IP가 각각 다르기 때문에, 클라이언트의 접속을 제어할 수 있도록 로드밸런서가 생성됨
    • 다중 서버는 Auto-Scaling을 통해 사용자의 접속 트래픽에 따라 서버를 자동으로 증축
    • 너무 많이 생기면 서버의 비용이 증가하므로 최대 서버 수를 지정할 수 있음
notion image
 

Elastic Beanstalk 구동

 

역할 설정

  • IAM (Identity and Access Management) 접속 : 사전 역할 설정
notion image
 
  • 역할 진입 후 역할 생성 클릭
notion image
 
  • 엔터티 선택
    • AWS 서비스
    • 사용 사례 : EC2
notion image
 
  • 권한 추가
    • 검색 창에 ‘AWS Elastic’ 검색
    • MulticontainerDocker, WebTier, WorkerTier 추가
notion image
 
  • 이름 지정 후 역할 생성
    • elb-ec2-role
notion image
 
  • 2번째 역할 추가
    • 서비스 : Elastic Beanstalk
    • 사용 사례 : Environment
notion image
 
  • 권한 추가
    • 자동으로 추가되어 있음 : 다음
notion image
 
  • 이름 설정 후 역할 생성
    • elb-service-role
notion image
 

Elastic Beanstalk 생성

  • 환경 티어 : 웹 서버 환경
  • 애플리케이션 이름 : aws-v3
  • 환경 이름은 자동으로 설정됨
notion image
 
  • 플랫폼 : Java (JDK 필요)
  • 애플리케이션 코드 : 샘플
    • 커스텀한 Beanstalk 사용할 경우 코드 업로드 필요
notion image
 
  • 사전 설정 : 단일 인스턴스 (서버 하나만 구축)
    • 이후 서버를 추가로 개설할 시 사용자 지정 구성 선택
notion image
 
  • 서비스 액세스 구성
    • 서비스 역할, EC2 인스턴스 프로파일, EC2 키 페어 선택 후 검토 단계로 건너뛰기
notion image
 
  • 적용 사항 확인 후 생성
notion image
 
  • 환경 생성 확인 후 업로드 및 배포 클릭
notion image
 
  • 파일 선택 후 배포 클릭
notion image
 
  • 파일은 내가 배포할 서버 파일 등록
notion image
 
  • 인스턴스 자동 생성 : Elastic Beanstalk 생성 시 개설
    • 탄력적 IP 자동 설정 - 고정 IP
notion image
 
  • 도메인을 통해 접속
notion image
 
notion image
 

배포 설정

  • 스프링 서버 포트 : 5000
  • 배포 환경 : Amazon Linux
 

배포 확인

  • Amazon EC2 Console 화면
    • 기본 사용자 : root
    • Amazon Linux로 접속되는 것을 확인
notion image
 
  • MobaXTerm으로 접속
    • 기본 사용자가 ubuntu가 아닌 ec2-user
    • 나머지는 기존 세션 생성과 동일
notion image
 
notion image
 
  • 현재 실행 중인 서버 확인 : netstat -nlpt
    • 80, 22, 5000 서버가 구동 중
notion image
 
  • 인바운드 규칙 확인
    • 80, 22 서버만 Open 되어 있음
    • 내부적으로 80번 서버에 요청 시 5000번으로 연결하는 서버 존재
notion image
 
  • 배포한 서버 파일 확인
    • 배포한 파일의 이름을 그대로 사용하지 않고 application이라는 이름으로 변경됨
    • sudo find / -name application.jar 로 검색
notion image
 
  • 서버 강제 종료
    • kill을 해도 다시 서버가 실행됨
      • cron에 서버 재 시작 루틴이 설정되어 있음
notion image
 

로그 확인

  • Elastic Beanstalk에서 로그 클릭 → 로그 요청 후 다운로드
notion image
 
  • 브라우저에서 바로 로그 파일 확인 가능
    • 로그 파일의 경로도 확인 가능
notion image
 
  • MobaXTerm에서 직접 확인
    • /var/log/web.stdout.log 확인 : 스프링 서버 로그
notion image
 
  • 로그 출력
    • tail 사용
notion image
 
  • 내부 서버 확인 : nginx 파일 확인
    • /etc/nginx/conf.d/elasticbeanstalk 진입
    • 00_application.conf 확인 : nginx 서버 설정 파일
notion image
 

Elastic Beanstalk 종료

  • 환경 이동
  • 실행 중인 환경 선택
  • 작업 → 환경 종료 클릭
  • 환경 이름 입력 후 종료
notion image
 
Share article

sxias