[141-144] AWS ECS를 사용한 배포 정리

    728x90
    반응형

    AWS ECS를 사용한 배포 정리

     

    ECS 개요

    • ECS(Elastic Container Service): AWS의 관리형 Docker 컨테이너 서비스
    • 프리티어에 포함되지 않는 유료 서비스
    • 자체 관리 EC2 인스턴스 대신 사용하는 관리형 서비스

     

    ECS의 주요 구성 요소

    1. 클러스터(Cluster)
      • 컨테이너화된 애플리케이션을 실행하기 위한 논리적 그룹
      • 여러 서비스와 태스크를 포함하는 최상위 리소스
      • 다중 컨테이너 앱의 경우 하나의 클러스터에 여러 컨테이너를 그룹화 가능
    2. 서비스(Service)
      • 클러스터 내에서 생성
      • 지정된 수의 태스크를 유지하고 관리
      • 로드 밸런서 추가 가능 (요청 리디렉션, 대기열 관리 등)
      • 자동 복구, 배포 전략 설정 가능
      • 테스크당 하나의 서비스 존재
    3. 태스크(Task)
      • 컨테이너의 그룹
      • 애플리케이션의 블루프린트 역할
      • AWS에 컨테이너를 시작하는 방법을 정의
      • 태스크 정의(Task Definition)를 기반으로 실행
      • 하나 이상의 컨테이너를 실행하는 리모트 서버 개념
    4. 컨테이너(Container)
      • Docker Hub 등의 레지스트리에서 이미지 가져와 실행
      • 포트 매핑, 환경 변수, 볼륨 등 설정 가능

     

    배포 워크플로우

    1. 클러스터 생성
    2. 태스크 정의 생성
    3. 클러스터 내에 서비스 생성 (태스크 정의 기반)
    4. 서비스가 태스크 관리

     

    FARGATE 특징

    • 서버리스 모드로 컨테이너 실행
    • EC2 인스턴스를 생성하지 않고 컨테이너와 실행 설정만 저장
    • 요청이 있을 때만 컨테이너 시작, 처리 후 중지
    • 컨테이너 실행 시간에 대해서만 비용 지불 (유휴 시간은 비용 없음)
    • 메모리와 CPU 크기 선택 가능

     

    컨테이너 업데이트 방법

    1. 로컬에서 소스코드 수정
    2. Docker 이미지 빌드 및 태그 지정
    3. Docker Hub에 이미지 푸시
    4. AWS ECS에 업데이트 알리기:
      • 방법 1: 클러스터 → 테스크 → Create new revision으로 새 태스크 생성 → 서비스 업데이트
      • 방법 2: 서비스 업데이트에서 "Force new Deployment" 선택

     

    ECS 장점

    • 커스텀 서버나 머신 시작 불필요
    • 설치 및 유지 관리 책임 없음
    • Auto Scaling 기능 제공 (동시에 여러 컨테이너 생성 가능)
    • 들어오는 요청에 따라 컨테이너 수 자동 조절

     

    수정/추가할 부분

    1. 보안 그룹과 네트워크 설정: ECS 클러스터의 보안 그룹과 네트워크 설정에 대한 내용이 부족합니다.
    2. 로깅과 모니터링: CloudWatch와의 통합을 통한 로깅 및 모니터링 방법에 대한 상세 정보가 필요합니다.
    3. 비용 관리: ECS 사용 시 비용 최적화 전략이 추가되면 좋을 것 같습니다.
    4. CI/CD 통합: 지속적 통합/배포 파이프라인과 ECS 통합 방법에 대한 내용이 있으면 유용할 것입니다.
    5. ECS 서비스 디스커버리: 다중 서비스 환경에서의 서비스 디스커버리 설정에 대한 내용도 추가하면 좋겠습니다.

     

    이 정리는 원본 내용의 핵심을 잘 담고 있으며, ECS의 구조와 사용법에 대한 기본적인 이해를 제공합니다.

     

     

     

     

     

    참고

    https://www.udemy.com/course/docker-kubernetes-2022

    728x90
    반응형

    댓글