Containers
Docker
컨테이너 기술에 기반한 앱 배포를 위한 소프트웨어 개발 플랫폼이다
앱이 컨테이너에 패키징되면, 컨테이너는 표준화되어있기에 어느 운영체제에서든 같은 방식으로 실행되게 된다.
- 어떤 머신에서든 동작한다
- 호환성 이슈가 없다
- 행동 예측이 가능하다
- 작업량이 적어진다
- 유지보수 및 배포가 쉽다
- 언어, 운영체제, 기술에 상관 없이 실행이 가능하다.
도커의 사용 사례에는 마이크로서비스 아키텍쳐가 있다.
ECS
Elastic Container Service로서, AWS 에서 컨테이너 기술을 제공한다.
Launch Types
EC2 Launch Type
AWS 에서 컨테이너를 실행하면, ECS 클러스터에 ECS Task 를 실행하게 된다.
EC2 Launch Type 를 사용하기 위해서는 인프라를 직접 프로비저닝하고 유지해야 한다.
ECS Cluster 내부의 EC2 인스턴스는 각자 ECS 에이전트를 실행하게 된다.
이후 ECS Task 가 생기게 되면 Cluster 내부의 EC2 인스턴스 내 ECS 에이전트로 분배된다.
Fargate Launch Type
인프라를 프로비저닝하지 않아 관리할 EC2 인스턴스가 없다.
ECS Cluster가 있을 때 해야할 Task 정의만 생성하게 되면 AWS 가 필요한 CPU 나 RAM 에 따라 ECS 태스크를 실행한다.
Load Balancere Integrations
ECS Cluster 앞에 ALB를 위치시켜서 각각의 Task 에 HTTP/HTTPS 엔드포인트를 사용할 수 있다.
다만, NLB는 처리량이 매우 많거나 높은 성능이 요구될 때, 혹은 AWS Private Link 를 사용할 때만 권장된다.
ELB는 EC2 Launch Type 에 한해서 지원되기는 하지만, 특별한 기능을 제공해줄 수 없기에 권장되지는 않는다.
Data Volumes (EFS)
파일 시스템 지속성과 멀티 AZ 지원 등 EFS 사용이 권장된다.
단, FSx for Lustre 는 ECS 에서 지원되지 않으며, S3 은 파일시스템으로 마운트될 수 없다.
Auto Scaling
이를 이용하면 ECS task 를 자동으로 늘리고 줄일 수 있다.
- ECS 서비스의 CPU 사용률 모니터링
- ECS 서비스의 RAM 사용량 모니터링
- ALB Request Count Per Target 지표
위 세 지표를 통해 auto scaling 을 달성할 수 있다.
- Target Tracking
- Step Scaling
- Scheduled Scaling
중 하나를 선택하여 오토스케일 정책을 설정할 수 있다.
EC2 Launch Type - Auto Scaling EC2 instances
EC2 Launch Type 에서의 EC2 인스턴스 또한 오토스케일링이 가능하다.
이는 Auto Scaling Group 설정으로도 가능하지만, ECS Cluster Capacity Provider를 통해서도 달성이 가능하다.
Rolling Updates
ECS 서비스를 업데이트 할 때, 태스크가 한 번에 얼마나, 어떤 방식으로 시작되고 중지되는지를 정의한다.
Minimun healthy percent 와 Maximum percent 를 정의하여 태스크 정리 후 새 버전의 태스크 생성을 통해 이루어진다.
Advanced
ECS tasks invoked by Event Bridge
EventBride에 의해 발생하는 ECS task 를 의미한다.
ECS tasks invoked by Event Bridge Schedule
이는 EventBridge 의 Scheduled 된 일정에 따라 생성되는 ECS task 이다.
ECS - SQS Queue
이는 SQS에서 message 를 poll 해서 처리하는 task 기법을 의미한다.
Amazon ECR
Amazon Elastic Container Registry 이다.
이는 AWS 에서 Docker 이미지를 저장하고 관리한다.
Amazon EKS
Amazon Elastic Kubernetes Service 로서, AWS 에 관리형 Kubernetes 클러스터를 실행하는 기술이다.
Kubernetes 는 오픈 소스 시스템으로 컨테이너화된 어플리케이션 (도커 등) 을 자동으로 배포, 스케일링, 관리할 수 있다.
회사가 이미 온프레미스에서 Kubernetes 를 사용하는 경우 등 AWS 를 통해 Kubernetes 를 사용하려고 할 때 유용하다.
Kubernetes 는 cloud-agnostic 이므로, 클라우드나 컨테이너를 자유롭게 옮겨다니기 위해서는 EKS 가 더욱 권장된다.
'공부한 이야기 > 클라우드' 카테고리의 다른 글
AWS SAA - Route 53 (0) | 2022.08.02 |
---|---|
AWS SAA - Decoupling (0) | 2022.08.02 |
AWS SAA - CloudFront & Global Accelerator (0) | 2022.08.02 |
AWS SAA - Access (0) | 2022.08.02 |
AWS SAA - RDS & ElastiCache (0) | 2022.08.02 |