[AWS 서버 구성] ECS로 서버 구동 및 CI/CD 환경 구성하기

개요
- 이번 포스팅에서는 ECS로 서버 구동 및 CI/CD 환경 구성하기 위한 전체적인 프로세스 및 각 서비스들의 개념에 대해 알아본다
ECS(Elastic Container Service)란?
- 컨테이너화된 애플리케이션을 쉽게 실행, 조정 및 관리할 수 있는 서비스
- Docker 컨테이너를 쉽게 배포하고 관리할 수 있으며, 오토 스케일링을 지원
- 컨테이너 타입을 EC2 인스턴스 또는 Fargate(serverless)로 선택할 수 있고, 실행 옵션을 제공하여 유연한 컨테이너 관리 환경을 구성할 수 있다
ECS 계층 구조 
ECS 생명 주기 
관련 AWS, 배포 개념
1. IAM (Identity & Access Management)
- IAM은 AWS의 Identity & Access Management 서비스로, AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 서비스
- IAM을 사용하면 사용자, 그룹, 역할을 생성하고 이들에게 필요한 권한을 부여할 수 있고, AWS 리소스에 대한 보안과 권한 관리를 효율적으로 수행할 수 있다
2. VPC (Virtual Private Cloud)
- VPC는 가상 사설 네트워크로, 사용자가 독립된 가상 네트워크 환경을 구축하고 AWS 리소스를 안전하게 배포할 수 있게 해준다
- VPC를 사용하면 가상 네트워크를 구성하고 AWS 리소스의 네트워크 트래픽을 관리할 수 있으며, 방화벽 규칙, 서브넷, 라우팅 등을 설정하여 네트워크 환경을 커스터마이징 할 수 있다
3. ECR (Elastic Container Registry)
- Docker 컨테이너 이미지를 저장하고 관리할 수 있는 관리형 Docker 컨테이너 레지스트리 서비스
- ECR을 사용하면 Docker 이미지를 쉽게 빌드, 저장 및 배포할 수 있으며, 안전한 저장소에서 이미지를 관리할 수 있고, Amazon ECS와 통합하여 컨테이너화된 애플리케이션을 쉽게 배포하고 실행할 수 있다
4. ALB (Application Load Balancer)
- 애플리케이션 트래픽을 여러 대상 그룹에 분산시켜주는 로드 밸런싱 서비스
- ALB를 사용하면 애플리케이션의 가용성과 확장성을 향상시킬 수 있으며, 트래픽을 여러 대상으로 분산시켜 로드 밸런싱을 수행할 수 있고, 다양한 애플리케이션 계층의 트래픽을 제어할 수 있는 기능을 제공
5. CI/CD(Continuous Integration/Continuous Deployment)
- CI/CD 환경은 소프트웨어 개발과정에서 지속적인 통합과 배포를 가능하게 하는 환경
- 개발자들은 코드 변경 사항을 자동으로 빌드, 테스트하고, 검증된 코드를 자동으로 배포
- CI/CD 환경은 개발 속도를 높이고 애플리케이션의 품질과 안정성을 향상