API를 운영하다 보면 트래픽이 갑자기 몰려 서버에 부하가 걸리는 상황을 종종 겪게 된다.
이럴 때 보통은 코드 레벨에서 캐시를 추가하거나, 비동기 처리로 대응하려고 하지만, 이런 방식만으로는 한계가 있다.
그래서 이번엔 코드가 아니라, 그보다 한 단계 더 높은 레벨(예: 인프라나 API 게이트웨이)에서
어떻게 트래픽을 제어하고 방어할 수 있을지 고민하던 중, API7.ai에서 잘 정리된 아티클을 발견하게 되었다.
Rate Limiting과 Throttling이라는 개념을 중심으로, API를 어떻게 안정적으로 보호하고 남용을 막을 수 있는지를 다루고 있어서, 그 내용을 번역하고 정리해봤다.
✅ 소개
API는 디지털 고속도로와 같으며, 트래픽 규칙 없이 운용되면 서버 과부하, 보안 취약점, 사용자 불만이 발생합니다.
Alibaba Cloud의 2023년 설문조사에 따르면 개발자 78%가 API 남용을 주요 보안 문제로 꼽았습니다.
이를 방지하기 위해 사용하는 기술이 바로 Rate Limiting과 Throttling입니다.
✅ 문제: 통제되지 않는 API 트래픽
| 문제점 | 설명 |
|---|
| 서비스 중단 위험 | 한 사용자가 수백만 요청을 보내면 서버가 마비될 수 있음 |
| 보안 위협 | 무차별 대입 공격(Brute-force), DDoS 공격 |
| 사용자 경험 저하 | 정당한 사용자도 지연이나 오류를 겪게 됨 |
✅ 용어 정리
📌 Rate Limiting (요청 수 제한)
- 정해진 시간 안에 보낼 수 있는 요청 수 제한
- 예: 분당 100건 요청 허용
- 주요 용도:
- DDoS 방어 (예: 트위터는 앱당 분당 150만 건 제한)
- 프리미엄/프리 유저 차등 적용
📌 Throttling (요청 속도 제한)
- 초과 요청을 차단하지 않고 느리게 처리
- 예: 블랙프라이데이처럼 요청이 몰릴 때 점진적으로 응답
- 주요 용도:
- 트래픽 급증 완화
- 우선순위 요청(예: 결제 API) 처리
✅ 주요 차이점
| 항목 | Rate Limiting | Throttling |
|---|
| 접근 방식 | 제한 초과 시 차단 | 제한 초과 시 지연 |
| 용도 | 남용 방지 | 일시적 부하 조절 |
| 사용자 경험 | 429 오류 반환 | 대기 후 처리됨 |
✅ 왜 중요한가?
✔ 남용 및 공격 방지
- LinkedIn: 로그인 시도 시간당 5회 제한 → 무차별 대입 차단
- Cloudflare: 2023년 3분기에 1,280만 DDoS 차단
✔ 공정한 사용 보장
- Zoom: 일반 100만 건/월, 기업 1천만 건/월 API 요청 허용
- AWS Lambda: 요청당 과금 → 무제한 사용 시 요금 폭탄 가능
✔ SLA 및 규정 준수
- Shopify: 분당 100건으로 SLA 99.99% 보장
✅ Rate Limiting 전략
| 종류 | 설명 | 예시 |
|---|
| Key 기반 | API Key로 제한 | Stripe: 초당 100건 |
| IP 기반 | IP당 요청 제한 | GitHub: 인증 없는 IP는 시간당 60건 제한 |
| 사용자 기반 | 유저 역할별 차등 | HubSpot: 무료 100건/시, 유료 10,000건/시 |
| 동시 연결 제한 | 연결 수 제한 | AWS RDS: 동시 4만 커넥션 제한 |
✅ 알고리즘 예시
1. Token Bucket
- 일정 수의 토큰을 소비하며 요청 처리
- 토큰은 일정 속도로 리필됨
- 예: Cloudflare → 트래픽 급증에도 일정 처리
2. Leaky Bucket
- 고정 속도로 요청 처리, 넘치면 폐기
- 예: RabbitMQ → 큐 폭주 방지
✅ 구현 시 모범 사례
| 항목 | 권장 사항 |
|---|
| 현실적인 제한 설정 | Netflix: 트래픽 시뮬레이션으로 최적값 설정 |
| 명확한 커뮤니케이션 | X-RateLimit-Limit, Retry-After 헤더 반환 |
| 지속적인 모니터링 | Prometheus, Datadog 등으로 트래픽 추적 |
| 우아한 오류 메시지 | ❌ 단순 에러 → ✅ 60초 후 재시도하세요 등 안내 제공 |
✅ 실제 사례
| 서비스 | 제한 방식 |
|---|
| Google Maps | 프로젝트당 하루 10만 건 지오코딩 제한 |
| GitHub | 인증 없음: 시간당 60건, 인증됨: 5천 건 |
| Outline.com | PDF 변환 API: 분당 5건 제한 (GPU 부담 때문) |
| Walmart | 초당 2건 제한 → 가격 스크래핑 방지 목적 |
✅ 사용 가능한 도구
API Gateway
| 도구 | 설명 |
|---|
| AWS API Gateway | 토큰 버킷 방식, Lambda 인증자 연동 |
| Azure API Management | 정책 기반 제한 |
| Kong | 플러그인으로 IP 기반 제어 |
오픈소스 & 클라우드
| 종류 | 설명 |
|---|
| API7 Cloud | 모든 클라우드 통합 관리 |
| Ambassador | 쿠버네이티브, JWT 기반 제어 |
| Apache APISIX | Lua 플러그인 기반 제어 가능 |
✅ 미래 동향
- AI 기반 Throttling: Azure는 ML로 이상 트래픽 탐지
- 예측 기반 자동 조절: Google Cloud AutoML로 트래픽 예측
- 표준화: OpenAPI 문서에
x-rate-limit 같은 확장 필드 사용 증가
- 서버리스 연동: AWS Lambda는 동시 실행 제한을 통해 자동 Throttling 가능
✅ 결론
Rate Limiting과 Throttling은 API 안정성과 보안을 위한 핵심 전략입니다.
올바른 알고리즘 선택, 도구 활용, 정책 설계로 서비스 신뢰성 확보 및 비용 절감이 가능합니다.
API 중심 아키텍처가 증가하는 시대에선 필수적인 요소입니다.