API Gateway REST vs HTTP vs WebSocket: 어떤 걸 선택할까?
AWS API Gateway의 REST, HTTP, WebSocket API 차이점과 워크로드별 최적의 선택 기준을 알아봅니다.
관련 시험 도메인
- 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 API | 2015 | 모든 기능 포함 | 높음 |
| HTTP API | 2019 | 경량, 고성능 | 낮음 (70% 저렴) |
| WebSocket API | 2018 | 양방향 실시간 | 연결 시간 + 메시지 |
REST API vs HTTP API 상세 비교
기능 비교
| 기능 | REST API | HTTP API |
|---|---|---|
| Lambda 통합 | ✅ | ✅ |
| HTTP 프록시 | ✅ | ✅ |
| VPC Link | ✅ | ✅ |
| API 키 | ✅ | ❌ |
| 사용량 계획 | ✅ | ❌ |
| 요청 검증 | ✅ | ❌ |
| 요청/응답 변환 | ✅ | ❌ |
| AWS WAF | ✅ | ❌ |
| X-Ray 추적 | ✅ | ❌ |
| 캐싱 | ✅ | ❌ |
| 프라이빗 엔드포인트 | ✅ | ❌ |
| 사용자/테넌트 조절 | ✅ | ❌ |
인증 방식 비교
| 인증 방식 | REST API | HTTP API |
|---|---|---|
| IAM | ✅ | ✅ |
| Lambda 권한 부여자 | ✅ | ✅ |
| Cognito | ✅ | ✅ |
| JWT 권한 부여자 | ❌ | ✅ (네이티브) |
| API 키 | ✅ | ❌ |
시험 팁
JWT 인증: HTTP API만 네이티브 JWT 권한 부여자를 지원합니다. REST API는 Lambda 권한 부여자로 구현해야 합니다.
성능 및 비용 비교
| 항목 | REST API | HTTP API |
|---|---|---|
| 지연 시간 | 29ms (평균) | 10ms (평균) |
| 요금 (백만 건) | $3.50 | $1.00 |
| 프리 티어 | 100만 건/월 | 100만 건/월 |
비용 절감 계산:
월 1억 건 API 호출 시:
- REST API: $350
- HTTP API: $100
- 절감액: $250/월 (71% 절감)
REST API를 선택해야 하는 경우
필수 요구사항
-
API 키 및 사용량 계획
- 외부 개발자에게 API 제공
- 테넌트별 요청 제한
-
요청/응답 변환
- VTL(Velocity Template Language)로 데이터 변환
- 레거시 백엔드 통합
-
AWS WAF 통합
- SQL 인젝션, XSS 방어
- IP 기반 접근 제어
-
캐싱
- API 응답 캐싱
- 백엔드 부하 감소
-
프라이빗 API
- VPC 내부에서만 접근
- 내부 마이크로서비스
REST API 아키텍처 예시:
[클라이언트] → [API Gateway REST API]
│
├── API 키 검증
├── WAF 규칙 적용
├── 요청 검증
├── 캐싱 확인
│
▼
[Lambda / ALB / EC2]
시험 팁
엔터프라이즈 API: 외부 파트너/개발자에게 API를 제공할 때는 REST API 선택
HTTP API를 선택해야 하는 경우
적합한 시나리오
-
간단한 CRUD API
- Lambda + DynamoDB 조합
- 빠른 개발, 낮은 비용
-
마이크로서비스 내부 통신
- 서비스 간 API 호출
- 고급 기능 불필요
-
OAuth 2.0 / OIDC 인증
- JWT 토큰 기반 인증
- Cognito, Auth0 연동
-
비용 최적화
- 트래픽이 많은 API
- 단순 프록시 기능
HTTP API 아키텍처 예시:
[모바일 앱] → [API Gateway HTTP API]
│
├── JWT 검증 (네이티브)
│
▼
[Lambda] → [DynamoDB]
WebSocket API는 언제 사용할까?
작동 방식
WebSocket은 지속적인 양방향 연결을 유지합니다.
HTTP (요청-응답):
[클라이언트] ─── 요청 ──→ [서버]
[클라이언트] ←── 응답 ─── [서버]
(연결 종료)
WebSocket (양방향):
[클라이언트] ←──────────→ [서버]
지속적 연결 유지
(서버가 먼저 메시지 전송 가능)
적합한 사용 사례
-
실시간 채팅
- 메시지 즉시 전달
- 그룹 채팅
-
실시간 알림
- 주식 가격 업데이트
- 스포츠 경기 스코어
-
협업 도구
- 실시간 문서 편집
- 화이트보드 공유
-
온라인 게임
- 실시간 게임 상태 동기화
- 멀티플레이어 게임
-
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 시험 출제 포인트
- ✅ 비용 최적화: "간단한 API + 비용 절감 = HTTP API"
- ✅ API 키/조절: "외부 API 제공 + 사용량 제한 = REST API"
- ✅ 실시간 통신: "채팅, 알림, 게임 = WebSocket API"
- ✅ WAF 통합: "API 보호 + WAF = REST API"
- ✅ 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). 기능이 적은 대신 오버헤드도 적습니다.