AWS ECS 총정리
Amazon Elastic Container Service(Amazon ECS)
익숙해지기 위해서 AWS 용어는 영문으로 작성한다.
ECS(Elastic Container Service)
ECS는 AWS에서 제공하는 컨테이너 오케스트레이션 서비스입니다.
여러 어플리케이션 컨테이너를 쉽고 빠르게 실행하고, 컨테이너를 편하게 확장 & 축소하기 용이 합니다.
* 다시 말해 컨테이너 관리를 도와주는 AWS 도구
ECS 주요 개념
AWS ECS 서비스 아키텍쳐를 살펴보면 아래와 같이 알고 넘어가야하는 주요 요소들이 있습니다. 한번 살펴볼까요?
Container
개발자는 Container를 사용하여 빠른 속도로 애플리케이션의 실행하고 반복하고 이를 반복 할 수 있습니다. Container는 애플리케이션의 코드, 구성 및 종속성을 단일 개체로 패키징하는 표준 방법을 제공합니다. Container는 서버에 설치된 운영 체제를 공유하고 리소스와 격리된 프로세스로 실행되므로 환경에 관계없이 빠르고 안정적이며 일관된 배포를 보장합니다.
* 어플리케이션을 격리된 환경에서 실행하기 위한 가상화 독립된 공간
ECS는 기본적으로 도커 컨테이로 구성해야 됩니다.
클러스터 cluster
cluster는 task와 service를 논리적으로 나눈 그룹이다.
Task
작업(Task)는 컨테이너를 실행하는 최소 단위 입니다. 그렇다고 컨테이너 1개 = Task 1개를 의미하지는 않으며, 최소 1개 이상의 컨테이너로 구성될 수 있으며, 해당 Task 내의 컨테이너는 모두 같은 ECS 클러스터 인스턴스 내에 실행되도록 보장 받습니다
Task Definitions
작업 정의(Task Definitions)은 위에서 말한 Task를 정의한 json포맷의 text 파일입니다. 생성 또는 업데이트된 Task Definitions는 모두 Revision Version 이 기록되어 저장 되므로, 특정 Revision Version으로 Task를 Roll back 등을 하고자 할 때 유용합니다
Task Definitions으로 정의 하는 설정 값
- CPU/Memory 제한
- Docker Netwrok Mode
- Logging Driver
- Vloum Mount
- Task Role
- launch type
- port
Task Definitions 예시
{
"family": "webserver",
"containerDefinitions": [
{
"name": "web",
"image": "nginx",
"memory": "100",
"cpu": "99"
}
],
"requiresCompatibilities": [
"FARGATE"
],
"networkMode": "awsvpc",
"memory": "512",
"cpu": "256"
}
Task Definitions가 설계도라면 Task는 Task Definitions 설계대로 지을 집이다.
Service
Amazon ECS 클러스터에서 Task Definitions에 지정된 수의 인스턴스를 동시에 실행하고 유지 관리할 수 있습니다. 이것을 서비스라고 합니다. 같은 Cluster 내부에서 Task들을 관리하는 그룹 단위.
어떤 이유로든 작업이 실패하거나 중지해야 하는 경우 Amazon ECS 서비스 스케줄러는 작업 정의의 다른 인스턴스를 시작하여 이를 대체하고 사용된 일정 전략에 따라 서비스에서 원하는 작업 수를 유지합니다.
* Task Definitions을 참고하여 task를 실행하고 관리 합니다.
두 가지 서비스 스케줄러 전략을 사용할 수 있습니다.
Replica
Replica 스케줄링 전략은 Cluster 전체에 원하는 수의 Task를 배치하고 유지합니다. 기본적으로 service scheduler는 가용 영역 전체에 작업을 분산합니다. 작업 배치 전략 및 제약 조건을 사용하여 작업 배치 결정을 사용자 정의할 수 있습니다.
* Cluster 전체에 원하는 수의 Task를 배치하고 유지
Daemon
Daemon 스케줄링 전략은 Cluster에서 지정하는 모든 작업 배치 제약 조건을 충족하는 각 활성 컨테이너 인스턴스에 정확히 하나의 작업을 배포합니다. service scheduler는 실행 중인 task에 대한 작업 배치 제약 조건을 평가하고 배치 제약 조건을 충족하지 않는 작업을 중지합니다. 이 전략을 사용할 때 원하는 작업 수, 작업 배치 전략을 지정하거나 Service Auto Scaling 정책을 사용할 필요가 없습니다.
* 지정하는 모든 작업 배치 제약 조건을 충족하는 각 활성 컨테이너 인스턴스에 정확히 하나의 작업을 배포
AWS Fargate
AWS Fargate는 서버나 클러스터를 관리할 필요 없이 컨테이너를 실행할 수 있는 Amazon ECS용 기술입니다. AWS Fargate를 사용하면 더 이상 컨테이너를 실행하기 위해 가상 머신의 클러스터를 프로비저닝, 구성 및 확장할 필요가 없습니다. 이렇게 하면 서버 유형을 선택하거나 클러스터를 확장할 시기를 결정하거나 클러스터 패킹을 최적화할 필요가 없습니다.
AWS Fargate를 사용하면 서버 또는 클러스터와 상호 작용하거나 이에 대해 생각할 필요가 없습니다. Fargate를 사용하면 애플리케이션을 실행하는 인프라를 관리하는 대신 애플리케이션을 설계하고 구축하는 데 집중할 수 있습니다.
Fargate 시작 유형을 사용하는 task는 서버리스로 배포되므로 container instance는 적용되지 않습니다.
aws fargate 아마존 파게이트 뜻 총정리
AWS Fargate 컨테이너에 적합한 서버리스 컴퓨팅 AWS Fargate는 서버를 관리하지 않고도 애플리케이션 구축에 초점을 맞출 수 있도록 지원하는 종량제 서버리스 컴퓨팅 엔진입니다 웹 앱, API 및 마이
dane-itview.tistory.com