서버리스 Lambda ECS, EKS Fargate
EC2 인스턴스는 최소한의 손실로 프로비저닝해서 AWS에서 가동하고, 실행할 수 있는 가상 머신입니다.
하지만 사용사례에 때라 대안을 찾아야 할 수도 있습니다.
EC2를 사용하면 사용자가 시간에 따라 인스턴스 플릿을 직접 설정하고 관리해야 합니다.
또한, 새 소프트웨어 패키지가 출시되면 인스턴스 패치를 내가 직접 책임지고 인스턴스의 규모 조정을 설정하고, 솔루션이 가용성이 높은 방식으로 호스팅되도록 아키텍처를 설계했는지 확인해야합니다.
✅ Lambda는 사용자가 코드를 Lambda 함수라는 곳에 업로드할 수 있게 도와주는 서비스입니다.
✅ 먼저 트리거를 구성하면 Lambda 함수에서 서비스가 트리거를 기다립니다.
✅ 트리거가 감지되면 코드가 관리형 환경에서 자동으로 실행됩니다.
✅ 자동으로 규모가 조절되고 가용성이 높으며 환경 내 모든 유지관리를 AWS가 수행해준다.
✅ 트리거가 하나만 있든 천 개가 있든 Lambda는 수요에 맞게 함수의 규모를 조정합니다.
✅ Lambda는 코드를 15분 미만으로 실행하도록 설계되었습니다.
➡️딥 러닝 같은 장기 실행 프로세스에는 적합하지 않다.
하지만 서버리스를 이용할 준비가 되지 않았거나 혹은 기본 환경에 엑세스해야 하지만 여전히 효율성과 휴대성이 필요한 상황이 있습니다.
ECS와 EKS는 모두 Docker 컨테이너 오케스트레이션 도구입니다.
✔️ Docker는 운영 체제 수준에서의 가상화를 사용하여 컨테이너에 소프트웨어를 제공합니다.
✔️ 컨테이너는 애플리케이션과 애플리케이션에서 실행해야 하는 모든 구성을 모아 놓은 코드 패키지입니다.
✔️ 컨테이너는 EC2 인스턴스에서 실행이 되고 가상 머신을 작동하는 방식과 굉장히 비슷하게 서로 격리되어 실행됩니다.
✔️ AWS에서 Docker 컨테이너를 사용할 때는 단일 EC2 인스턴스 뿐만 아니라 클러스터라고 하는 인스턴스 모음에서 실행되는 컨테이너도 시작, 중지, 재시작, 모니터링하는 프로세스가 필요합니다.
➡️ 이런 프로세스를 컨테이너 오케스트레이션이라고 합니다.
✅ ECS는 자체 컨테이너 오케스트레이션 소프트웨어를 관리하는 번거로움 없이도 컨테이너화된 애플리케이션을 대규모로 실행하는 데 도움이 되도록 설계되었습니다.
✅ EKS는 비슷한 작업을 수행하지만 다른 도구와 다른 기능을 사용합니다.
✅Amazon ECS와 Amazon EKS는 모두 EC2에서 실행할 수 있습니다.
❗️하지만 기본 OS에 액세스할 필요가 없거나 EC2 인스턴스를 직접 컨트롤하면서 컨테이너를 호스팅하지 않아도 되는 경우에는 AWS Fargate라는 컴퓨팅 플랫폼을 사용하는 게 더 좋습니다.
💫 EC2
✅ 기존 방식의 애플리케이션을 호스팅
✅ Linux나 Window같은 기본 운영 체제에 대한 완전한 엑세스
💫 Lambda
✅ 단기적인 실행 함수나 서비스 지향 또는 이벤트 기반 애플리케이션을 호스팅
✅ 기본 환경은 전혀 관리하고 싶지 않음
💫 ECS & EKS
✅ Docker 컨테이너 기반 워크로드를 실행
✅ 컨테이너를 내가 관리하는 EC2 인스턴스에서 실행
💫 Fargate
✅ 컨테이너를 AWS가 모두 관리