Elastic Beanstalk
: EC2, ASG, ELB, RDS 등 모든 구성 요소를 재사용하여 이 모든 것을 알아서 배포해 주는 관리형 서비스
Component
Application
Application version
- Elastic Beanstalk 애플리케이션 버전은 다수의 환경에 배포할 수 있다.
Environment
- Elastic Beanstalk의 환경은 자유롭게 이름을 지정할 수 있다.
Deployment Modes
- 단일 인스턴스: 탄력적 IP를 갖는 EC2 인스턴스 하나를 기반으로 하여 개발 목적에 적합하다.
- 로드 밸런서를 이용한 고가용성: 프로덕션 환경에 적합하다.
Deployment
All at once
- 가장 빠른 배포 옵션
- 애플리케이션 다운타임 발생
- 추가 요금 없음
Rolling
Rolling with additional batches
- 애플리케이션이 용량 이하로 실행되지 않음
- 추가 요금 있음
- 긴 배포 시간
- 프로덕션 환경을 다루는 데 유용
Immutable
- 다운타임 0
- 새 코드가 새 인스턴스에 배포(임시로 ASG 연결)
- 높은 비용, 용량 두배
- 배포 시간이 가장 길다
- 빠른 롤백
- 프로덕션 환경을 다루는 데 유용
Blue/Green
- 다운타임 0
- Beanstalk에 내장된 기능이 아니라서 수동적인 작업이 필요
Traffic Splitting
Elastic Beanstalk CLI
: 개발 파이프라인을 자동화히려면 EB CLI 사용이 적합하다.
Beanstalk Lifecycle Policy
- 계정 안에 최대 1000개의 애플리케이션 저장 가능
- 이전 버전을 삭제하지 않으면 배포 불가능
- 이전 버전을 삭제하기 위해 수명주기 정책을 따라야 한다.
Elastic Beanstalk Extensions
: UI에서 설정한 모든 매개변수는 파일을 사용해서 코드로 구성할 수 있다.
- 모든 파일은 반드시 소스코드의 루트의 .ebextentions/ 디렉터리에 있어야 한다.
- 파일은 반드시 YAML 또는 JSON 형식이어야 한다.(해당 파일의 확장자는 반드시 .config로 끝나야 한다.)
Elastic Beanstalk Under the Hood
: 다른 AWS 서비스를 프로비저닝 하는 코드형 인프라 서비스
Elastic Beanstalk Cloning
: 기존 환경을 새 환경으로 복제하는데 정확히 같은 구성을 갖도록 할 수 있다.
- 동일한 설정으로 테스트 버전을 배포하고자 할 때에 유용
Elastic Beanstalk Migration
Load Balancer
- Beanstalk 환경을 한 번 생성하고 나면 일래스틱 로드 밸런서 유형은 변경이 불가능하고, 구성만 바꿀 수 있다.
- 따라서 클래식 로드 밸런서를 애플리케이션 로드 밸런서로 업그레이드하거나 애플리케이션 로드 밸런서를 네트워크 로드 밸런서로 업그레이드하려면 다음 단계에 따라 마이그레이션을 수행해야 한다.
- 동일한 구성으로 새로운 환경을 생성한다.(로드 밸런서 제외)
- 애플리케이션을 새 환경에 배포한다.
- CNAME 교체나 Route 53을 이용해서 DNS 업데이트를 수행한다.
RDS with Elastic Beanstalk
: 애플리케이션을 이용해서 프로비저닝 가능
Elastic Beanstalk Migration: Decouple RDS
- RDS 데이터베이스에 대한 스냅샷을 생성한다.
- RDS 콘솔로 이동하여 RDS 데이터베이스가 삭제되지 않도록 보호해 준다.
- 새로운 elastic beanstalk 환경을 생성한다.
- CNAME 교체, Route 53 DNS 업테이트를 수행한다.
- 기존 환경을 삭제한다.
- CloudFormation 스택 삭제(수동)
Single Docker
: 단일 도커의 경우에는 ECS가 기반이 되지 않고 EC2에서만 도커를 사용한다.
Multi Docker Container
: elastic beanstalk 내 EC2 인스턴스 당 여러 컨테이너를 실행할 수 있다.
- Dockerrun.aws.json 파일은 ECS 태스크 정의를 생성할 때 사용된다.
Elastic Beanstalk and HTTPS
: SSL 인증서를 로드 밸런서에 로드한다.
- SSL 인증서를 elastic beanstalk 콘솔에서 로드 밸런서 구성으로 직접 로드
- securelistener-alb.config라고 하는 .ebextensions에서 직접 파일을 생성