Lambda vs Fargate: 서버리스 컴퓨팅 선택 기준

5 분 소요

컨테이너 오케스트레이터까지 골랐다 해도 마지막 질문이 남습니다. “이 워크로드에 애초에 상시 프로세스가 필요한가?“입니다. 이벤트가 올 때만 코드를 돌리면 되는 일이라면 Lambda가 후보가 되고, 그 순간 비교 대상은 Fargate입니다. 결론을 먼저 적으면, 짧고 간헐적인 이벤트 처리는 Lambda, 상시 트래픽을 받는 서비스와 장시간 작업은 Fargate입니다. 경계는 감이 아니라 사용률 계산으로 정합니다. Fargate 쪽 기준은 ECS Fargate vs EC2에서 다뤘습니다. 요금은 us-east-1 기준입니다.

과금 구조: 호출 단위 vs 태스크 단위 #

Lambda는 호출당 과금입니다. 요청 100만 건당 $0.20이며, 실행 시간을 GB·초 단위로 계산해 GB·초당 약 $0.0000167이 부과됩니다. 코드가 돌지 않는 시간은 0원이고, 월 100만 요청과 40만 GB·초의 무료 티어가 있습니다. vCPU는 따로 고르지 않고 메모리에 비례해 배정됩니다(약 1,769MB에서 1vCPU 상당).

Fargate는 앞 글에서 본 대로 태스크가 떠 있는 시간 단위 과금입니다(vCPU당 시간당 약 $0.04048, GB당 약 $0.004445). 트래픽이 없어도 태스크가 떠 있으면 요금이 나가고, 대신 호출 수와 요금이 무관합니다.

같은 단위로 환산하면 구조가 보입니다. Lambda의 GB·초 단가를 시간으로 바꾸면 GB·시간당 $0.06입니다. 1vCPU 상당(약 1.77GB)을 한 시간 내내 돌리면 약 $0.106으로, 같은 스펙 Fargate(1vCPU·2GB, 약 $0.049)의 2배가 넘습니다. Lambda의 단가는 “안 도는 시간이 공짜"라는 조건과 묶여 있는 프리미엄 단가입니다.

기준선: 사용률 20〜30%가 경계입니다 #

그래서 판단 변수는 하나로 줄어듭니다. 컴퓨팅이 실제로 도는 시간의 비율입니다. 하루 중 실행 시간 합계가 20〜30%를 넘으면 상시 태스크(Fargate)가 싸지고, 그 아래면 Lambda가 쌉니다. 야간에 비고 피크가 짧은 웹훅 처리기는 사용률이 몇 %에 불과해 Lambda가 압승이고, 초당 수십 건이 꾸준히 들어오는 API는 사실상 상시 실행이라 Fargate 영역입니다.

주의할 점은 트래픽이 늘면 경계를 넘는다는 것입니다. 호출량이 월 수백만 건대로 올라서면 Lambda 청구서가 태스크 한두 개 값을 넘기 시작하므로, 신규 서비스를 Lambda로 시작하는 것은 맞지만 월 청구서에서 Lambda 항목이 Fargate 태스크 환산가를 넘는 시점을 알람으로 잡아 두는 것이 안전합니다.

Lambda의 하드 리밋: 요금 이전에 걸러지는 조건 #

  • 실행 15분 제한: 넘기면 강제 종료됩니다. 장시간 배치, 대용량 변환은 Fargate(시간 제한 없음)로 갑니다.
  • 메모리 최대 10GB: 그 이상 필요한 작업은 선택지가 없습니다.
  • 콜드 스타트: 유휴 후 첫 호출에 수백ms〜수 초가 붙습니다. 지연에 민감한 API라면 프로비저닝드 동시성으로 없앨 수 있지만, 이는 유휴 시간에도 과금되는 옵션이라 “안 도는 시간 공짜"라는 Lambda의 존재 이유를 깎아 먹습니다. 콜드 스타트를 돈 주고 지우고 있다면 Fargate 상시 태스크와 재비교할 시점입니다.
  • 실행 모델: WebSocket 같은 장시간 연결, 상태를 메모리에 들고 있는 서버, GPU 작업은 구조적으로 Lambda에 안 맞습니다.

거꾸로 Lambda만의 강점도 구조에서 나옵니다. 동시 호출 수만 건을 별도 설정 없이 흡수하는 즉시 확장성, S3·SQS·EventBridge와의 이벤트 연결(트리거 설정만으로 파이프라인이 됩니다), 서버·이미지 관리는 0입니다. API Gateway와의 조합은 AWS 고급 #4에서 다뤘습니다.

숨은 비용: 본체보다 주변이 비쌉니다 #

Lambda 요금 계산에서 흔한 착오는 본체 단가만 보는 것입니다. 실제 청구서에는 주변 서비스가 같이 옵니다.

  • API Gateway: HTTP API 기준 100만 건당 약 $1.00으로, 호출량이 크면 Lambda 본체 요금과 같은 자릿수가 됩니다. 트래픽이 큰 API는 ALB(시간당 고정 + LCU) 뒤에 Fargate를 두는 쪽이 더 싸지는 지점이 옵니다.
  • CloudWatch Logs 수집: GB당 약 $0.50. 호출마다 로그를 넉넉히 찍는 함수는 로그 수집비가 실행비를 넘기도 합니다. 로그 레벨과 보존 기간을 함수 단위로 관리합니다.
  • VPC 연결 시 NAT: VPC 안 리소스에 접근하는 Lambda가 외부 API도 호출하면 NAT 게이트웨이 처리 요금이 붙습니다. 요금 급증 사례에서 다룬 유형입니다.

Fargate 쪽 숨은 비용은 반대 방향입니다. 최소 스펙(0.25vCPU)이라도 태스크가 떠 있는 한 월 $9가량은 나가므로, 거의 호출되지 않는 서비스를 태스크로 두는 것 자체가 낭비입니다(상시 점검 목록 참조).

선택 순서 #

  1. 하드 리밋부터 거릅니다: 15분 초과, 10GB 초과, 장시간 연결, GPU 중 하나라도 걸리면 Fargate입니다.
  2. 사용률을 추정합니다: 일일 실행 시간 합계가 20〜30% 이하로 유지되는 이벤트성 워크로드면 Lambda, 상시 트래픽이면 Fargate입니다.
  3. 지연 요구를 확인합니다: 콜드 스타트가 허용되지 않는 저지연 API는 Fargate가 기본이고, Lambda를 유지하려면 프로비저닝드 동시성 비용까지 넣고 재계산합니다.
  4. 주변 비용을 합산합니다: API Gateway, 로그 수집, NAT까지 넣은 총액으로 비교합니다. 본체 단가 비교는 절반의 계산입니다.
  5. 경계 이동을 감시합니다: 트래픽 성장으로 사용률이 경계를 넘으면 Fargate로, 반대로 사용률이 바닥이면 Lambda로 옮깁니다. 컨테이너 이미지를 그대로 쓸 수 있는 Lambda 컨테이너 지원 덕에 이동 비용은 예전보다 작습니다.

정리 #

  • Lambda는 호출당, Fargate는 태스크 시간당 과금입니다. Lambda 단가는 GB·시간 환산 $0.06으로 Fargate의 2배가 넘는 프리미엄이고, 그 대가가 유휴 시간 0원입니다.
  • 경계는 사용률 20〜30%입니다. 그 아래 간헐 워크로드는 Lambda, 상시 트래픽은 Fargate가 쌉니다.
  • 15분·10GB·콜드 스타트·장시간 연결은 요금 이전에 갈리는 하드 리밋입니다.
  • 실제 비교는 API Gateway, 로그 수집, NAT까지 넣은 총액으로 합니다. 본체 단가만 보면 Lambda 청구서는 예측을 벗어납니다.
  • 사용률은 변합니다. Lambda로 시작해 트래픽이 붙으면 Fargate로 옮기는 경로를 처음부터 계획에 넣어 둡니다.
X