Amazon ECS (Elastic Container Service)의 배포 유형
Source: Dev.to
Introduction
Amazon Elastic Container Service (Amazon ECS)는 AWS에서 컨테이너화된 애플리케이션의 배포, 관리 및 확장을 간소화하는 완전 관리형 컨테이너 오케스트레이션 솔루션입니다. ECS에서 애플리케이션을 운영할 때 핵심 요소는 새로운 버전을 배포하는 방법입니다. 이 글에서는 Amazon ECS의 배포 유형을 살펴보고, 각 유형이 어떻게 작동하는지 설명하며, 언제 사용해야 하는지와 모범 사례를 논의합니다. DevOps 및 클라우드 엔지니어에게 특히 유용합니다.
What Are ECS Deployment Types?
ECS의 배포 유형은 새로운 태스크 정의 버전을 활성 서비스에 도입하는 방식을 정의합니다. ECS는 런치 타입 및 로드밸런싱 구성에 따라 여러 전략을 지원합니다:
- ECS with EC2 launch type
- ECS with AWS Fargate
- ECS with an Application Load Balancer (ALB)
주요 ECS 배포 유형은 다음과 같습니다:
- Rolling Deployment (ECS default)
- Blue/Green Deployment (using AWS CodeDeploy)
- External Deployment (custom / third‑party)
Rolling Deployment (ECS Default Deployment)
Rolling deployment는 Amazon ECS에서 기본 제공되는 표준 방법입니다. ECS는 업데이트된 태스크 정의를 기반으로 오래된 태스크를 점진적으로 교체합니다.
How It Works
- ECS는 수정된 태스크 정의를 사용해 새로운 태스크를 시작합니다.
- 기존 태스크는 점차적으로 종료됩니다.
- 이 과정은 배포 구성 설정(예: minimum healthy percent, maximum percent)에 의해 제어됩니다.
Blue/Green Deployment (Using AWS CodeDeploy)
- Blue – 현재 프로덕션 버전
- Green – 새로 릴리스될 버전
트래픽은 제어된 방식으로 Blue 환경에서 Green 환경으로 전환됩니다.
How It Works
- 트래픽 라우팅 전략은 다음과 같습니다:
- Simultaneous (한 번에 전체)
- Straight (선형)
- Canary (점진적)
- Green 태스크가 검증되면 기존(Blue) 태스크가 종료됩니다.
Requirements
- Application Load Balancer (ALB)
- CodeDeploy 배포 컨트롤러가 설정된 ECS 서비스
- ALB에 연결된 두 개의 타깃 그룹(Blue & Green)
External Deployment (Custom Deployment)
External deployment는 외부 시스템이 태스크와 서비스 업데이트를 관리하도록 합니다.
How It Works
- 외부 도구 또는 스크립트가 ECS 서비스와 태스크를 업데이트합니다.
- 스케일링, 트래픽 전환, 롤백 절차를 직접 제어합니다.
Common Tools Used
- Jenkins
- GitHub Actions
- Argo CD
- AWS SDK 또는 AWS CLI를 활용한 커스텀 스크립트
Conclusion
Amazon ECS는 다양한 애플리케이션 요구에 맞는 배포 옵션을 제공합니다. Rolling deployment는 간단하고 비용 효율적이며, Blue/Green deployment는 다운타임 없이 엔터프라이즈 수준의 신뢰성을 제공하고, External deployment는 복잡한 시나리오에 대한 완전한 제어를 가능하게 합니다. 이러한 배포 유형을 이해하면 AWS ECS에서 견고하고 확장 가능하며 신뢰할 수 있는 컨테이너화된 애플리케이션을 구축할 수 있습니다.
References
- https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html
- https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html
- https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-steps-ecs.html
- https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html
- https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-external.html
- https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html
- https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html