ECS는 Elastic Container Service의 약자로 AWS에서 도커 컨테이너를 실행할 때 사용된다.
ECS가 동작하기 위해선 어딘가에서 도커 컨테이너를 실행해야 하는데 ECS에서는 반드시 사용자가 프로비저닝해야 하고, 인프라를 자체적으로 유지해야 한다.
사용자는 사전에 여러 EC2 인스턴스를 만들어야 하고, 만들어진 EC2 인스턴스들은 ECS에 의해 다른 컨테이너에서 실행된다. ECS는 새로운 도커 컨테이너를 가질 때마다 어떤 EC2 인스턴스에 도커 컨테이너가 위치할지 알고 있다.
AWS는 사용자를 위해 컨테이너를 시작하고 중지하는 것을 책임지며 사용자가 웹 애플리케이션을 ECS에서 만들기 원한다면 애플리케이션 로드 밸런서(ALB)와의 통합을 책임진다.
Fargate 또한 AWS에서 도커 컨테이너를 실행할 때 사용한다. 그러나 Fargate에선 인프라를 프로비저닝할 필요가 없다. EC2 인스턴스를 만들 필요가 없고 관리할 필요가 없다. AWS가 제공하는 간단한 서비스이다.
Fargate는 서버리스 서비스이고, AWS는 각 컨테이너의 CPU 및 RAM 사양을 기반으로 필요한 컨테이너를 실행하기만 하면 된다.
ECS에서는 미리 EC2 인스턴스를 만들어야 했지만 Fargate에선 그럴 필요가 없다
ECR은 Elasic Container Registry의 약자로 도커 이미지를 저장하여 ECS나 Fargate에 의해 실행된다.
애플리케이션의 이미지를 ECR에 저장하면 Fargate는 ECR에 저장된 이미지로부터 컨테이너를 만들어서 Fargate 서비스에서 직접 실행한다. ECR에서는 여러 이미지를 가질 수 있고, Fargate에 같은 이미지로 여러 컨테이너를 만들 수도 있다.
Serverless는 직역하면 “서버가 없다”는 뜻이다.
하지만 정말로 서버가 없는 것을 말하는 것이 아니다. 서버가 존재하지 않고선 서비스가 동작할 수 없기 때문에 이면에 서버가 존재한다.
따라서 Serverless라는 말은 최종 사용자 입장에서 서버를 관리하지 않거나 프로비저닝하거나 볼 수 없다는 뜻이 된다.
Serverless의 예시로는 이전에 살펴본 S3가 있다. S3를 스토리지 계층으로 사용해도 사용자는 어떤 서버도 관리하지 않기 때문이다. S3는 무한대로 스케일링할 수 있고, 그저 파일을 업로드하면 된다.
DynamoDB와 Fargate도 마찬가지다. DynamoDB는 테이블을 위해 서버를 프로비저닝하지 않는다. 서버와 테이블은 수신하는 로드에 맞게 오토 스케일링할 수 있고, Fargate는 도커 컨테이너를 보내면 Fargate에서 자동으로 실행 방법을 찾아 실행하기 때문에 Serverless 서비스가 된다.
400,000 GB / 1GB = 400,000 , 400,000 GB / 128MB = 3,125,000 과 같다.시험에서는 호출과 기간에 따른 Lambda 가격을 알아야 한다.
API Gateway는 완전 관리 서비스에 사용되며 개발자가 클라우드에서 쉽게 만들고, 게시하고, 유지하며, 모니터링하고 안전한 API를 사용하게 한다. 또한 서버리스이며 확장 가능하고, RESTful API와 데이터 실시간 스트리밍을 위한 WebSocket API, 보안, 사용자 인증, API throttling, API 키, 모니터링 등을 지원한다.
Amazon API Gateway는 시험에서 서버리스 HTTP API를 구축하는 사용 사례로 나오며 서버리스 API를 만들 때를 물어볼 경우 API Gateway와 Lambda를 생각하면 된다.
API Gateway 예시
람다를 사용해서 DynamoDB로부터 데이터 CRUD를 한다고 가정한다.
둘 다 서버리스 기술이지만 클라이언트가 람다 함수에 접근하게 하고 싶을 경우 API Gateway를 통해 노출해야 하며, REST HTTP API를 클라이언트에 제공하여 웹사이트에 직접 연결한다. 그리고 API Gateway는 람다 함수에 요청을 프록시하고, 이는 데이터를 반환한다.
Batch는 완전 관리 배치 처리 서비스로 어떤 규모에서도 배치 처리를 가능하게 한다. 배치 서비스를 통해 수백, 수천 개의 컴퓨팅 배치 작업을 AWS에서 쉽고 효율적으로 처리할 수 있다.
배치 작업에는 시작과 끝이 있다. 배치 작업은 특정 시점에 일어나며 동적으로 EC2 인스턴스 또는 스팟 인스턴스를 실행하여 해당 배치 작업을 실행하는 로드를 수용한다.
배치는 배치 대기열 처리에 적합한 양의 컴퓨팅과 메모리를 프로비저닝할 수 있다. 사용자는 그저 스케줄 된 배치 작업을 배치 대기열에 제출하면 된다. 나머지는 배치 서비스가 알아서 해준다.
배치 작업(Batch Job)은 간단히 도커 이미지와 테스트 정의로 ECS 서비스에서 실행된다. 즉, ECS에서 실행할 수 있는 어떤 것이든 배치에서 실행할 수 있다는 뜻이다. 또한 자동으로 EC2 인스턴스 또는 스팟 인스턴스를 알맞은 개수로 스케일링 해주고 작업을 실행한다. 따라서 비용 최적화를 할 수 있고 인프라에 덜 신경쓰고 배치 작업에만 집중할 수 있다.
Lightsail은 AWS에서 약간 독특한 서비스로 독립 실행형 서비스이다. Lightsail을 사용하면 가상 서버 스토리지, 데이터베이스 및 네트워크를 한 곳에서 구축할 수 있다.
Lightsail은 가격이 저렴하고 예측 가능하다. 사람들이 Lightsail을 사용하는 이유는 EC2, RDS, ELB, EBS, Route 53과 같은 서비스를 사용하는 것보다 더 쉽기 때문이다. 즉, Lightsail은 클라우드 사용 경험이 거의 없고, 서비스의 복잡한 작동 방식을 익히고 싶지 않은 사람들을 위해 만들어진 서비스이다.
Lightsail에서도 리소스에 대한 모니터링 알람 설정을 할 수 있다. 또한 LAMP, Nginx, MEAN, Node.js 등을 사용한 간단한 웹 애플리케이션 배포 시 Lightsail에는 해당 템플릿들이 있고, WordPress, Magento, Plesk 등을 사용한 웹 사이트는 Lightsail에서 템플릿을 사용해 쉽게 배포할 수 있다.
AWS에서 구축된 개발 또는 테스트 환경이 있는 경우에도 Lightsail은 좋은 선택지이다. Lightsail에는 고가용성 개념이 있지만 오토 스케일링은 지원하지 않고 AWS에 제한적으로 통합된다.
요약하자면 Lightsail은 클라우드 사용 경험이 없고 복잡한 설정 없이 저렴하고 예측 가능한 가격으로 서비스를 빠르게 시작하려는 사람에게만 좋은 선택인 것이다.