Amazon ECS
- Elastic Container Service
- 실행유형이 두가지이다
1. EC2 Launch Type
- AWS에서 도커 컨테이너를 실행하면 ECS 클러스터에 ECS 태스크를 실행한다
- 인프라를 직접 프로바이징해야 한다
- 각각 ECS 에이전트를 실행해야 한다
- ECS 에이전트가 EC2 인스턴스를 ECS 서비스와 지정된 ECS 클러스터에 등록한다
- 이후에 ECS 태스크를 수행하기 시작하면 AWS가 컨테이너를 실행하거나 멈춘다

2. Fargate Launch Type
- 인프라를 프로비저닝하지 않아 관리할 EC2 인스턴스가 없어 서버리스라고 한다
- ECS 태스크를 정의하는 태스크 정의만 생성하면 필요한 CPU나 RAM에 따라 ECS 태스크를 AWS가 대신 실행한다
- 새 도커 컨테이너를 실행하면 그냥 실행된다
- 작업을 위해 백엔드에 EC2 인스턴스가 생성될 필요도 없다
- 확장하려면 간단하게 태스크만 늘리면 된다

3. Data Volumes (EFS)
- 데이터 볼륨이 필요하며 여러 종류가 있지만 EFS가 자주 사용된다
- EC2 태스크에 파일 시스템을 마운트해서 데이터를 공유하려고 할 때 EFS를 사용한다
- 네트워크 파일 시스템이라 EC2, Fargate 둘 다 호환되며 EC2 태스크에 직접 마운트할 수 있다
- 어느 AZ에 실행되는 태스크든 EFS에 연결되어 있다면 데이터를 공유할 수 있고 원한다면 파일 시스템을 통해 다른 태스크와 연결할 수 있다
- 따라서 Fargate + EFS로 파일 저장을 하는 게 제일 좋다

4. 오토 스케일링
- 세 개의 지표에 대해 확장이 가능하다
- CPU 사용량, 메모리 사용율, ALB 타겟당 요청 수
- Target Tracking: 특정 타겟을 추적하는 대상 추적 스케일링
- Step Scaling: 지정된 CloudWatch 알람을 기반으로 확장(스케일링)한다.
- Scheduled Scaling: 날짜, 시간기반으로 스케일링한다
- ECS 서비스 오토 스케일링(태스크레벨)과 EC2 오토 스케일링(EC2 인스턴스 레벨)은 다르다

ECR
- Elastic Container Registry
- AWS에 도커 이미지를 저장하고 관리하는 데 사용된다
- 두 가지 옵션이 있다
- 계정에 한해 이미지를 비공개로 저장한다 (여러 계정 설정 가능)
- 퍼블릭 저장소를 이용할 수 있다
- ECS와 완전히 통합되어 있고 이미지는 백그라운드에서 S3에 저장된다
- ECR은 단순히 저장하는데 그치지 않고 이미지의 취약점 스캐닝, 버저닝 등을 지원한다

EKS
- Elatic Kubernetes Service
- AWS에 관리형 쿠버네티스 클러스터를 실행할 수 있는 서비스이다

AWS App Runner
- 완전관리형 서비스로 규모에 따라 웹 애플리케이션, API 배포를 돕는다
- 인프라가 필요없고 소스 코드, 컨테이너 등으로 시작해 누구나 배포할 수 있다
- CPU수, 컨테이너 메모리 크기, 오토 스케일링 여부만 설정하면 자동으로 이뤄진다
- App Runner 서비스가 웹 앱을 빌드하고 배포한다
- 오토 스케일링, 가용성, 로드 밸런싱, 암호화, VPC 접근, 캐시 등 장점이 많다
- 빨리 배포해야 하는 웹 앱, API, MSA에 쓰기 좋다
