시스템 설계 · 심화
분산 환경에서 공정하고 효율적인 API Rate Limiting을 구현하기 위한 다양한 알고리즘(예: 토큰 버킷, 리키 버킷, 고정 윈도우, 슬라이딩 로그 윈도우)을 비교 분석하고, 특정 사용자의 버스트 트래픽을 허용하면서도 시스템 전체의 안정성을 유지하기 위한 고급 전략을 제시하시오.
힌트 · 각 알고리즘의 특징과 장단점을 설명하고, 분산 환경에서의 동기화 문제, 클라이언트별/엔드포인트별 정책 적용, 그리고 오버로드 방지 전략을 포함합니다.
분산 환경Rate Limiting토큰 버킷리키 버킷슬라이딩 윈도우
모범답안
API Rate Limiting 알고리즘 선택은 시스템 요구사항에 따라 달라집니다. 토큰 버킷은 구현이 간단하고 버스트 트래픽을 처리하기 용이하지만, 리키 버킷은 트래픽을 더 균일하게 조절합니다. 고정 윈도우는 단순하지만 윈도우 경계에서 트래픽이 몰릴 수 있고, 슬라이딩 윈도우는 더 정확하지만 계산 복잡도가 높습니다.
분산 환경에서는 Redis와 같은 중앙 집중식 저장소를 사용하여 Rate Limit 정보를 공유해야 합니다. 클라이언트별/엔드포인트별 정책을 적용하려면 각 키에 대한 Rate Limit 설정을 저장하고 관리해야 합니다.
버스트 트래픽을 허용하면서 시스템 안정성을 유지하기 위해선, 토큰 버킷과 함께 Circuit Breaker 패턴을 적용할 수 있습니다. 특정 사용자의 요청이 실패율을 넘어서면 Circuit Breaker가 작동하여 시스템 과부하를 방지합니다. 또한, 우선순위 큐를 사용하여 중요한 요청을 먼저 처리하는 것도 좋은 방법입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 API 설계 면접 질문
- RESTful API 설계에서 HATEOAS(Hypermedia as the Engine of Application State) 원칙을 실질적으로 적용했을 때의 이점과 직면할 수 있는 기술적, 운영적 어려움은 무엇이며, 이러한 어려움을 극복하고 HATEOAS를 효과적으로 활용하기 위한 구체적인 방안을 제시하시오.
- 마이크로서비스 아키텍처에서 API Gateway가 단순한 라우팅 기능을 넘어, 서비스 메시(Service Mesh) 환경과 연계하여 고급 보안 정책 적용, 트래픽 관리(서킷 브레이커, 타임아웃), 데이터 변환 및 집계 등의 역할을 수행하도록 설계하는 방안에 대해 논하시오.
- 동기식 REST API와 비동기식 이벤트 기반 API를 혼합하여 사용하는 하이브리드 아키텍처를 설계할 때 고려해야 할 핵심 요소들은 무엇이며, 일관성 모델(예: 최종 일관성) 및 오류 처리, 모니터링 측면에서 발생할 수 있는 도전 과제와 해결 전략을 설명하시오.
- 복잡한 데이터 모델과 다양한 클라이언트 요구사항을 가진 대규모 서비스에서 GraphQL을 도입했을 때 REST API 대비 얻을 수 있는 이점과 발생하는 새로운 아키텍처적 도전 과제(예: 캐싱, N+1 문제, 보안, 모니터링)는 무엇이며, 이들을 효과적으로 해결하기 위한 방안을 설명하시오.