일반적인 애플리케이션 아키텍처는 이와 같습니다.
로드 밸런서가 사용자로부터 요청을 받아 처리하고 여러 AZ에 있는 오토 스케일링 그룹에 배포되어잇는 EC2인스턴스가 처리를 하며
데이터 서브넷을 두어 읽기와 쓰기를 담당하게 됩니다.
이떄 캐시가 필요하다면 일래스틱 캐시도 사용하게 되고요
보통 이러한 구조를 띄고 있고 개발자 입장에서 계속해서 해당 인프라를 설계하는것은 복잡하며, 다른 언어라도 애플리케이션을 배포하는 방법은 하나이길 바랄 것입니다.
이게 바로 Elastic Beanstalk
가 필요한 이유 입니다.
해당 기능은 모든 요소를 재사용할 수 있게 만들어 주는 서비스로 배포를 관리하는 서비스라고 합니다.
해당 서비스를 사용하는 것은 무료이나, 해당 서비스내에서 사용되는 인스턴스에 대해서만 비용이 부과되며 3가지의 집합으로 구성이 되어 있습니다.
해당 서비스는 자동으로 RDS, EC2 ,ALB가 할당이 되며 이러한 옵션을 수정할 수 있기 떄문에
어떤 상황에서 어떤 옵션을 선택해야 하는지가 중요합니다.
즉 그러기 떄문에 모든 옵션을 이해하는 것이 주용합니다.
일단 배포 옵션에 대해서 알아보겠습니다.
1. All at once
- 모든 애플리케이션을 한 번에 배포하는 유형입니다.
- 가장 빠르지만 트래픽을 처리할 EC2가 없어서 가동이 중지 됩니다.
- 4개의 EC2가 있다면 4개를 모두 종료했다가 새로 시작하는 방식입니다.
2. Rolling
- 한 번에 인스턴스를 조금씩 업데이트 하는 방법 입니다.
- 4개의 인스턴스가 있다면 2개를 종료하고 2개를 재 시작하고, 나머지 2개를 재시작 하는 방식입니다.
3. rolling with additional batches
- 추가 배치의 롤링 업데이트로 새 인스턴스를 만들어가며 업데이트 하는 방식입니다.
- 4개의 인스턴스가 있다면 2개를 추가로 만들고 이후 이전 버전의 4개에서 2개를 재시작, 그후 2개를 재시작 하는 방식입니다.
4. Immutable
- 모든 EC2를 새로 만들고 기존의 EC2와 교체합니다.
- 3개의 인스턴스가 있다면 새로운 ASG에 3개의 인스턴스를 만들고 그후 ASG를 합친후 기존에 있는 인스턴스를 삭제하는 방식입니다.
해당 과정은 이론적인 내용은 거의 이와 같고 거의 다 실습하는 내용이었습니다.