피드로 돌아가기
Dev.toBackend
원문 읽기
Token Bucket 도입을 통한 API Burst Traffic 제어 및 DB 부하 방지
Implementing Token Bucket Rate Limiting for High-Volume Inventory APIs
AI 요약
Context
공개 API 엔드포인트 대상의 Brute-force 및 Scraping 봇으로 인한 Database Connection 고갈 위험 존재. Fixed Window 방식의 단순 카운터 적용 시 윈도우 경계 지점에서 트래픽이 집중되는 Burst 현상으로 인한 서버 성능 저하 발생.
Technical Solution
- Fixed Window의 경계 지점 트래픽 집중 문제를 해결하기 위한 Token Bucket 알고리즘 채택
- 최대 토큰 수량을 제한하는 Centralized Bucket 구조를 통한 Burst Traffic의 상한선 설정
- 일정 시간 간격으로 토큰을 자동 충전하는 메커니즘을 통해 지속 가능한 요청 처리량 보장
- Redis의 Multi-Exec Transaction을 활용한 토큰 확인 및 차감 과정의 원자성(Atomicity) 확보
- 토큰 소진 시 429 Too Many Requests 상태 코드를 즉시 반환하여 Core Server Thread 보호
실천 포인트
1. API 설계 시 단순 시간 기반 리셋 방식보다 유연한 Token Bucket 또는 Leaky Bucket 검토
2. 분산 환경에서의 Rate Limiter 구현 시 Redis와 같은 공유 저장소를 통한 상태 동기화 필요
3. 원자적 연산을 통해 Race Condition을 방지하고 정확한 토큰 차감 로직 구현