Amazon ECS를 위한 솔루션 설계 - Amazon Elastic Container Service

Amazon ECS를 위한 솔루션 설계

다음 다이어그램은 애플리케이션 수명 주기와 Amazon ECS 구성 요소와의 작동 방식을 보여줍니다.

용량, 컨트롤러, 프로비저닝 계층을 보여주는 다이어그램.

컨테이너에서 실행할 수 있도록 애플리케이션을 설계해야 합니다. 컨테이너는 소프트웨어 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 소프트웨어 개발의 표준화된 단위입니다. 여기에는 관련 코드, 런타임, 시스템 도구 및 시스템 라이브러리가 포함됩니다. 컨테이너는 이미지라고 하는 읽기 전용 템플릿에서 생성됩니다. 이미지는 일반적으로 Dockerfile에서 구축됩니다. Dockerfile은 컨테이너 빌드 지침을 포함하는 일반 텍스트 파일입니다. 이러한 이미지는 빌드된 후 다운로드할 수 있는 Amazon ECR과 같은 레지스트리에 저장됩니다.

이미지를 생성하고 저장한 후 Amazon ECS 작업 정의를 생성합니다. 작업 정의는 애플리케이션에 대한 청사진과 같습니다. 작업 정의는 애플리케이션을 구성하는 파라미터 및 하나 이상의 컨테이너를 설명하는 JSON 형식의 텍스트 파일입니다. 예를 들어, 이를 사용하여 운영 체제에 대한 이미지 및 파라미터, 사용할 컨테이너, 애플리케이션에 대해 개방할 포트, 작업의 컨테이너와 함께 사용할 데이터 볼륨을 지정할 수 있습니다. 태스크 정의에 사용할 수 있는 특정 파라미터는 특정 애플리케이션의 필요에 따라 달라집니다.

작업 정의를 정의한 후에는 클러스터에 서비스 또는 작업으로 배포합니다. 클러스터는 클러스터에 등록된 용량 인프라에서 실행되는 작업 또는 서비스의 논리적 그룹입니다.

태스크는 클러스터 내 태스크 정의를 인스턴스화하는 것입니다. 독립 실행형 태스크를 실행하거나 서비스의 일부로 태스크를 실행할 수 있습니다. Amazon ECS 서비스를 사용하여 Amazon ECS 클러스터에서 원하는 수의 태스크를 동시에 실행하고 유지할 수 있습니다. 태스크가 어떤 이유로든 실패하거나 중지하면 Amazon ECS 서비스 스케줄러가 태스크 정의에 따라 다른 인스턴스를 시작하는 방식으로 작동합니다. 이로써 이를 대체하여 서비스에서 원하는 수의 태스크를 유지할 수 있습니다.

컨테이너 에이전트는 Amazon ECS 클러스터 내의 각 컨테이너 인스턴스에서 실행됩니다. 에이전트는 현재 실행 중인 태스크와 컨테이너의 리소스 사용률에 대한 정보를 Amazon ECS로 전송합니다. Amazon ECS로부터 요청을 수신할 때마다 태스크를 시작 및 중지합니다.

작업 또는 서비스를 배포한 후 다음 도구 중 하나를 사용하여 배포 및 애플리케이션을 모니터링할 수 있습니다.

  • CloudWatch

  • 런타임 모니터링

Capacity

용량은 컨테이너가 실행되는 인프라입니다. 다음과 같은 옵션이 있습니다.

  • Amazon EC2 인스턴스

  • 서버리스(AWS Fargate)

  • 온프레미스 가상 머신(VM) 또는 서버

클러스터를 생성할 때 인프라를 지정합니다. 또한 작업 정의를 등록할 때도 인프라 유형을 지정합니다. 작업 정의에서는 인프라를 '시작 유형'이라고 합니다. 독립 실행형 작업을 실행하거나 서비스를 배포할 때도 시작 유형을 사용합니다. 시작 유형 옵션에 대한 자세한 내용은 Amazon ECS 시작 유형 섹션을 참조하세요.

서비스 엔드포인트

서비스 엔드포인트는 인터넷 프로토콜 버전 4(IPv4) 또는 인터넷 프로토콜 버전 6(IPv6)을 사용하여 프로그래밍 방식으로 서비스에 연결하는 데 사용하는 Amazon ECS의 진입점 URL입니다. 기본적으로 Amazon ECS에 프로그래밍 방식으로 연결하기 위해 실행하는 요청은 IPv4 요청만 지원하는 서비스 엔드포인트를 사용합니다. IPv4 또는 IPv6 요청을 사용하여 Amazon ECS와 프로그래밍 방식으로 연결하려면 듀얼 스택 엔드포인트를 사용할 수 있습니다. 듀얼 스택 엔드포인트에 대한 자세한 내용은 Amazon ECS 듀얼 스택 엔드포인트 사용 섹션을 참조하세요.

네트워킹

AWS 리소스는 서브넷에서 생성됩니다. EC2 인스턴스를 사용하는 경우 Amazon ECS는 클러스터를 생성할 때 지정한 서브넷에서 인스턴스를 시작합니다. 작업은 인스턴스 서브넷에서 실행됩니다. Fargate 또는 온프레미스 가상 머신의 경우 작업을 실행하거나 서비스를 생성할 때 서브넷을 지정합니다.

애플리케이션에 따라 서브넷은 프라이빗 또는 퍼블릭 서브넷일 수 있으며 서브넷은 다음 AWS 리소스 중 하나에 속할 수 있습니다.

  • 가용 영역

  • 로컬 영역

  • Wavelength Zone

  • AWS 리전

  • AWS Outposts

자세한 내용은 공유 서브넷, 로컬 영역 및 Wavelength Zone의 Amazon ECS 애플리케이션 또는 AWS Outposts의 Amazon Elastic Container Service을 참조하세요.

다음 방법 중 하나를 사용하여 애플리케이션을 인터넷에 연결할 수 있습니다.

  • 인터넷 게이트웨이를 사용하는 퍼블릭 서브넷

    대용량의 대역폭이나 최소 지연 시간이 필요한 퍼블릭 애플리케이션이 있는 경우 퍼블릭 서브넷을 사용합니다. 적용 가능한 시나리오로, 비디오 스트리밍 및 게임 서비스가 포함됩니다.

  • NAT 게이트웨이를 사용하는 퍼블릭 서브넷

    컨테이너를 외부 직접 액세스로부터 보호하려면 프라이빗 서브넷을 사용합니다. 적용 가능한 시나리오로, 사용자 데이터와 암호를 저장하는 결제 처리 시스템 또는 컨테이너가 포함됩니다.

  • AWS PrivateLink

    AWS PrivateLink를 사용하면 트래픽을 퍼블릭 인터넷에 노출하지 않고 VPC, AWS 서비스, 온프레미스 네트워크 간에서 프라이빗 연결을 확보할 수 있습니다.

기능 액세스

Amazon ECS 계정 설정을 사용하여 다음 기능에 액세스할 수 있습니다.

  • Container Insights

    CloudWatch Container Insights는 컨테이너 애플리케이션 및 마이크로서비스의 지표 및 로그를 수집하고, 종합하며, 요약합니다. 이 지표에는 CPU, 메모리, 디스크, 네트워크 같은 리소스 사용률이 포함되어 있습니다.

  • awsvpc 트렁킹

    특정 EC2 인스턴스 유형의 경우 새로 시작한 컨테이너 인스턴스에서 추가 네트워크 인터페이스(ENI)를 사용할 수 있습니다.

  • 태그 지정 권한 부여

    사용자는 리소스를 생성하는 작업을 위한 권한(예: ecsCreateCluster)이 있어야 합니다. 리소스 생성 작업에서 태그가 지정되면 AWS은 ecs:TagResource 작업에서 추가 권한 부여를 수행해 사용자 또는 역할에 태그를 생성할 권한이 있는지 확인합니다.

  • Fargate FIPS-140 규정 준수

    Fargate에서는 민감한 정보를 보호하는 암호화 모듈의 보안 요구 사항을 규정하는 Federal Information Processing Standard(FIPS-140)를 지원합니다. 이는 현재 미국 및 캐나다 정부 표준이며 연방 정보 보안 관리법(FISMA) 또는 연방 위험 및 권한 부여 관리 프로그램(FedRAMP)을 준수해야 하는 시스템에 적용됩니다.

  • Fargate 작업 사용 중지 시간 변경

    패치 적용을 위해 Fargate 작업을 사용 중지하기 전 대기 기간을 구성할 수 있습니다.

  • 듀얼 스택 VPC

    작업에서 IPv4, IPv6 또는 모두를 통해 통신할 수 있도록 허용합니다.

  • Amazon 리소스 이름(ARN) 형식

    태그 지정 권한 부여와 같은 특정 기능을 사용하려면 새로운 Amazon 리소스 이름(ARN) 형식이 필요합니다.

자세한 내용은 계정 설정을 사용하여 Amazon ECS 기능에 액세스 섹션을 참조하세요.

IAM 역할

IAM 역할은 계정에 생성할 수 있는, 특정 권한을 지닌 IAM 자격 증명입니다. Amazon ECS에서는 역할을 생성하여 컨테이너 또는 서비스와 같은 Amazon ECS 리소스에 권한을 부여할 수 있습니다.

일부 Amazon ECS 기능에는 역할이 필요합니다. 자세한 내용은 Amazon ECS에 대한 IAM 역할 섹션을 참조하세요.

로깅

로깅 및 모니터링은 Amazon ECS 워크로드의 안정성, 가용성 및 성능을 유지 관리하는 데 중요한 부분입니다. 다음과 같은 옵션을 사용할 수 있습니다.

  • Amazon CloudWatch 로그 - Amazon CloudWatch로 로그를 라우팅합니다.

  • FireLens for Amazon ECS - 로그 저장 및 분석을 위해 AWS 서비스 또는 AWS Partner Network 대상으로 로그를 라우팅합니다. AWS Partner Network는 프로그램, 전문 지식 및 리소스를 활용하여 고객 제품을 구축, 마케팅 및 판매하는 글로벌 파트너 커뮤니티입니다.