패스잇
시스템 설계 · 심화

특정 이벤트 발생 시(예: 서비스 오픈, 인기 상품 출시) 수많은 사용자가 동시에 시스템에 접근하여 발생하는 "Thundering Herd" 문제에 대해 설명하고, 이를 효과적으로 방지하거나 완화하기 위한 아키텍처적 접근 방식과 구체적인 기술적 해결책들을 제시해 주세요.

힌트 · 캐싱 계층 강화, 메시지 큐를 통한 요청 분산, 분산 락을 이용한 동시성 제어, 그리고 백프레셔(Backpressure) 적용을 고려할 수 있습니다.

Thundering Herd캐싱Rate LimitingCircuit Breaker로드 밸런싱

모범답안

"Thundering Herd" 문제는 특정 이벤트 발생 시 다수의 클라이언트가 동시에 동일한 리소스에 접근하여 시스템 과부하를 일으키는 현상입니다. 이를 해결하기 위해 몇 가지 아키텍처적 접근 방식과 기술적 해결책을 고려할 수 있습니다.

첫째, 캐싱 계층을 강화하여 원본 서버에 대한 요청을 줄입니다. Redis나 Memcached와 같은 인메모리 캐시를 활용하여 자주 요청되는 데이터를 캐싱하고, 캐시 만료 시간을 적절하게 설정하여 원본 서버의 부담을 최소화합니다.

둘째, 메시지 큐를 사용하여 요청을 비동기적으로 처리합니다. Kafka나 RabbitMQ와 같은 메시지 큐를 도입하여 요청을 큐에 쌓아두고, 백엔드 서버가 순차적으로 처리하도록 하여 시스템 부하를 분산합니다.

셋째, Rate Limiting과 Circuit Breaker 패턴을 적용하여 시스템을 보호합니다. Rate Limiting을 통해 특정 시간 동안 허용되는 요청 수를 제한하고, Circuit Breaker를 통해 장애가 발생한 서비스에 대한 요청을 차단하여 시스템 전체의 안정성을 유지합니다.

넷째, 로드 밸런싱을 통해 트래픽을 여러 서버에 분산합니다. L4 또는 L7 로드 밸런서를 사용하여 트래픽을 여러 백엔드 서버에 균등하게 분배하고, 서버의 가용성을 높입니다.

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

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

함께 보는 대용량 트래픽 설계 면접 질문

← 대용량 트래픽 설계 면접 질문 전체 보기