API Gateway vs ALB: Lambda 앞단 선택 기준

5 분 소요

Lambda로 API를 만들면 바로 다음 질문이 앞단입니다. API Gateway를 둘지, ALB에 붙일지, 아니면 Function URL로 바로 열지. 결론을 먼저 적으면, 트래픽이 적거나 가변적이면 요청당 과금인 API Gateway HTTP API, 상시 대량 트래픽이거나 이미 ALB가 있으면 고정비 구조인 ALB, 인증을 직접 처리하는 단일 함수 웹훅이면 무료인 Function URL입니다. 요금 모델이 요청당과 시간당으로 갈리기 때문에, 월 요청 수를 알면 계산이 대부분 끝납니다. ALB 자체의 기능은 ALB vs NLB에서 다뤘습니다. 요금은 us-east-1 기준입니다.

한눈에 보는 비교 #

구분HTTP APIREST APIALBFunction URL
요금 모델요청당요청당시간당 + LCU무료 (Lambda 요금만)
단가100만 건당 약 $1.00100만 건당 약 $3.50월 약 $16 + LCU당 $0.008/h없음
유휴 비용00월 약 $16부터0
인증JWT, IAM, Lambda 오서라이저IAM, Cognito, API 키, Lambda 오서라이저OIDC, CognitoIAM 또는 없음
사용량 제한·API 키없음사용량 플랜 지원없음없음
응답 캐싱없음스테이지 캐시 지원없음없음
WAF 연결불가 (CloudFront 경유 필요)가능가능불가
VPC 내부 대상 혼합VPC 링크 필요VPC 링크 필요기본 (EC2·ECS와 혼합 라우팅)불가

요금 모델: 교차점은 월 1,600만 건 부근 #

HTTP API는 100만 건당 약 $1.00의 순수 요청당 과금입니다. 트래픽이 없으면 0원이고, 스파이크가 와도 요청 수만큼만 냅니다. ALB는 반대로 떠 있는 것만으로 월 약 $16(시간당 $0.0225)이 나가고, 처리량에 따라 LCU 요금(시간당 LCU당 $0.008)이 더해집니다.

고정비와 변동비의 교차점을 계산하면, ALB 기본 요금 약 $16은 HTTP API 요청 1,600만 건 값입니다. 월 요청이 수백만 건 이하면 HTTP API가 확실히 싸고, 수천만 건을 넘어 억 단위로 가면 ALB의 고정비 구조가 유리해집니다. 월 1억 건이면 HTTP API는 약 $100이지만 ALB는 LCU를 포함해도 수십 달러 선에 머무는 경우가 많습니다. 다만 LCU는 신규 연결 수, 활성 연결 수, 처리 바이트, 룰 평가 수 중 최댓값으로 계산되므로, 대용량 응답이나 연결이 많은 워크로드는 LCU 요금을 따로 검산해야 합니다.

REST API는 HTTP API의 3.5배 단가입니다. 그런데도 선택되는 이유는 기능입니다. API 키와 사용량 플랜(고객별 쿼터·스로틀링), 스테이지 캐싱, 요청·응답 변환, WAF 직접 연결은 REST API에만 있습니다. 외부 고객에게 API를 상품으로 파는 형태라면 REST API의 단가는 기능 값이고, 내부 서비스 API라면 그 기능을 쓸 일이 없어 HTTP API가 기본값입니다.

Function URL은 함수에 HTTPS 엔드포인트를 무료로 붙이는 기능입니다. 인증이 IAM뿐이고 커스텀 도메인, 스로틀링, WAF가 없으므로, GitHub 웹훅 수신처럼 호출자가 명확한 단일 함수 엔드포인트에 맞습니다. 공개 API의 앞단으로 쓰기에는 보호 장치가 없습니다.

요금 밖의 결정 요소 #

이미 ALB가 있는가? ECS나 EC2 서비스가 ALB 뒤에 돌고 있다면, 같은 ALB에 경로 기반 룰로 Lambda 대상 그룹을 추가하는 것이 가장 싸고 단순합니다. 고정비는 이미 내고 있으므로 Lambda 경로의 한계 비용은 LCU 증가분뿐이고, 도메인과 인증서 관리도 한곳으로 모입니다. 컨테이너에서 Lambda로, 또는 그 반대로 점진 이전할 때 트래픽을 룰 단위로 옮길 수 있다는 것도 ALB 통합의 장점입니다.

인증을 어디서 처리하는가? JWT 검증만 필요하면 HTTP API의 JWT 오서라이저가 설정만으로 끝나 가장 간단합니다. ALB도 OIDC 인증을 리스너에서 처리할 수 있습니다. Cognito 사용자 풀, 커스텀 오서라이저, API 키 배포까지 가면 API Gateway 계열이 맞습니다.

제한과 보호가 필요한가? 스로틀링은 API Gateway 계열의 기본기입니다. ALB에는 요청 제한 기능이 없어 WAF의 레이트 기반 룰로 대신해야 합니다. HTTP API는 WAF를 직접 붙일 수 없다는 반대 방향의 구멍이 있어, WAF가 필수 요건이면 REST API나 ALB, 또는 CloudFront를 앞에 얹는 구성이 됩니다.

타임아웃도 다릅니다. API Gateway는 통합 타임아웃이 29초라 장시간 요청에 쓸 수 없습니다. ALB는 유휴 타임아웃을 길게 잡을 수 있지만, Lambda 대상의 응답 크기 제한 등 세부 제약은 양쪽 다 확인이 필요합니다. 콜드 스타트가 겹치면 타임아웃 여유가 더 줄어드는데, 대책은 앞 글에서 다뤘습니다.

선택 순서 #

  1. 호출자가 하나뿐인 웹훅인지 봅니다: 맞으면 Function URL로 끝입니다. 무료이고 관리할 것이 없습니다.
  2. 월 요청 수로 요금 모델을 고릅니다: 수백만 건 이하 또는 가변 트래픽이면 HTTP API, 상시 수천만 건 이상이면 ALB 쪽 총액을 계산합니다.
  3. 기존 ALB 유무를 확인합니다: 있다면 Lambda 대상 그룹 추가가 한계 비용 최소입니다. 새로 ALB를 만드는 것은 트래픽이 그 고정비를 정당화할 때만 선택합니다.
  4. API 키·사용량 플랜·캐싱이 필요하면 REST API로 올립니다: 외부 고객용 API 상품이 전형입니다. 내부 API에 REST API를 쓰고 있다면 HTTP API로 내리는 것이 손쉬운 절감입니다.
  5. WAF·스로틀링 요건을 마지막에 검증합니다: HTTP API + WAF 조합이 필요해지면 CloudFront를 얹거나 REST API·ALB로 바꾸는 구조 변경이 필요하므로, 미리 확인합니다.

정리 #

  • 요금 모델이 본질입니다. HTTP API는 100만 건당 약 $1.00의 변동비, ALB는 월 약 $16 + LCU의 고정비 구조이고, 교차점은 월 1,600만 건 부근입니다.
  • 내부 API의 기본값은 HTTP API입니다. REST API의 3.5배 단가는 API 키, 사용량 플랜, 캐싱, WAF 직결이 필요할 때만 냅니다.
  • 이미 ALB가 있으면 Lambda 대상 그룹 추가가 가장 싼 선택입니다. 컨테이너와 Lambda를 한 도메인에서 섞을 수 있습니다.
  • Function URL은 무료지만 IAM 인증뿐이므로 호출자가 명확한 웹훅 전용입니다. 공개 API 앞단으로는 보호 장치가 부족합니다.
  • 29초 타임아웃, WAF 연결 가능 여부, LCU 검산이 뒤늦게 발견되는 제약 3종입니다. 아키텍처를 확정하기 전에 확인합니다.
X