Amazon Web Services 한국 블로그
AWS Elastic Beanstalk, 클러스터 모드 도입
2011년에 AWS Elastic Beanstalk가 처음 출시된 이후, 고객들은 Java, .NET, Python, Node.js, PHP, Ruby 및 Go로 풀 스택 애플리케이션을 배포했으며, 배포 및 인프라 운영을 관리하는 Elastic Beanstalk을 신뢰함으로써 비즈니스 로직에 집중할 수 있었습니다. 15년이 지난 지금, 이러한 신뢰는 더욱 깊어졌고, 이에 걸맞게 서비스가 재구축되었습니다. 현재 AWS Elastic Beanstalk는 프로덕션 환경에 대한 완전한 운영 책임을 지는 AWS 기반 애플리케이션 관리 서비스입니다. 현재 존재하는 애플리케이션(소스 코드, Dockerfile 또는 컨테이너 이미지)을 사용할 수 있습니다. Elastic Beanstalk는 기반 프로덕션 환경을 생성하고 관리합니다. 사용자는 자신의 애플리케이션을 관리합니다. AWS는 배포, 규모 조정, 패치 적용, 모니터링 및 유지 관리를 비롯한 모든 것을 지속적으로 관리합니다. 애플리케이션 수명 기간 동안 이러한 운영 책임은 AWS에 있습니다.
AWS는 기반 운영 엔진을 재구축하고 그 어느 때보다 강력한 일련의 기능을 제공하고 있습니다. Elastic Beanstalk는 이제 AI 기반 환경 분석을 사용하여 상태 문제를 진단하고 개선점을 자동으로 추천합니다. 새로운 공식 GitHub Action을 통해 팀은 단일 YAML 구성으로 기존 CI/CD 워크플로에서 직접 배포할 수 있습니다. 또한 AWS는 OpenTelemetry 기반 옵저버빌리티, 자동 롤백을 통한 트래픽 분할 배포, 이벤트 기반 자동 크기 조정, AWS Secrets Manager를 통한 암호 관리, AWS Certificate Manager를 통한 기본 HTTPS를 제공하기 위해 인프라 기반을 재구축했습니다.
오늘, AWS Elastic Beanstalk의 다음 장이 열립니다. 완전 관리형 신규 클러스터 모드는 워크로드 수명 주기 동안 애플리케이션을 지속적으로 배포, 확장, 패치, 모니터링 및 업그레이드합니다. 애플리케이션을 가져오세요. AWS에서 실행합니다.
신규 클러스터 모드는 애플리케이션 포트폴리오를 실행하는 팀을 위해 구축되었습니다. 사용자는 각 애플리케이션을 개별적으로 운영하는 대신, 단일 운영 원칙의 완전 관리형 Amazon Elastic Kubernetes Service(Amazon EKS)를 기반으로 인프라를 공유하는 여러 애플리케이션을 실행합니다. 여러 애플리케이션이 리소스를 공유하므로 운영 복잡성을 가중시키지 않고도 포트폴리오가 확장됨에 따라 애플리케이션당 비용이 절감됩니다. 애플리케이션을 10개 실행하든 100개를 실행하든, 모든 스택에서 동일한 운영을 보장하는 하나의 환경에서 애플리케이션을 관리합니다.
워크로드를 위한 Elastic Beanstalk 클러스터 모드의 이점은 다음과 같습니다.
- 소스 코드부터 프로덕션까지, 모든 런타임에서 사용. Java, .NET, Python, Node.js, PHP, Ruby, 또는 Go에서 소스 코드를 업로드하세요. Elastic Beanstalk는 Cloud Native Buildpacks을 통해 필요 시에 컨테이너화를 자동으로 처리합니다. Dockerfile이나 리아키텍팅이 필요하지 않습니다. 온프레미스에서 레거시 애플리케이션을 가져오거나 지원되는 언어로 새 서비스를 배포할 수 있습니다.
- 기업 규정 준수가 내장되어 있습니다. Elastic Beanstalk은 HIPAA 적격이고 PCI DSS를 준수하며 추가 구성 없이 SOC 1/2/3에 맞게 조정되므로 규제 대상 산업 부문의 팀은 이미 요구하는 규정 준수 수준을 갖추고 프로덕션 워크로드를 배포할 수 있습니다.
- 프로덕션급 배포 전략. 장애 시 자동 롤백이 가능한 일괄 배포, 롤링 배포, 변경 불가 배포, 트래픽 분할 배포가 가능합니다. 이벤트 기반 오토스케일링. AWS Secrets Manager 통합. 기본 제공 OpenTelemetry를 통해 Amazon CloudWatch를 비롯한 대부분의 옵저버빌리티 백엔드와 쉽게 통합할 수 있습니다.
- AI 기반 문제 해결. Elastic Beanstalk는 문제가 발생하면 서비스 측 로그를 수집하고 AI 생성 권장 사항을 제공하여 인프라를 디깅하지 않고도 문제를 더 빠르게 해결할 수 있도록 도와줍니다.
Elastic Beanstalk 클러스터 모드 먼저 살펴보기
시작하려면 Elastic Beanstalk 콘솔로 이동하여 새 환경을 생성하고 배포 유형에서 클러스터를 선택합니다.

Elastic Beanstalk는 소스 코드, 도커 파일 또는 컨테이너 이미지를 입력하여 애플리케이션을 배포합니다. 예를 들어 Local file을 선택하고 컨테이너 이미지 빌드 옵션을 지정하여 환경에 애플리케이션 코드를 제공할 수 있습니다. 나머지 섹션에서는 대부분의 시나리오에 기본값을 사용하는 것이 좋습니다.

Create 버튼을 선택하면 배포가 시작됩니다. 특정 서브넷 세트를 처음 배포하면 EKS 클러스터 생성이 시작되며 약 10분이 소요된다는 것을 참고하세요. 후속 배포는 기존 EKS 클러스터를 재사용하기 때문에 더 빠릅니다.
배포에 성공했을 때의 모습은 다음과 같습니다.

또한 AWS 명령줄 인터페이스(AWS CLI), EB CLI 또는 AWS SDK를 사용할 수 있습니다. 예를 들어 여러 마이크로서비스로 구성된 애플리케이션을 Kubernetes에 배포하는 것을 고려해 보세요. 애플리케이션을 먼저 생성하세요.
aws elasticbeanstalk create-application \
--application-name "my-microservice" \
--description "Multi-services demo" \
각 마이크로서비스에는 Amazon Elastic Container Registry(Amazon ECR)에 사전 빌드된 이미지가 있을 수 있습니다. 이를 애플리케이션 버전으로 다음과 같이 등록하세요.
IMAGES=(
"frontend-v1|public.ecr.aws/my-microservices/frontend:v1"
"cartservice-v1|public.ecr.aws/my-microservices/cart:v1"
"paymentservice-v1|public.ecr.aws/my-microservices/payment:v1"
"shippingservice-v1|public.ecr.aws/my-microservices/shipping:v1"
)
for entry in "${IMAGES[@]}"; do
IFS='|' read -r label uri <<< "$entry"
aws elasticbeanstalk create-application-version \
--application-name $APP_NAME \
--version-label "$label" \
--image-configuration Source="{Uri=$uri}" \
--region "us-west-2
echo "Registered: $label"
done
각 서비스에 해당하는 서비스 옵션을 설정하고 배포할 수 있습니다. 예를 들어 프론트엔드 서비스는 Application Load Balancer와 같은 공용 인터넷 인터페이스를 필요로 하는 유일한 서비스이며 HTTP 서비스이므로 상태 확인 경로도 설정합니다.
[
{"Namespace": "aws:elasticbeanstalk:eks", "OptionName": "cluster-role", "Value": "arn:aws:iam::0123456789012:rol<...>"},
{"Namespace": "aws:elasticbeanstalk:eks", "OptionName": "node-role", "Value": "arn:aws:iam::0123456789012:role/E<...>"},
{"Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "observability-role", "Value": "arn:aws:iam::0123456<...>"},
{"Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "subnets", "Value": "subnet-1,subnet-2,subnet-3,<...>"},
{"Namespace": "aws:elasticbeanstalk:eks:environment:autoscaling", "OptionName": "min-replica", "Value": "1"},
{"Namespace": "aws:elasticbeanstalk:eks:environment:autoscaling", "OptionName": "max-replica", "Value": "2"},
{"Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "cpu", "Value": "0.5"},
{"Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "memory", "Value": "256Mi"},
{"Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "memory-limit", "Value": "512Mi"},
{"Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "service-port", "Value": "8080"},
{"Namespace": "aws:elasticbeanstalk:eks:alb", "OptionName": "scheme", "Value": "internet-facing"},
{"Namespace": "aws:elasticbeanstalk:eks:alb", "OptionName": "healthcheck-path", "Value": "/_healthz"}
] #frontend-options.json namespaces
이제 이러한 옵션을 사용하여 프론트엔드 서비스 환경을 생성하세요. 비슷한 방식으로 각 서비스 환경을 계속 배포할 수 있습니다.
aws elasticbeanstalk create-environment \
--application-name my-microservice \
--environment-name frontend \
--version-label frontend-v1 \
--tier Name=Cluster,Type=EKS \
--option-settings file:///tmp/frontend-options.json \
모든 서비스가 배포된 후 콘솔을 살펴보면 다음과 같습니다.

Amazon Elastic Compute Cloud(EC2)에서 제공하는 Elastic Beanstalk Standard는 계속해서 지장 없이 지원됩니다. 표준 및 클러스터 모드 환경은 동일한 Elastic Beanstalk 애플리케이션 내에서 병렬적으로 실행되므로 팀이 각자의 속도에 맞춰 한 번에 하나의 환경씩 마이그레이션할 수 있습니다. 변경 전에 유효성 검사를 통해 호환성이 확인되므로 환경을 강제로 이동할 필요가 없습니다.
Elastic Beanstalk 표준 모드는 다음과 같은 경우에 여전히 가장 적합합니다.
- 단일 애플리케이션 또는 단일 환경 사용 사례
- IIS 기반 윈도우/.NET 프레임워크 워크로드
- 컨테이너화할 수 없는 애플리케이션
- EKS 컨트롤 플레인 요금과 EKS Auto Mode 프리미엄에서 추가 요금이 발생하며, 단일 애플리케이션으로는 빈 패킹을 통해 이를 상쇄할 수 없는 월 500 USD 미만 지출의 워크로드
클러스터 모드에서 애플리케이션을 배포하고 관리하는 방법에 대해 자세히 알아보려면 Elastic Beanstalk 클러스터 모드 설명서를 참조하세요.
정식 출시
AWS Elastic Beanstalk 클러스터 모드는 현재 Elastic Beanstalk을 사용할 수 있는 모든 AWS 리전에서 정식으로 사용할 수 있습니다. 리전별 가용 여부와 향후 로드맵은 리전별 AWS 기능을 참조하세요. API를 호출하고, 문서를 검색하고, 리전별 가용성을 확인하고, 이 새로운 기능에 대한 문제를 해결하려면 선호하는 AI 도구를 사용하여 AWS MCP Server 및 플러그인을 활용하세요.
Elastic Beanstalk 클러스터 모드에는 추가 요금이 부과되지 않습니다. EKS 컨트롤 플레인 요금, EKS Auto Mode 컴퓨팅, Amazon ECR 및 Amazon CloudWatch 등 애플리케이션에서 사용하는 기본 AWS 리소스에 대해서만 비용을 지불하면 됩니다. Elastic Beanstalk 클러스터 모드는 AWS 프리 티어에 해당되지 않는다는 것을 참고하세요. 자세히 알아보려면 AWS Elastic Beanstalk 요금 페이지를 참조하세요.
Elastic Beanstalk 콘솔에서 사용해 보고 AWS re:Post for AWS Elastic Beanstalk에 피드백을 보내거나 평소 교류하는 AWS Support 담당자를 통해 피드백을 보내세요.
— Channy