AWS API Gateway, AWS S3, AWS ELB, AWS CloudFront, AWS Secret Manager, 스냅샷
AWS EC2, AWS Elastic Beanstalk, AWS ECS, AWS Fargate, AWS Lambda (Serverless)
AWS SQS, AWS MSK, AWS Kinesis
AWS RDS, AWS DynamoDB, AWS ElastiCache
가장 기본적인 형태의 클라우드 컴퓨팅 (= 클라우드 컴퓨터 한 대)
온디맨드: 선결제 금액이나 장기 약정 없이 저렴하고 유연하게 Amazon EC2를 사용하기 원하는 사용자
스팟 인스턴스: 시작 및 종료 시간이 자유로운 애플리케이션
Saving Plans: 1년 또는 3년 기간의 일정 사용량 약정을 조건으로 EC2 및 Fargate 사용량에 대해 저렴한 요금을 제공하는 유연한 요금
AWS 클라우드에서애플리케이션을신속하게 배포하고 관리할 수 있는 서비스(애플리케이션코드를 업로드하기만하면 작동)
Elastic Beanstalk = EC2 + 배포 버전 관리 (롤백) + Elastic Load Balancer + 모니터링 + 로그 트래킹 + 오토 스케일링
다양한 언어 지원: .NET / PHP / Java / Ruby / Node.js / Python / Docker / Go
Fargate를 사용하면 더 이상 컨테이너를 실행하기 위해 가상 머신의 클러스터를 프로비저닝, 구성 또는 조정할 필요가 없습니다. 따라서 서버 유형을 선택하거나, 클러스터를 조정할 시점을 결정하거나, 클러스터 패킹을 최적화할 필요가 없습니다.
이전에는 컨테이너를 실행하기 위해서는 컨테이너를 실행할 Instance(EC2)를 실행시켜야하였지만, AWS Fargate는 이러한 수고를 덜어 줌
왜 Fargate 대신에 EC2를 쓸까? 왜 Fargate 대신에 Elastic Beanstalk을 쓸까?
- 비용과 성능을 절충해가며 최적의 서비스를 선택하는 것!!
Amazon Elastic Container Registry(Amazon ECR)는 안전하고 확장 가능하고 신뢰할 수 있는 AWS 관리형 컨테이너 이미지 레지스트리 서비스
RDS (DB) = 데이터를 저장하는 장소, S3 = 사진, 이미지 등 파일을 저장하는 장소, ECR = 도커 이미지를 저장하는 장소
ECS(Elastic Container Service)는 AWS에서 제공하는 컨테이너 오케스트레이션서비스로 여러 어플리케이션 컨테이너를 쉽고 빠르게 실행하고, 컨테이너를 적절하게 분배 및 확장 & 축소 할 수 있도록 도와주는 서비스
AWS EC2 와 AWS Fargate 중 원하는 환경에서 실행 가능
Task Definition: 컨테이너의 이미지, CPU/메모리 리소스 할당 설정, port 매핑, volume 설정
Task: Task 안에는 한 개 이상의 컨테이너들이포함되어 있으며 ECS에서 컨테이너를 실행하는 최소 단위는 Task이다. (인스턴스화)
Service: Task 들의 Life cycle 을 관리하며, 오토스케일링과 로드밸런싱을 관리
Cluster: Task 가 배포되는 Container Instance 들은 논리적인 그룹
왜 항상 켜져있어야 하는 EC2 / Elastic Beanstalk 대신에 가성비 있는 Lambda를 선택하지 않을까?
1. 하루에 request가 10000개 밖에 안 오니까 (많이 사용하지 않는 서비스 / API / 기능이다)
2. 병렬처리를 하려고 하니까 (youtube에 영상을 올리면 1080p, 720p로 인코딩 되는상황)
기본적으로 EC2와 같은 인스턴스보다는 Latency가 높다.
콜드 스타트: 배포 패키지의 크기와 코드 실행 시간 및 코드의 초기화 시간에 따라 새 실행 환경으로 호출을 라우팅할 때 지연 시간이 발생하는 람다 호출 시작 (겨울에 자동차 시동 걸때에서 유래 됨)
5분정도 warm하게 유지
계속 warm하게 유지하기 위해선 지속적으로 사용해야 하는 방법밖엔 없음