모든 내용은 Cousera의 'AWS Cloud Technical Essentials' 강좌 내용을 기반으로 정리하였습니다.
Amazon ECS이나 EKS를 사용하면 EC2모드, Fargate와 같이 두가지 모드에서 컨테이너를 실행할 수 있습니다.
Amazon EC2 또는 EC2에서 실행되는 컨테이너 서비스를 컴퓨팅 플랫폼으로 사용하는 경우에는 인스턴스 집합을 설정하고 관리해 주어야 합니다. 즉, 새로운 소프트웨어 패키지가 나오거나 보안 업데이트가 필요할 때 인스턴스를 패치해야 합니다. 또한 고가용성을 충족하였는지, 특정 유스케이스에 맞게 관리 프로세스를 구축하였는지 또한 고려해야 합니다.
AWS Farget는 ECS 또는 EKS 기반으로 실행할 수 있는 서버리스 컴퓨팅 플랫폼입니다. Fargate는 인프라를 확장 및 관리를 하여 개발자가 애플리케이션 개발 작업에 집중할 수 있도록 합니다. 그러므로 작업자는 운영체제 액세스 권한을 부여받지 않습니다. 즉, 솔루션을 호스팅하는 EC2 인스턴스를 추상화하므로 인프라를 볼 수 없거나 접근할 수 없습니다. 이로 인해 EC2 인스턴스를 컴퓨팅 플랫폼으로 사용할 때와는 달리, 패치, 프로비저닝, scaling, Fault-torlerance와 같은 작업을 할 필요가 없습니다.
Ec2 인스턴스나 컨테이너를 관리할 필요 없이 워크로드와 애플리케이션을 배포하려는 경우에 AWS Lambda를 사용할 수 있습니다. AWS Lambda를 사용하면 서버 또는 컨테이너를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있습니다. Lambda 함수에는 트리거, 코드 및 구성의 세 가지 기본 구성 요소가 있습니다.
Lambda를 사용하면 코드를 패키징하고 Lambda 서비스에 업로드하여 Lambda 함수를 생성할 수 있습니다. Lambda의 함수 구성은 함수 실행방법을 설명하는 정보로 구성되어 있습니다. 함수 구성에서는 네트워크 배치, 환경 변수, 메모리, 호출 유형, 권한 집합을 지정합니다. 트리거는 Lambda 함수를 실행하는 시기를 설정합니다. 특정 API에 대한 응답으로 Lambda 함수를 실행할 수 있도록 합니다. 예를 들어 python 코드는 AWS SDK를 사용하여 S3에 대한 API 호출을 수행합니다. 트리거가 감지되면 코드가 자동으로 실행됩니다.