🤔컴퓨팅 파워(서버) : AWS EC2, Elastic Beanstalk, ECS, Fargate, Lambda(Serverless)의 개요
AWS EC2란?
Amazon Elastic Cloud Compute) : 가장 기본적인 형태의 클라우드 컴퓨팅(=클라우드 컴퓨터 한 대)
- 온디맨드 : 선결제 금액이나 장기 약정 없이 저렴하고 유연하게 EC2를 사용하기 원하는 사용자
vs 스팟 인스턴스 : 시작 및 종료 시간이 자유로운 애플리케이션(배치나 머신러닝)
- Saving plans : 1년 또는 3년 동안의 일정 사용량 약정을 조건으로 함(EC2나 Fargate 사용량에 대해서 저렴한 요금을 제공하는 유연한 요금제)
AWS Elastic Beanstalk
AWS 클라우드에서 애플리케이션을 신속하게 배포 관리할 수 있는 서비스(애플리케이션 코드를 업로드하기만 하면 작동)
- Elastic Beanstalk = EC2 + 배포 버전 관리(롤백) + Elastic Load Balancer + 모니터링 + 로그 트래킹 + 오토 스케일링
- 다양한 언어 지원(.NET/PHP/Java/Ruby/Node.js/Python/Docker/Go)
Amazon Fargate
- 컨테이너를 실행하기 위해 가상 머신의 클러스터를 프로비저닝, 구성 또는 조정할 필요가 없다.
서버 유형을 선택하거나 클러스터를 조정할 시점을 결정하거나 클러스터 패킹을 최적화할 필요가 없다.
- 이전에는 컨테이너를 실행하기 위해서 컨테이너를 실행할 인스턴스(EC2)를 실행시켜야만 했지만 Fargate는 이런 수고를 덜어준다.
AWS ECR(Elastic Container Registry)
안전하고 확장 가능하고 신뢰할 수 있는 AWS 관리형 컨테이너 이미지 레지스트리 서비스
-
ECR(도커 이미지 저장 장소) vs RDS;DB(데이터 저장 장소) vs S3(사진, 이미지 등 파일 저장 장소)
-
하지만 왜 Fargate 대신에 EC2나 Elastic Beanstalk를 쓸까?
--> 가격과 성능때문, 만약 2 CPU/8gb 일 때 EC2는 0.104USD라면 Fargate는 0.226USD~ 따라서 가격과 성능을 따져봤을 때 EC2나 Elastic Beanstalk가 적당하다고 판단할 수 있다.
AWS ECS(Elastic Container Service)
컨테이너 오케스트레이션 서비스
- 여러 어플리케이션 컨테이너를 쉽고 빠르게 실행하고, 컨테이너를 적절하게 분배 및 확장 & 축소할 수 있도록 도와주는 서비스
- AWS EC2와 Fargate 중 원하는 환경에서 실행 가능
Lambda
서버 없이도 컴퓨팅을 실행시킬 수 있는 서버리스 컴퓨팅 서비스
-
람다는 함수를 실행시키기 위한 기술이다. 코드 뭉치 실행기
-
최대 15분/최대 10GB/최대 6개의 core
예) 비동기 처리(이미지 썸네일 생성), 예측이 불가능한 리소스 사용(대용량 처리/머신러닝 등)
-
그런데 왜 항상 켜져있어야 하는 EC2나 Elastic Beanstalk 대신에 가성비 있는 Lambda를 선택하지 않을까?
-> 기본적으로 EC2와 같은 인스턴스 보다는 latency가 높다.
-> 갑자기 많은 호출을 처리해야 하거나 유휴시간을 보낸 후에는 Cold Start(실행에 시간이 걸림)를 하기 때문이다.