AWS Elastic Beanstalk
Elastic Beanstalk는 웹 애플리케이션 코드를 올리면 필요한 AWS 실행 환경을 통째로 구성해 주는 플랫폼 계층입니다. 팀은 인프라 조립보다 애플리케이션 버전 배포와 설정에 집중하게 됩니다.
▶아키텍처 다이어그램
🔗 관계 다이어그램점선 애니메이션은 데이터 또는 요청의 흐름 방향을 나타냅니다
일반적인 웹 애플리케이션 하나를 올리려고 해도 EC2, 로드밸런서, 오토스케일링, 로그 구성을 매번 묶는 일은 반복적입니다. 플랫폼 기본 구성을 빠르게 확보하지 못하면 앱 코드보다 배포 틀이 더 큰 일이 됩니다.
많은 팀이 표준 웹 앱 하나를 올리기 위해 EC2 스택을 반복해서 구성했습니다. 문제는 사람이 반복할수록 환경마다 설정이 조금씩 달라진다는 점입니다. 개발 서버와 프로덕션 서버의 인스턴스 구성이 어긋나거나, 신규 개발자가 배포 절차를 익히는 데만 며칠이 걸리거나, AMI 버전이나 보안 그룹 규칙 하나를 빠트려 배포 직후 장애가 나는 일이 반복됐습니다. 이런 운영 압박이 쌓이면서, AWS 리소스 조합을 앱 중심으로 추상화해 일관된 환경을 자동으로 만들어 주는 Beanstalk가 등장했습니다.
코드를 업로드하면 Beanstalk는 먼저 언어 런타임과 프레임워크를 감지합니다. 그 결과를 바탕으로 EC2 인스턴스 유형과 AMI를 결정하고, ELB를 앞단에 붙이고, Auto Scaling 그룹을 구성하고, CloudWatch 알람까지 연결합니다. 배포 전략(롤링·블루그린)을 선택하면 그 방식에 맞춰 인스턴스를 교체하거나 환경 전체를 스왑합니다. 팀은 각 단계를 직접 조립하지 않고 버전 번호와 환경 변수만 관리하게 됩니다.
Elastic Beanstalk와 ECS는 둘 다 애플리케이션 실행 플랫폼이지만 추상화 수준이 다릅니다. Beanstalk는 전통적인 웹 앱 플랫폼에 가깝고, ECS는 컨테이너 단위 오케스트레이션에 가깝습니다. 코드만 넘기고 웹 애플리케이션 플랫폼 구성을 빠르게 얻고 싶으면 Beanstalk를 보고, 컨테이너 배포 규칙과 서비스 운영을 세밀하게 다루고 싶으면 ECS를 보면 됩니다.
전통적인 웹 프레임워크 앱, 빠른 프로토타입, 인프라보다 코드 배포에 집중하고 싶은 팀에 적합합니다. 컨테이너 배포 표준화나 세밀한 인프라 제어가 필요한 경우에는 맞지 않습니다.