패스잇
시스템 설계 · 심화

분산 환경에서 공정하고 효율적인 API Rate Limiting을 구현하기 위한 다양한 알고리즘(예: 토큰 버킷, 리키 버킷, 고정 윈도우, 슬라이딩 로그 윈도우)을 비교 분석하고, 특정 사용자의 버스트 트래픽을 허용하면서도 시스템 전체의 안정성을 유지하기 위한 고급 전략을 제시하시오.

힌트 · 각 알고리즘의 특징과 장단점을 설명하고, 분산 환경에서의 동기화 문제, 클라이언트별/엔드포인트별 정책 적용, 그리고 오버로드 방지 전략을 포함합니다.

분산 환경Rate Limiting토큰 버킷리키 버킷슬라이딩 윈도우

모범답안

API Rate Limiting 알고리즘 선택은 시스템 요구사항에 따라 달라집니다. 토큰 버킷은 구현이 간단하고 버스트 트래픽을 처리하기 용이하지만, 리키 버킷은 트래픽을 더 균일하게 조절합니다. 고정 윈도우는 단순하지만 윈도우 경계에서 트래픽이 몰릴 수 있고, 슬라이딩 윈도우는 더 정확하지만 계산 복잡도가 높습니다.

분산 환경에서는 Redis와 같은 중앙 집중식 저장소를 사용하여 Rate Limit 정보를 공유해야 합니다. 클라이언트별/엔드포인트별 정책을 적용하려면 각 키에 대한 Rate Limit 설정을 저장하고 관리해야 합니다.

버스트 트래픽을 허용하면서 시스템 안정성을 유지하기 위해선, 토큰 버킷과 함께 Circuit Breaker 패턴을 적용할 수 있습니다. 특정 사용자의 요청이 실패율을 넘어서면 Circuit Breaker가 작동하여 시스템 과부하를 방지합니다. 또한, 우선순위 큐를 사용하여 중요한 요청을 먼저 처리하는 것도 좋은 방법입니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 API 설계 면접 질문

← API 설계 면접 질문 전체 보기