패스잇
시스템 설계 · 심화

마이크로서비스 아키텍처 환경에서 특정 서비스의 과부하를 방지하고 전체 시스템의 안정성을 유지하기 위한 Rate Limiting과 Circuit Breaking 패턴을 설명하고, 각각의 구현 방식과 적용 시 고려해야 할 사항들(예: 분산 환경에서의 동기화, 임계치 설정)에 대해 논해주세요.

힌트 · 토큰 버킷, 리키 버킷 알고리즘과 폴리(Polly), Hystrix 같은 라이브러리를 예시로 들 수 있으며, 분산 환경에서의 중앙 집중식 제어와 적절한 임계치 설정이 중요합니다.

Rate LimitingCircuit Breaker분산 환경 동기화임계치 설정Fallback 처리

모범답안

마이크로서비스 환경에서 안정성을 확보하기 위해 Rate Limiting과 Circuit Breaking은 필수적인 패턴입니다.

Rate Limiting은 특정 서비스에 대한 요청 수를 제한하여 과부하를 방지합니다. 구현 방식으로는 토큰 버킷, 리키 버킷 알고리즘 등이 있습니다. 분산 환경에서는 Redis와 같은 중앙 집중식 저장소를 사용하여 요청 수를 동기화해야 합니다. 중요한 것은 적절한 임계치를 설정하는 것입니다. 너무 낮으면 정상적인 사용자를 제한하고, 너무 높으면 과부하를 막을 수 없습니다.

Circuit Breaking은 서비스 장애 시 연쇄적인 장애를 막기 위한 패턴입니다. 폴리(Polly)나 Hystrix 같은 라이브러리를 사용하여 구현할 수 있습니다. Circuit Breaker는 서비스 호출 실패 횟수가 임계치를 넘으면 회로를 차단하고, Fallback 처리를 통해 사용자에게 오류를 숨기거나 대체 응답을 제공합니다. 회로 차단 후에는 주기적으로 서비스 상태를 확인하여 복구되면 회로를 다시 연결합니다. 임계치 설정은 서비스의 특성과 예상되는 장애율을 고려하여 신중하게 결정해야 합니다.

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

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

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

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