시스템 설계 · 중급
대용량 트래픽을 처리하는 분산 시스템에서 메시지 큐(Message Queue)가 필요한 이유와 주요 역할에 대해 설명하고, 메시지 큐 사용 시 얻을 수 있는 이점과 고려할 점을 이야기해 주세요.
힌트 · 생산자-소비자 패턴, 결합도 감소, 탄력성, 내구성 등을 이점으로 언급하고 메시지 순서 보장, 중복 처리 등을 고려사항으로 설명합니다.
비동기탄력성결합도 감소메시지 보장확장성
모범답안
분산 시스템에서 대용량 트래픽을 처리할 때 메시지 큐는 여러 중요한 역할을 합니다. 가장 큰 이유는 비동기 통신을 가능하게 하여 시스템의 결합도를 낮추고 확장성을 높여주기 때문입니다.
예를 들어, 주문 시스템에서 주문 접수 서비스가 메시지 큐에 주문 메시지를 발행하면, 결제 서비스, 배송 서비스 등은 큐에서 메시지를 가져와 각자의 작업을 처리합니다. 주문 접수 서비스는 다른 서비스의 상태와 상관없이 주문 메시지를 발행하고 자신의 역할만 수행하면 됩니다.
이러한 구조는 시스템의 탄력성을 향상시킵니다. 특정 서비스에 장애가 발생해도 메시지 큐는 메시지를 보관하고 있다가 서비스가 복구되면 전달하여 데이터 유실을 막을 수 있습니다.
하지만 메시지 큐를 사용할 때는 메시지 순서 보장, 중복 처리 방지, 메시지 유실 가능성 등을 고려해야 합니다. 메시지 순서가 중요한 경우에는 큐의 특성을 고려하여 설계해야 하고, 중복 처리를 막기 위해 메시지 ID를 활용하거나 멱등성을 보장하는 방식으로 구현해야 합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 대용량 트래픽 설계 면접 질문
- 여러 대의 서버로 트래픽을 분산하는 로드 밸런서의 주요 역할과 일반적인 로드 밸런싱 알고리즘 몇 가지를 설명하고, 각 알고리즘이 어떤 상황에 적합한지 비교 설명해 주세요.
- 대용량 트래픽 환경에서 데이터베이스의 읽기 성능을 향상시키기 위한 Read Replica(읽기 전용 복제본)의 동작 원리와 주요 고려사항에 대해 설명해 주세요.
- 웹 서비스에서 캐싱(Caching)을 적용할 때 고려할 수 있는 대표적인 캐싱 전략(예: Cache-aside, Write-through, Write-back)들을 설명하고, 각 전략이 어떤 상황에 적합한지 비교해 주세요.
- 시스템 확장 방식인 수평 확장(Horizontal Scaling)과 수직 확장(Vertical Scaling)의 개념을 설명하고, 각각의 장단점 및 실제 서비스 환경에서 어떤 기준으로 선택하게 되는지 비교 설명해 주세요.
- 대규모 웹 서비스를 설계할 때 서비스가 Stateless(무상태)여야 하는 이유와 Stateless 서비스를 구현하기 위한 일반적인 접근 방식에 대해 설명해 주세요.
- 대규모 사용자에게 콘텐츠를 빠르게 제공하기 위한 CDN(콘텐츠 전송 네트워크)의 기본 원리와 웹 서비스의 확장성 및 성능 향상에 어떻게 기여하는지 설명해 주세요.