
AWS의 서버리스 서비스 중 Lambda가 있지만, EC2가 있어야만 Lambda가 작동한다고 알고 있었습니다.
이를 바탕으로 서버리스 및 컨테이너 개념과 Lambda의 접근 방식을 알아보겠습니다.
서버리스(Serverless)와 컨테이너(Container)는 모두 애플리케이션 배포 및 실행을 돕는 기술이지만, 사용 방식과 관리 방식, 적용 예시에서 차이점이 있습니다.
서버리스(Serverless)는 클라우드에서 애플리케이션이 필요한 리소스를 자동으로 관리해주는 컴퓨팅 모델로, 개발자가 서버를 직접 관리할 필요가 없습니다.
개발자는 기능(Function) 단위로 코드를 작성하고 배포하며, 이 코드는 사용자 요청이 있을 때만 실행되고, 처리가 끝나면 자동으로 종료됩니다.
즉, 서버가 존재하지 않는 것이 아니라 서버의 관리가 클라우드 제공자에게 맡겨져 있어 개발자는 코드에만 집중할 수 있고, 사용한 만큼만 비용이 청구되는 효율적인 환경입니다.
AWS Fargate vs AWS Lambda
: AWS Fargate는 컨테이너 기반의 서버리스 실행 환경으로, 지속적인 작업에 적합하며 Lambda에 비해 실행 시간과 같은 제약이 적습니다.
: AWS Lambda는 함수 기반의 서버리스 서비스로, 이벤트 트리거에 최적화되어 짧은 작업에 유리합니다.
컨테이너는 애플리케이션과 모든 종속성을 하나의 독립된 패키지로 묶어 실행 환경의 일관성을 보장하는 기술입니다.
여러 컨테이너를 동일한 호스트에서 실행할 수 있고, 컨테이너 간에 종속성을 분리하여 관리합니다.
| 특징 | 서버리스 | 컨테이너 |
|---|---|---|
| 배포 단위 | 개별 함수 또는 작은 작업 단위 | 애플리케이션 전체 또는 서비스 단위 |
| 인프라 관리 | 클라우드 제공자가 관리 | 컨테이너 생성 및 스케줄링은 개발자가 관리 |
| 확장성 | 자동 확장 (트래픽에 따라 동적 자원 할당) | 수평적 확장 가능 (Kubernetes 등 오케스트레이션 필요) |
| 비용 | 사용 시간에 따라 과금 (사용하지 않으면 비용 없음) | 컨테이너가 실행 중인 시간 동안 과금 |
| 사용 시나리오 | 이벤트 기반 처리, 짧은 작업에 적합 | 마이크로서비스, 이식성이 필요한 환경에 적합 |
| 이식성 | 특정 클라우드 제공자에 종속될 가능성 있음 | 다양한 환경에서 동일하게 작동 가능 |
서버리스는 특정 이벤트에 반응하는 애플리케이션(예: 파일 업로드 시 자동 이미지 리사이즈, 실시간 데이터 처리, 알림 시스템)에 적합합니다.
컨테이너는 복잡한 애플리케이션, 마이크로서비스 아키텍처, 개발/테스트 환경 일관성 유지가 중요한 경우에 적합합니다.
접근 방식
결론적으로, AWS Lambda는 독립적으로 유용하며, 필요에 따라 EC2와 통합하여 복잡한 아키텍처를 구축할 수 있는 유연성을 제공합니다.
https://medium.com/@sadoksmine8/serverless-vs-containers-when-to-use-what-on-gcp-e81f6756f07e