Elastic Beanstalk
- 하나의 인터페이스에서 EC2, ASG, ELB, RDS 등을 재사용해 자동으로 배포해주는 관리형 서비스
- 용량 프로비저닝, 로드밸런서 구성, 스케일링, 애플리케이션 상태 모니터링, 인스턴스 구성 자동화
- 개발자는 코드에만 신경
- 무료
- 환경, 버전, 구성 등의 집합으로 이루어짐
- 하나의 환경 안에서 애플리케이션 버전을 1 -> 2로 업데이트 가능
- 다양한 언어 지원 (고급 설정으로 사용자 지정 플랫폼 생성도 가능)
Beanstalk - 애플리케이션 업데이트를 위한 배포 옵션
- All at once
- 한번에 모든 인스턴스 배포
- 속도가 가장 빠름 but 모든 서비스가 중지되므로 다운타임 발생
- UC ) 빠른 배포 & 개발환경 & 다운타임 중요 X & 추가요금 X
- Rolling
- 버킷이라는 인스턴스 묶음을 동시 업데이트
- 첫번째 버킷의 상태가 괜찮으면 다음 버킷 업데이트
- 추가요금 X
- Rolling with additional batches
- 롤링 옵션과 같으나 인스턴스를 생성해 시간에 걸쳐 인스턴스 업데이트
- 배포 중 용량을 유지한 채 이전 애플리케이션 이용 가능
- 새로운 인스턴스를 위한 약간의 추가요금
- Immutable
- ASG에 인스턴스가 있을 때 새 인스턴스를 다같이 배포
- 임시 ASG에 버전을 배포한 다음 상태가 모두 괜찮으면 모든 인스턴스를 스왑
- 많은 추가비용 (새로운 임시 ASG를 만들어 배포)
- 롤백이 빠름 (임시 ASG 제거)
- Blue & Green
- Beanstalk가 직접 제공하는 기능은 아님
- 새로운 환경을 모두 생성 & 준비가 되면 전환
- Route 53 등을 사용해 트래픽이 두 방향으로 흐르는 것 방지 (가중치 기반 정책)
- 약간의 가중치를 스테이징 환경에 두고 테스트 가능
- 여러 테스트를 진행하고자 하는 릴리즈 버전에 적합
- Traffic Splitting
- 카나리 테스트용 (A / B Test)
- 블루그린 방식에서 자동화 된 방식
- 애플리케이션 트래픽의 일부를 완전히 새로운 배포로 전송
- 임시 ASG 이용 배포
Beanstalk - 확장 (EB Extentsions)
- UI에서 설정한 매개변수 / 환경변수를 파일을 사용해 코드로 구성 가능
- 소스코드 루트 디렉토리의 .ebextensions/ 폴더에 들어가야함
- .config 확장자로 YAML / JSON 형식 작성
- option_settings를 통해 기본값 수정 가능
- 콘솔에서는 할 수 없는 기능 제공
- RDS, ElastiCache, DynamoDB와 같은 리소스 추가 가능
- EB 확장에서 관리되는 모든 것들은 환경이 삭제되면 함께 제거
Beanstalk - 마이그레이션
- 로드밸런서
- 환경 생성 후 로드밸런서 유형 변경 불가 (구성만 변경 가능)
- 유형 변경을 위해선 다음 단계를 통해 마이그레이션 필요
- 동일한 구성으로 새로운 환경 생성 (클론 X, 로드밸런서 제외하고 생성)
- 애플리케이션을 새 환경에 배포
- CNAME 교체, Route 53을 통해 새 환경으로 트래픽 이동 (DNS 업데이트)
- RDS
- Beanstalk 애플리케이션을 통해 프로비저닝 가능 (개발 / 테스트에서 유용)
- 프로덕션 환경에서는 유용하지 않음 (Beanstalk 수명주기를 따라가므로)
- 프로덕션에서는 EB와 RDS를 분리한 후 연결 문자열로 참조
- EB와 연결된 RDS를 분리하는 단계는 다음과 같음
- 문제 발생에 대비 RDS 스냅샷 생성
- RDS 콘솔로 이동해 RDS 삭제 방지 설정
- 새로운 EB 환경 생성 (RDS 제외하고 생성, 환경변수 등을 통해 기존 RDS와 연결)
- CNAME 교체, Route 53을 통해 새 환경으로 트래픽 이동 (DNS 업데이트)
- 기존 환경 삭제
- RDS 삭제 방지를 설정했으므로 RDS 유지됨
- CloudFormation에서 stack 수동으로 삭제 (DELETE_FAILED 상태로 표시됨)
- Beanstalk 애플리케이션을 통해 프로비저닝 가능 (개발 / 테스트에서 유용)
Reference
'Programming' 카테고리의 다른 글
[AWS, Certified Developer Associate] SQS, SNS (0) | 2024.05.18 |
---|---|
[AWS, Certified Developer Associate] CloudFormation (0) | 2024.05.15 |
[AWS, Certified Developer Associate] ECS (0) | 2024.05.12 |
[AWS, Certified Developer Associate] CloudFront (0) | 2024.05.12 |
[AWS, Certified Developer Associate] S3 - 암호화, 액세스 포인트 (0) | 2024.05.10 |