핵심
Lambda
•
이벤트 실행 (서버 없음)
EC2
•
직접 서버 운영
Fargate
•
컨테이너 서버리스
구조
Lambda
•
요청이 들어올 때만 실행
•
서버 관리 없음
•
코드만 실행하는 함수
EC2
•
VM 서버 직접 운영
•
OS, 패치, 스케일링 다 관리
•
내가 직접 운영하는 서버
Fargate
•
컨테이너 실행 (ECS/EKS 기반)
•
서버는 AWS가 관리
•
Docker만 신경쓰면 됨
차이점
항목 | Lambda | EC2 | Fargate |
서버 관리 | X | O | X |
실행 방식 | 이벤트 기반 | 항상 실행 | 컨테이너 |
확장 | 자동 | 직접 설정 | 자동 |
비용 | 사용한 만큼 | 계속 과금 | 사용한 만큼 |
실행 시간 | 제한 있음 | 무제한 | 무제한 |
사용 시기
Lambda
•
이벤트 기반
•
간헐적 트래픽
•
서버 관리 X
•
빠른 개발
•
예시
◦
S3 업로드 처리
◦
API Gateway 백엔드
EC2
•
커스텀 환경 필요
•
오래 실행되는 작업
•
OS 제어 필요
•
예시
◦
레거시 앱
◦
특수 라이브러리 필요
Fargate
•
컨테이너 기반
•
서버 관리 X
•
ECS/EKS 사용
•
예시
◦
마이크로서비스
◦
Docker 앱
문제 예시
•
서버 관리 최소화
◦
정답: 우선순위에 따라 변경
1.
Lambda
2.
Fargate
3.
EC2
•
트래픽 예측 불가
◦
정답: Lambda 또는 Fargate
•
항상 실행 필요
◦
정답: EC2 or Fargate
•
컨테이너 요구
◦
정답: Fargate
•
CPU 집약 작업
◦
Lambda → 메모리 늘리면 CPU 증가
•
서버 관리 없음인데 EC2 선택
◦
Lambda / Fargate가 정답
•
컨테이너인데 Lambda 선택
◦
Fargate가 정답
•
장시간 실행인데 Lambda 선택
◦
Lambda는 최대 15분간 실행 가능
•
간헐적 트래픽인데 EC2
◦
비용 낭비이므로 Lambda가 정답
•
Lambda vs Fargate
◦
간단한 이벤트 → Lambda
◦
복잡한 앱 → Fargate
•
EC2 vs Fargate
◦
OS 제어 필요 → EC2
◦
컨테이너만 필요 → Fargate