2018년 2월 17일 토요일

AWS ECS 상세 개념

1. AWS ECS란?
  - 클러스터에서 도커 컨테이너를 손쉽게 실행, 주지 및 관리할 수 있는 컨테이너 서비스
  - 간단한 API를 이용하여 컨테이너 기반 애플리케이션 시작 및 중지 가능
  - 중앙 집중식으로 클러스터 상태를 확인할 수 있으며 다수의 EC2 기능을 액세스 가능
  - 일관된 배포 및 구축 환경을 생성 가능하고, 마이크로 서비스 모델의 아키텍쳐를 구축할 수 있도록 지원

2. ECS 개별 요소
  - 컨테이너 : ECS에서 애플리케이션을 배포할 때 구성요소를 실행하는 소프트웨어 개발의 표준화된 단위(이미지라는 읽기 전용 템플릿에서 생성됨)
  - 작업 정의 : 애플리케이션을 구성하는 컨테이너를 설명하는 JSON 형식의 텍스트 파일(사용할 컨테이너, 리포지토리, 포트, 데이터 볼륨 등 정의)
  - 작업 : 클러스터 내 작업 정의를 인스턴스화하는 것
  - 클러스터 : 작업을 실행할 때 해당 리소스의 논리적인 그룹
  - 컨테이너 에이전트 : ECS 클라스터의 각 인프라 리소스에서 실행됨, 현재 실행중인 작업과 리소스 사용률을 ECS에 전송하고, ECS로부터 요청을 수신할 때마다 작업을 시작 or 중지함

3. 컨테이너 인스턴스
  - 리눅스 커널 버전 3.10 이상
  - ECS 컨테이너 에이전트
  - 도커 데몬 1.5.0 이상 실행
  - ECS 최적화 AMI는 총 30GIB의 스토리지 제공
  - ECS 최적화 AMI 정보 : https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/launch_container_instance.html
  - 인스턴스 드레이닝
    ~ 시스템 업데이트 수행 및 도커 데몬 업데이트, 클러스터 제거 시 기존 처리하고 있는 작업이 모두 정지할 때까지 대기되는 상태, 해당 상태에서 서비스는 드레이닝이 아닌 인스턴스에 서비스를 실행, 작업이 완료되면 새로운 작업으로 대체됨
    ~ minimumHealthyPercent가 100% 미만이면 스케줄러는 작업 대체 도중 desiredCount를 일시적으로 무시 가능 (desiredCount가 4개이고, 50%의 최소값은 스케줄러가 새로운 2개 작업을 시작하기 위해 2개의 기존 작업을 중지하도록 허용, 최소값이 100%인 경우 모든 작업이 정상 상태라고 간주될 때까지 기존 작업 제거할 수 없음)
    ~ maximumPercent는 작업 대체 도중 실행 중인 작업 수의 상한선을 나타냄 (desiredCount가 4개 작업인 경우 200% 최대값은 드레이닝할 4개 작업을 중지하기 전에 4개의 새 작업을 실행함, 최대값이 100%인 경우 드레이닝 작업이 중지될 때까지 대체 작업을 시작할 수 없음)
  - 애플리케이션 아키텍쳐  : 프론트엔드 / 백엔드 / 데이터 스토어 구분 => 작업 정의로 서비스에 대한 필요한 리소스 그룹화

4. ECS IAM 정책, 역할 및 권한
  - 기본 IAM 사용자는 ECS 리소스를 생성 또는 수정하거나 ECS API를 사용하여 작업을 수행할 권한이 없음
  - ECS 컨테이너 인스턴스  / ECS 작업실행 / 서비스 연결 / ECS 서비스 스케줄러 / ECS 서비스 자동 조절 등 IAM 정책, 역할 및 권한 부여 필요