BackEnd

Amazon Elastic Container Service 공략

sihanni 2024. 12. 11. 20:55

Amazon Elastic Container Service (ECS) 

AWS에서 제공하는 관리형 컨테이너 오케스트레이션 서비스, 컨테이너화된 애플리케이션의 배포, 관리 및 확장을 간편하게 할 수 있도록 돕는다. ECS는 Docker와 같은 컨테이너 런타임을 지원하며, AWS 클라우드에서 애플리케이션을 손쉽게 실행하고 관리할 수 있게 인프라를 제공한다.

 

특징

  • 관리형 클러스터
    ECS는 컨테이너를 실행할 EC2 인스턴스를 클러스터로 묶어 관리한다.
    클러스터는 여러 EC2 인스턴스를 포함할 수 있다.
  • Service
    ECS에서 서비스는 여러 개의 Task로 구성되어, 주로 애플리케이션의 지속적인 실행을 보장하는데 사용된다.
    서비스는 EC2 인스턴스 또는 **Fargate와 함꼐 사용할 수 있다.
  • Task
    태스크는 하나 이상의 컨테이너로 구성되며, ECS에서는 이 단위로 애플리케이션을 관리한다.
  • Fargate
    서버리스 컨테이너 실행 모델을 제공하며, 사용자가 직접 EC2 인스턴스를 관리할 필요 없이 컨테이너만 실행할 수 있게 돕는다.
  • 컨테이너 오케스트레이션
    ECS는 컨테이너의 배치, 로드 밸런싱, 자동 확장(Auto scaling) 등 컨테이너 운영에 필요한 모든 기능을 지원한다.

아키텍처

  • ECS on EC2
    EC2 인스턴스를 사용하여 클러스터를 구성하고, 그 인스턴스에서 컨테이너를 실행하는 방식.
    사용자가 직접 EC2 인스턴스를 관리하는 방식이다.
  • ECS on Fargate
    서버리스 방식으로 ECS를 사용하는 방식. Fargate는 ECS가 컨테이너를 실행하는 데 필요한 컴퓨팅 리소스를 자동으로 제공하며 사용자는 컨테이너 정의만 하면 된다.

클러스터 생성 (ECS on EC2)

https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/create-ec2-cluster-console-v2.html

  • 클러스터 이름 설정
  • 인프라에서 EC2 인스턴스를 선택
  • Auto Scaling 그룹 설정
    Ec2 인스턴스의 수를 자동으로 관리하고 조정할 수 있도록 도와주는 AWS의 기능이다. ECS 클러스터를 EC2 인스턴스로 실행할 때, Auto Scaling 그룹을 사용하면 클러스터의 가용성과 확장성을 크게 향상시킬 수 있다고 한다.

    • 자동 확장 : EC2 인스턴스의 부하에 따라 자동으로 인스턴스를 추가하거나 제거한다.
    • 가용성 유지: 지정한 최소 인스턴스 수를 항상 유지한다. (중단, 장애가 발생하면 자동으로 새로운 인스턴스를 시작해서 유지)
    • 유연한 배포: 특정 시간대에 트래픽이 많거나 적을 것을 예상하면 스케줄링 기반으로 확장/축소가 가능
    • 지리적 확장: Auto Scaling 그룹은 여러 가용 영역에 걸쳐 인스턴스를 분산하여 고가용성을 보장 할 수 있다.
    • 옵션
      • Auto Scaling 그룹
        • ECS 클러스터에서 사용할 EC2 인스턴스의 수를 관리하는 그룹
          장애가 발생하면 인스턴스를 자동으로 교체하거나 기준에 따라 확장하고 축소한다.
          이미 인스턴스가 존재한다면 그룹을 생성하지 않고 기존 인스턴스를 클러스터에 추가하면 됌.
      • 프로비저닝 모델
        • 온디맨드: 필요할 떄마다 EC2 인스턴스를 실행하고 표준 요금으로 결제
        • 스팟: 사용하지 않는 EC2 용량을 저렴한 가격으로 제공
        • 이미 존재하는 EC2 인스턴스를 사용할 경우 모델을 선택하지 않고 기존 인스턴스를 클러스터에 연결하면 됌.
    • SSH 키페어 등록
  • 클러스터 생성이 되면 ECR, 태스크, 그리고 서비스를 생성해야한다.
    • ECR
      Amazon Elastic Container Registry 
      AWS에서 제공하는 완전 관리형 컨테이너 이미지 레지스트리
      도커와 같은 컨테이너 환경에서 사용할 이미지를 저장하고 관리하며 ECS와 원활하게 통합된다.
      최초에 이미지를 하나 올려주는데, 이 때 명령어 실행과정에서 최초로 aws cli를 설치하고 aws configure을 통해 aws 계정 설정을 해야한다.
    • Task
      컨테이너 실행의 단위를 의미한다.
      Task Definition에 따라 실행되며, Task Definition에서 지정한 도커 컨테이너와 그 실행 환경을 기반으로 실행된다.
      이미지는 위에서 생성한 ECR에서 가져오도록 설정한다.
      • 네트워크 모드는 bridge로 해주도록 하자.
        • bridge : 기본 도커 네트워크 모드, 컨테이너 들이 도커 엔진의 가상 네트워크를 공유한다.
          즉, ECS 태스크 내의 모든 컨테이너가 동일한 가상 네트워크를 사용해서, 동일한 EC2 인스턴스 내에서 여러 컨테이너들이 서로 네트워크를 공유하는 방식이다.
    • Service
      ECS에서 서비스는 Task를 실행하고 관리하는 역할을 한다.
      Task는 정의된 대로 배포된 Container Set을 말한다. 이 Task들의 라이프 사이클을 관리하는것이 서비스인 것이다.
      서비스를 등록하면 ECS가 지정된 수의 Task를 클러스터에서 항상 실행하도록 보장한다.