SAABlog
네트워킹중급

API Gateway REST vs HTTP vs WebSocket: 어떤 걸 선택할까?

AWS API Gateway의 REST, HTTP, WebSocket API 차이점과 워크로드별 최적의 선택 기준을 알아봅니다.

PHILOLAMB-
API GatewayREST APIHTTP APIWebSocket서버리스

관련 시험 도메인

  • Domain 3: Design High-Performing Architectures

핵심 요약 (BLUF)

간단하고 저비용 API는 HTTP API, 고급 기능이 필요하면 REST API, 실시간 양방향 통신은 WebSocket API를 선택하세요. HTTP API는 REST API 대비 최대 70% 저렴하지만, API 키, WAF, 요청 검증 등 고급 기능이 없습니다.

시험 팁

시험 핵심: "저비용 + 단순 = HTTP API", "API 키 + WAF + 고급 기능 = REST API", "채팅 + 실시간 = WebSocket"

API Gateway 유형 한눈에 보기

유형출시 시기특징비용
REST API2015모든 기능 포함높음
HTTP API2019경량, 고성능낮음 (70% 저렴)
WebSocket API2018양방향 실시간연결 시간 + 메시지

REST API vs HTTP API 상세 비교

기능 비교

기능REST APIHTTP API
Lambda 통합
HTTP 프록시
VPC Link
API 키
사용량 계획
요청 검증
요청/응답 변환
AWS WAF
X-Ray 추적
캐싱
프라이빗 엔드포인트
사용자/테넌트 조절

인증 방식 비교

인증 방식REST APIHTTP API
IAM
Lambda 권한 부여자
Cognito
JWT 권한 부여자✅ (네이티브)
API 키

시험 팁

JWT 인증: HTTP API만 네이티브 JWT 권한 부여자를 지원합니다. REST API는 Lambda 권한 부여자로 구현해야 합니다.

성능 및 비용 비교

항목REST APIHTTP API
지연 시간29ms (평균)10ms (평균)
요금 (백만 건)$3.50$1.00
프리 티어100만 건/월100만 건/월
비용 절감 계산:
월 1억 건 API 호출 시:
- REST API: $350
- HTTP API: $100
- 절감액: $250/월 (71% 절감)

REST API를 선택해야 하는 경우

필수 요구사항

  1. API 키 및 사용량 계획

    • 외부 개발자에게 API 제공
    • 테넌트별 요청 제한
  2. 요청/응답 변환

    • VTL(Velocity Template Language)로 데이터 변환
    • 레거시 백엔드 통합
  3. AWS WAF 통합

    • SQL 인젝션, XSS 방어
    • IP 기반 접근 제어
  4. 캐싱

    • API 응답 캐싱
    • 백엔드 부하 감소
  5. 프라이빗 API

    • VPC 내부에서만 접근
    • 내부 마이크로서비스
REST API 아키텍처 예시:

[클라이언트] → [API Gateway REST API]
                    │
                    ├── API 키 검증
                    ├── WAF 규칙 적용
                    ├── 요청 검증
                    ├── 캐싱 확인
                    │
                    ▼
               [Lambda / ALB / EC2]

시험 팁

엔터프라이즈 API: 외부 파트너/개발자에게 API를 제공할 때는 REST API 선택

HTTP API를 선택해야 하는 경우

적합한 시나리오

  1. 간단한 CRUD API

    • Lambda + DynamoDB 조합
    • 빠른 개발, 낮은 비용
  2. 마이크로서비스 내부 통신

    • 서비스 간 API 호출
    • 고급 기능 불필요
  3. OAuth 2.0 / OIDC 인증

    • JWT 토큰 기반 인증
    • Cognito, Auth0 연동
  4. 비용 최적화

    • 트래픽이 많은 API
    • 단순 프록시 기능
HTTP API 아키텍처 예시:

[모바일 앱] → [API Gateway HTTP API]
                    │
                    ├── JWT 검증 (네이티브)
                    │
                    ▼
               [Lambda] → [DynamoDB]

WebSocket API는 언제 사용할까?

작동 방식

WebSocket은 지속적인 양방향 연결을 유지합니다.

HTTP (요청-응답):
[클라이언트] ─── 요청 ──→ [서버]
[클라이언트] ←── 응답 ─── [서버]
(연결 종료)

WebSocket (양방향):
[클라이언트] ←──────────→ [서버]
         지속적 연결 유지
    (서버가 먼저 메시지 전송 가능)

적합한 사용 사례

  1. 실시간 채팅

    • 메시지 즉시 전달
    • 그룹 채팅
  2. 실시간 알림

    • 주식 가격 업데이트
    • 스포츠 경기 스코어
  3. 협업 도구

    • 실시간 문서 편집
    • 화이트보드 공유
  4. 온라인 게임

    • 실시간 게임 상태 동기화
    • 멀티플레이어 게임
  5. IoT 대시보드

    • 센서 데이터 실시간 표시
    • 장치 제어

WebSocket API 라우팅

WebSocket API는 라우트 키로 메시지를 라우팅합니다:

// 클라이언트 메시지
{
  "action": "sendMessage",  // 라우트 키
  "message": "Hello!"
}
라우트설명
$connect연결 시 호출
$disconnect연결 해제 시 호출
$default매칭되는 라우트 없을 때
sendMessage커스텀 라우트

WebSocket 비용 구조

항목비용
연결 시간$0.25/백만 분
메시지 (32KB)$1.00/백만 건
프리 티어100만 메시지 + 75만 연결 분/월

시험 팁

비용 주의: WebSocket은 연결 시간에 따라 요금이 발생합니다. 장시간 연결 유지 시 비용 증가.

선택 가이드 플로우차트

API 유형 선택 시작
        │
        ▼
실시간 양방향 통신 필요? ─── Yes ──→ [WebSocket API]
        │
        No
        │
        ▼
다음 기능 중 필요한 것이 있나요?
- API 키 및 사용량 계획
- AWS WAF 통합
- 요청 검증/변환
- 응답 캐싱
- 프라이빗 엔드포인트
        │
       Yes ──────────────────────→ [REST API]
        │
        No
        │
        ▼
            [HTTP API] (저비용, 고성능)

SAA-C03 시험 출제 포인트

  1. 비용 최적화: "간단한 API + 비용 절감 = HTTP API"
  2. API 키/조절: "외부 API 제공 + 사용량 제한 = REST API"
  3. 실시간 통신: "채팅, 알림, 게임 = WebSocket API"
  4. WAF 통합: "API 보호 + WAF = REST API"
  5. JWT 인증: "네이티브 JWT = HTTP API"

시험 팁

시험 문제 예시: "모바일 앱이 Lambda 함수를 호출합니다. OAuth 2.0 JWT 토큰으로 인증하고, 비용을 최소화해야 합니다. 적합한 API 유형은?" → 정답: HTTP API (JWT 네이티브 지원 + 저비용)

자주 묻는 질문 (FAQ)

Q: HTTP API가 REST API를 완전히 대체할 수 있나요?

아니요. HTTP API는 API 키, WAF, 캐싱, 요청 검증 등 많은 고급 기능을 지원하지 않습니다. 이러한 기능이 필요하면 REST API를 사용해야 합니다.

Q: REST API와 HTTP API를 동시에 사용할 수 있나요?

네. 하나의 애플리케이션에서 용도에 따라 두 유형을 함께 사용할 수 있습니다. 예: 내부 API는 HTTP API, 외부 파트너 API는 REST API.

Q: WebSocket 연결이 끊어지면 어떻게 되나요?

$disconnect 라우트가 호출됩니다. 클라이언트 측에서 재연결 로직을 구현해야 합니다. API Gateway는 최대 2시간 동안 유휴 연결을 유지합니다.

Q: API Gateway 캐싱은 REST API에서만 가능한가요?

네. HTTP API는 캐싱을 지원하지 않습니다. 캐싱이 필요하면 CloudFront를 앞에 두거나 REST API를 사용하세요.

Q: Lambda 통합 시 어떤 API가 더 빠른가요?

HTTP API가 REST API보다 지연 시간이 낮습니다 (평균 10ms vs 29ms). 기능이 적은 대신 오버헤드도 적습니다.

관련 글

참고 자료