이번엔 API Throttling 개념에 대해 정리하고자 한다.
1. 정의
- 클라이언트가 일정 시간 동안 호출할 수 있는 API 요청 수를 제한하는 것
2. 목적
- 서버 보호
> 트래픽 폭주 -> 서버 다운 방지
- 공정한 사용
> 특정 유저가 API 를 독점하는 것을 방지
> SaaS 서비스에서 중요
- 비용 절감
- 보안
> brute-force 공격, DDoS 완화
3. 대표 알고리즘
- Fixed Window
> 구현 쉬움
> 경계에서 burst 발생
- Sliding Window
> 요청 시간을 기준으로 계속 이동
> 더 정밀하고, 구현 복잡
- Token Bucket
> 토큰이 일정 속도로 채워짐
> 요청할 때 토큰 소비
> burst 허용 (유연함)
> 안정적인 트래픽 제어
- Leaky Bucket
> 일정 속도로만 요청 처리
> 큐 기반
> 트래픽 평탄화
4. 구현 방식
- 핵심 포인트 [ "누구 기준으로 제한할 것인가?" ]
> IP (가장 단순)
> User ID (로그인 기반)
> API Key (외부 서비스)
> JWT claim (MSA 에서 많이 사용)
- 저장소
> Redis
. 빠름 / TTL 지원 / 분산 환경 적합
5. 참고
- Rate Limiting 과의 비교
> Rate Limiting 은 일정 요청 수가 초과하면 차단하는 것이고, Throttling 은 속도를 늦추거나 제한하는 것
'IT > CS' 카테고리의 다른 글
| [CS] 테스트 커버리지란? (0) | 2026.06.12 |
|---|---|
| [CS] DDD(Domain-Driven Design) 란? (0) | 2026.06.03 |
| [기타] LDAP(Lightweight Directory Access Protocol) 란? (0) | 2026.02.16 |
| [CS] Front Proxy vs. Reverse Proxy (0) | 2025.10.03 |
| [CS] Rate Limit 이란? (0) | 2025.07.01 |