Amazon ECS(Elastic Container Service) 란?
- 클러스터에서 컨테이너를 쉽게 실행, 중지 및 관리할 수 있게 해주는 컨테이너 관리 서비스 입니다.
- 간단한 API 호출을 사용하여 컨테이너 기반 애플리케이션을 시작하고 중지할 수 있습니다.
- 2017년 10월 Seoul Region에 출시되었습니다.
Amazon ECS 구성 요소
1. Amozon ECR : Amazon에서 제공하는 컨테이너 이미지 저장소 입니다. ECR 리포지토리에서 이미지 URI를 이용해 빌드한 이미지를 푸쉬하고 가져올 수 있습니다.
2. Task Definition : 작업 정의는 애플리케이션을 구성하는 컨테이너를 설명하는 텍스트(JSON) 입니다.
- 시작 유형 호환성 선택(Fargate | EC2 | External)
- 사용할 컨테이너 이미지 설정
- 애플리케이션을 위해 개방할 포트 설정
- CPU/메모리 리소스 할당 설정
- 작업의 컨테이너에 사용할 데이터 볼륨 설정
콘솔 또는 JSON 형식으로 작업 정의를 설정할 수 있습니다. (호환)
* 작업 정의 예시(JSON 형식)
{
"family": "webserver",
"containerDefinitions": [
{
"name": "web",
"image": "nginx",
"memory": "100",
"cpu": "99"
},
"portMappings": [
{
"hostPort": 80,
"protocol": "tcp",
"containerPort": 80
}
]
"requiresCompatibilities": [
"FARGATE"
],
"networkMode": "awsvpc",
"memory": "512",
"cpu": "256",
}
JavaScript3. Task : 작업 정의에서 정의된 설정으로 인스턴스화 하는 것입니다. Task는 Cluster에 속한 컨테이너 인스턴스(EC2 인스턴스)나 Fargate에 배포하게 됩니다.
4. Service : 클러스터에서 지정된 수의 작업을 동시에 실행하고 관리할 수 있게 해주는 구성입니다. 서비스는 Task를 포함하며, Task와 관련된 Auto Scaling과 Load Balancing을 관리합니다.
- 시작 유형 선택(Fargate | EC2 | External)
- 작업 정의 선택
- 클러스터 선택
- 서비스 이름 설정
- 작업 개수 설정
- 배포 유형 설정(롤링 | 블루/그린 배포)
- 네트워크 구성(VPC, 서브넷, 보안그룹)
- Load Balancing 설정
- Auto Scaling 설정
5. Cluster : 작업 또는 서비스의 논리적 그룹입니다. 클러스터를 실행하여 작업을 실행할 수 있습니다.
- 클러스터 템플릿 선택(Fargate | EC2 | External)
- 클러스터 이름 설정
* 시작 유형
Fargate : 컨테이너를 배포하고 관리할 수 있는 서버리스 컴퓨팅 엔진
EC2 : 컨테이너를 배포하고 관리할 수 있는 클라우드 컴퓨팅 플랫폼
External : 컨테이너를 배포하고 관리할 수 있는 온프레미스 서버 또는 가상 머신
참고 자료
https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/Welcome.html
https://docs.aws.amazon.com/ko_kr/ecs/index.html
지금까지 간단하게 Amazon ECS에 대해 알아보았습니다.
다음으로는 CI/CD의 기본적인 구조인, Jenkins pipeline을 이용해 ECS에 배포하는 Hands On을 진행 하겠습니다.
자세한 안내는 AWS의 관리 안내서를 참고하시기 바랍니다.
https://docs.aws.amazon.com/ko_kr/ecs/index.html
감사합니다.
문의 사항이 있으시면, NDS Sales팀으로 연락 주시길 바랍니다.
cloud.sales@nongshim.co.kr
SA 김민지