내 Notion 원글:
출처:
🚢 AWS ECS (Elastic Container Service)
📜 ECS란 무엇인가?
AWS ECS(Elastic Container Service)는 컨테이너화된 어플리케이션을 쉽고 빠르게 배포, 관리 및 확장할 수 있는 서비스입니다. ECS는 AWS 클라우드의 강력한 기능을 활용하여 어플리케이션의 실행을 자동화하고, 운영의 복잡성을 줄여줍니다.
주요 특징
- 클러스터 관리: ECS는 서버의 클러스터를 설정하고 관리하는 복잡한 과정 없이 컨테이너 인스턴스를 쉽게 관리할 수 있게 해준다.
- 비용 효율: 추가적인 관리 비용 없이 AWS의 기본 인프라 위에서 컨테이너를 실행할 수 있다.
- AWS 통합: ECS는 Amazon EC2, Amazon ECR과 같은 다른 AWS 서비스들과 긴밀하게 통합되어 작동한다.
- Fargate 지원: AWS Fargate를 사용하면 서버를 프로비저닝하거나 관리하지 않고도 컨테이너를 실행할 수 있다.
🐳 컨테이너 & 이미지
컨테이너와 이미지는 ECS의 기본 구성 요소. 이들은 어플리케이션의 패키징 및 배포를 단순화한다.
핵심 요소
- Docker 이미지: 어플리케이션, 런타임, 라이브러리 및 설정 파일을 포함하는 읽기 전용 템플릿.
- Docker 파일: 이미지를 생성하기 위한 설정이 담긴 텍스트 문서. 이 파일은 빌드 과정에서 이미지의 스냅샷을 생성.
📊컨테이너 오케스트레이션이 뭐지
컨테이너 오케스트레이션(Container Orchestration)은 컨테이너화된 애플리케이션의 배치, 관리, 확장 및 네트워킹을 자동화하는 프로세스이다. 이는 특히 대규모, 다이나믹하거나 빠르게 변화하는 환경에서 많은 수의 컨테이너를 효율적으로 운영하기 위해 필수적이라고 한다.
컨테이너 오케스트레이션의 주요 기능:
- Automated Schedulin:
- 컴퓨팅 리소스의 가용성을 바탕으로 컨테이너를 적절한 호스트에 배치합니다.
- Scaling:
- 애플리케이션의 부하에 따라 컨테이너의 인스턴스 수를 자동으로 늘리거나 줄입니다.
- Health Monitoring:
- 컨테이너의 상태를 지속적으로 확인하고, 실패한 경우 재시작 같은 복구 조치를 취합니다.
- Load Balancing:
- 네트워크 트래픽을 여러 인스턴스에 균등하게 분배하여 시스템의 효율성을 최적화합니다.
- Consistency of Environment:
- 개발, 테스트, 프로덕션 등 모든 환경에서 일관된 실행 환경을 제공합니다.
- Service Discovery:
- 컨테이너가 네트워크에서 서로를 찾고, 통신할 수 있게 합니다.
- Resource Allocation:
- 컨테이너에 CPU, 메모리 등의 리소스를 할당하고 제한합니다.
컨테이너 오케스트레이션 도구 예시:
- Kubernetes (쿠버네티스):
- 현재 가장 널리 사용되는 컨테이너 오케스트레이션 도구입니다. 강력한 커뮤니티 지원과 다양한 기능을 제공합니다.
- Docker Swarm:
- Docker Inc.에서 제공하는 오케스트레이션 도구로, Docker 엔진과 밀접하게 통합되어 있습니다.
- Apache Mesos & Marathon:
- 대규모 클러스터 관리에 초점을 맞춘 오케스트레이션 솔루션입니다.
- Amazon ECS (Elastic Container Service):
- AWS 클라우드 환경에 최적화된 컨테이너 오케스트레이션 서비스입니다.
🌐 클러스터
클러스터는 ECS 리소스를 관리하는 논리적 단위. 이는 컨테이너 인스턴스의 집합으로, 실행 중인 컨테이너에 대한 높은 수준의 관리 및 오케스트레이션을 제공한다.
클러스터의 구성
- 논리적 그룹화: 클러스터는 컨테이너 인스턴스를 기능이나 어플리케이션에 따라 그룹화한다.
- 빈 클러스터: 클러스터에 인스턴스가 없을 때도 생성 가능하며, 이는 예산 관리나 리소스 최적화에 유용하다.
- ECS Agent: 이 에이전트는 EC2 인스턴스에 설치되어 ECS 서비스와의 통신을 담당.
📋 Task Definitions & Task: 작업 정의& 작업
Task Definition과 Task은 컨테이너의 실행 방식을 결정한다.
이들은 실행할 컨테이너의 타입, 사용할 리소스 양 및 네트워크 설정을 명시한다.
작업과 작업 정의
- 작업(Task): 하나 이상의 컨테이너로 구성되는 실행 단위. 이들은 특정 클러스터 인스턴스에서 실행되며 리소스 사용을 공유한다.
- 작업 정의(Task Definitions): 작업을 생성하기 위한 블루프린트. 여기에는 컨테이너 정의, 볼륨, 네트워킹 설정 등이 포함된다.
🛠 Service
서비스는 작업의 실행을 관리. ECS 서비스를 사용하면, 어플리케이션의 탄력적인 실행과 자동 복구, 로드 밸런싱 및 서비스 발견과 같은 고급 기능을 구현할 수 있다. → Task Definition만 가지고는 불가능한 기능이라 주로 Service를 사용한다.
서비스의 역할
- Task 실행 유형: EC2와 Fargate, 두 가지 실행 유형 중 선택할 수 있다. Fargate는 서버를 관리할 필요 없이 컨테이너를 실행.
- 서비스 타입: 복제 또는 데몬 타입 중 선택할 수 있으며, 각각은 클러스터 인스턴스에 컨테이너의 복제본을 실행하거나, 각 인스턴스에 하나의 컨테이너를 유지하는 방식이다.
- 작업 관리: 서비스는 정의된 작업 개수를 유지하며, 필요에 따라 자동으로 확장하거나 축소한다.
'🏗️ Infra > 🔶AWS' 카테고리의 다른 글
[AWS] S3 용어 정리 (0) | 2024.03.12 |
---|---|
[AWS] ELB에 대한 간략한 정리 (0) | 2024.03.12 |