[AWS] ECS

nayoon·2021년 6월 18일
2

AWS

목록 보기
1/4

컨테이너

애플리케이션과 애플리케이션을 구동하는 환경을 격리한 공간

시스템의 나머지 부분과 격리된 프로세스 세트

이러한 프로세스를 실행하는 데 필요한 모든 파일은 고유한 이미지에서 제공

개발 단계에서 테스트, 프로덕션에 이르기까지 이식성과 일관성 유지 가능

전통적인 테스트 환경을 복제하는 개발 파이프라인보다 훨씬 더 빠른 배포를 실현할 수 있다.

즉, 애플리케이션이 작동되게 하고, 품질 검사를 통과하고, 큰 문제나 수정 없이 배포할 수 있는 환경

컨테이너 오케스트레이션

컨테이너의 배포, 관리, 확장, 네트워킹을 자동화해서 손쉽게 관리할 수 있게 해주는 컨테이너 관리 서비스

재설계할 필요없이 각기 다른 환경 전반에 동일한 애플리케이션을 배포하는 데에도 도움이 된다.

목적

여러 컨테이너의 배포 프로세스를 최적화 하는데 있으며, 이것은 컨테이너와 호스트의 수가 증가함에 따라 점점 더 가치가 있다.

요구 사항

컨테이너 오케스트레이션은 컨테이너를 사용하는 어떤 환경에서든 사용할 수 있다.

기능

  • 컨테이너 자동 배포(기본)
  • 컨테이너 자동 배치 및 복제
  • 컨테이너 그룹에 대한 로드 밸런싱
  • 컨테이너 장애 복구
  • 클러스터 외부에 서비스 노출
  • 컨테이너 추가 또는 제거로 확장 및 축소
  • 컨테이너 서비스 간의 인터페이스를 통한 연결 및 네트워크 포트 노출 제어

종류

Docker Swarm, Kubernetes, Apache Mesos

AWS ECS

컨테이너 오케스트레이션 서비스(Container Orchestration Service)

컨테이너형 애플리케이션을 쉽게 배포, 관리 및 확장할 수 있도록 지원한다.

작동 방식

ECS 클러스터 생성
작업 정의 및 서비스 정의(도커 레지스트리로부터 이미지를 pull)
(작업을 정의할 때 이미지를 어디서 가져올 지, 리소스를 어떻게 설정할 것인지 등을 json파일로 설정 가능)
(서비스 정의할 때 작업 정의로 만든 서비스를 어떻게 구성할 지 선택하는 데, 몇 개의 작업을 실행하고 실패 시 다시 시작할 수 있도록 하고, 보안 그룹, 로드밸런서 등을 설정 가능)

주요 기능

  • AWS Fargate를 통한 기본적인 서버리스
  • Amazon ECS Anywhere
  • 보안 및 격리를 고려한 설계
  • 자율적인 제어 플레인 작업

#AWS Fargate

컨테이너에 적합한 서버리스 컴퓨팅 엔진으로 Amazon ECS 및 EKS(Elastic Kubernetes Service)에서 모두 작동

서버를 프로비저닝하고 관리할 필요가 없어 애플리케이션별로 리소스를 지정하고 관련 비용을 지불할 수 있으며, 계획적으로 애플리케이션을 격리함으로써 보안 성능을 향상시킬 수 있다.

*프로비저닝(provisioning): 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것

적당량의 컴퓨팅을 할당하므로 인스턴스를 선택하고 클러스터 용량을 조정할 필요가 없다.

오로지 컨테이너를 실행하는 데 필요한 리소스 비용만 지불하기 때문에 추가 서버를 사용하기 위해 과도하게 프로비저닝하고 관련 비용을 지불하지 않아도 된다.

#AWS ECS Anywhere

고객 관리형 인프라에서 컨테이너 워크로드를 손쉽게 실행 및 관리할 수 있는 Amazon ECS의 기능

클라우드 워크로드(workload): 클라우드 리소스에서 실행할 수 있는 특정한 애플리케이션, 서비스, 기능 또는 특정한 작업량
가상 머신, 데이터베이스, 컨테이너, Hadoop 노드 및 애플리케이션이 모두 클라우드 워크로드로 간주된다.

추가 기능

1) 개발

  • Docker 지원
  • Windows 컨테이너 호환성
  • AWS Copilot
  • 리포지토리 지원

#Docker 지원

#리포지토리 지원

서드 파티에서 호스팅한 Docker 이미지 리포지토리 또는 Docker Hub 및 Amazon Elastic Container Registry(Amazon ECR)와 같은 액세스 가능한 프라이빗 Docker 레지스트리와 함께 사용 가능하다.

태스크 정의(작업 정의)에 리포지토리를 지정하기만 하면 Amazon ECS에서 애플리케이션에 적합한 이미지를 가져온다.

*서드 파티(Third Party): 프로그래밍을 도와주는 라이브러리를 만드는 외부 생산자 혹은 다른 회사 제품에 이용되는 소프트웨어나 하드웨어를 개발하는 회사

(모기업과 자사간의 관계 혹은 하청관계 등 전혀 관련없을 때 사용하는 용어)

*Docker Hub: Docker에서 제공하는 공식 Repository로 각종 공식 애플리케이션의 공식 이미지와 사용자 개인 이미지까지 올리고 내려받기가 가능

*도커 레지스트리(Docker Registry): 도커 이미지를 공유하기 위한 서버 애플리케이션, 업로드하면 어디서든 가져다 쓰는 게 가능

2) 관리

  • 작업 정의
  • 프로그래밍 방식 제어
  • 컨테이너 배포
  • 블루/그린 배포
  • 컨테이너 자동 복구
  • Capacity Providers
  • 스토리지

#작업 정의

태스트 정의라고 하는 선언형 JSON 템플릿을 통해 태스크를 정의할 수 있다.
Docker 리포지토리 및 이미지, 메모리 및 CPU 요구 사항, 공유 데이터 볼륨, 컨테이너가 서로 연결되는 방식 등 작업에 필요한 하나 이상의 컨테이너를 작업 정의 내에서 지정할 수 있다.

#컨테이너 배포

컨테이너를 새로운 버전으로 쉽게 업데이트 가능하다. 새로운 버전의 애플리케이션 작업 정의를 업로드하면, Amazon ECS 스케줄러가 자동으로 업데이트 된 이미지를 사용하는 새로운 컨테이너를 시작하고 이전 버전을 실행하는 컨테이너를 중지한다.

#컨테이너 자동 복구

비정상 컨테이너를 자동으로 복구해서 원하는 수의 컨테이너가 애플리케이션을 지원하도록 한다.

3) 일정 예약 및 태스크 배치

리소스 필요(CPU 혹은 RAM)와 가용성 요구 사항에 따라 클러스터 전체에 컨테이너를 배치하는 여러 일정 예약 전략이 포함되어 있다.

배치 작업, 장기 실행 애플리케이션 및 서비스, 데몬 프로세스의 일정 예약 가능

  • 작업 일정 예약
  • 서비스 일정 예약
  • 데몬 일정 예약
  • Task Placement

#작업 일정 예약

배치 처리 작업처럼 작업을 수행한 후 중단하는 프로세스 수행 가능.
태스크 일정 예약 가능은 수동으로, 작업 대기열에서 자동으로 또는 사용자가 정의하는 시간 간격에 따라 태스크를 시작할 수 있다.

*배치 처리(일괄 처리, batch processing): 최종 사용자의 개입 없이 실행을 스케줄링할 수 있는 작업의 실행

*배치 처리 시스템(일괄 처리 시스템): 일괄 처리 방식이 적용된 시스템으로서, 하나의 작업이 끝나기 전까지는 다른 작업을 할 수 없다.

일괄 처리 시스템은 일정 기간마다 주기적으로 한꺼번에 처리할 필요가 있고, 그룹별로 분류시킬 수 있는 성질을 가지고 있으며, 순차 접근방법을 사용할 수 있는 업무에서 사용된다.

즉, 처리 요건이 일괄적인 업무에 대해 유사한 자료를 한데 모아 일정한 형식으로 분류한 뒤 한번에 일괄 처리함으로써 시간과 비용을 절감하여 업무의 효율성을 높인다.

#서비스 일정 예약

상태 비저장 서비스 및 애플리케이션 실행이 가능.

지정된 수의 태스크가 지속적으로 실행되고 실패 시 태스크를 다시 시작하도록 할 수 있다.

#데몬 일정 예약

ECS 클러스터에 있는 선택된 각 인스턴스에서 동일한 작업을 자동으로 실행한다.

따라서 로깅, 모니터링 또는 백업과 같은 서비스에 대한 공통 관리 기능을 제공하는 태스크를 손쉽게 실행 가능하다.

*ECS 클러스터: 작업 또는 서비스의 논리적 그룹, 리소스의 논리적 그룹으로 클러스터에 작업을 배치한다.

4) 모니터링 및 로깅

  • 모니터링
  • 로깅
  • AWS Config

#모니터링

Amazon CloudWatch를 통해 컨테이너와 클러스터를 모니터링하는 기능을 제공한다.

실행 중인 태스크의 평균 및 전체 CPU 사용률과 메모리 사용률을 태스크 정의, 서비스 또는 클러스터별로 그룹화해서 모니터링 가능하다.

CloudWatch 경보를 설정해서 컨테이너 또는 클러스터를 확장하거나 축소해야 할 때 알림을 받을 수 있다.

#로깅

모든 Amazon ECS API 호출을 기록할 수 있으며, AWS CloudTrail을 통해 로그 파일을 전송받을 수 있다.

API 호출자 ID, API 호출 시간, API 호출자의 소스 IP 주소, 요청 파라미터 및 Amazon ECS가 반환한 응답 요소와 같은 정보가 기록된다.

CloudTrail은 AWS Management Console, AWS SDK, AWS CLI에서 만들어진 API 호출 기록을 제공하고 이를 이용해서 보안 분석, 리소스 변경 추적, 규정 준수 감사가 가능하다.

*SDK(Software Development Kit): 프로그래머들을 위해서 제공하는 개발 도구들.

참고 사이트

  1. Amazon Elastic Container Service 기능
  2. 리눅스 컨테이너(Linux Container): 개념, 종류, 장점, 설치
  3. [IT 트렌드] 컨테이너 오케스트레이션(Container Orchestration)
  4. 컨테이너 오케스트레이션이란?
  5. Container
  6. 클라우드 워크로드
  7. 써드 파티(3rd party)란?
  8. [IT정보] 서드파티(Third Party) 개념
  9. 일괄 처리
  10. SDK란? (Software Development Kit) 종류는 무엇이 있을까?
profile
뚜벅뚜벅 열심히 공부하는 개발자

0개의 댓글