EC2를 사용한 방식은 사용자가 서버와 네트워크를 직접 관리해야 한다는 점에서 큰 자유도를 제공합니다. 인스턴스를 생성하고, 구성하며, 필요한 소프트웨어를 설치하고 유지 관리하는 모든 과정이 사용자의 책임입니다.
AWS ECS의 장점
자동화된 관리: AWS가 컨테이너 실행을 자동으로 관리해주므로 서버 생성, 설정, 유지 관리를 할 필요가 없습니다.
서버리스 옵션(Fargate): Fargate 모드를 사용하면 서버리스 환경에서 컨테이너를 실행할 수 있어, 인프라 관리 부담을 최소화할 수 있습니다.
확장성: 필요에 따라 컨테이너 수를 자동으로 조정할 수 있어, 트래픽 변화에 유연하게 대응할 수 있습니다.
보안: AWS가 제공하는 보안 기능과 모니터링을 활용하여 더 안전하게 애플리케이션을 운영할 수 있습니다.
AWS ECS를 사용한 배포 flow
ECS 접속
AWS 콘솔에 로그인한 후, "ECS"를 검색하여 Elastic Container Service에 접속합니다. 이 단계에서는 AWS가 제공하는 관리형 서비스 인터페이스를 사용하게 됩니다.
컨테이너 구성
사용자 지정 컨테이너를 정의하고, 필요한 설정을 입력합니다.
이름: 컨테이너를 식별할 수 있는 이름을 입력합니다.
이미지: Docker Hub 또는 기타 레지스트리에서 사용할 컨테이너 이미지를 지정합니다.
메모리와 포트 매핑: 컨테이너가 사용할 메모리 한계와 노출할 포트를 설정합니다.
환경 변수: 필요한 환경 변수를 설정하여 컨테이너 실행 시 필요한 설정을 동적으로 관리합니다.
작업(Task) 생성
컨테이너를 포함하는 작업을 정의합니다. 작업은 ECS가 컨테이너를 어떻게 실행할지에 대한 청사진을 제공합니다.
Fargate 선택: 작업 실행 모드로 Fargate를 사용합니다. Fargate는 서버리스 모드로, 인프라 관리 부담을 줄이고 더 간편하게 컨테이너를 실행할 수 있습니다.
서비스 설정
작업을 제어하는 서비스를 정의합니다. 서비스는 컨테이너 실행을 관리하고, 필요시 부하 분산기를 설정하여 트래픽을 효율적으로 관리할 수 있습니다.
클러스터 구성
클러스터는 컨테이너와 작업을 그룹화하여 관리하는 단위입니다. 클러스터를 구성하여 여러 개의 컨테이너를 효율적으로 관리할 수 있습니다.
클러스터 이름: 클러스터의 이름을 지정합니다.
네트워크 설정: AWS가 자동으로 네트워크를 구성해주므로 별도의 설정 없이 클러스터 내의 컨테이너들이 통신할 수 있습니다.
배포 확인
모든 설정이 완료되면 ECS에서 실행 중인 작업과 서비스를 확인합니다. AWS가 제공하는 공용 IP 주소를 통해 애플리케이션이 정상적으로 실행되는지 테스트할 수 있습니다.