← 질문 목록
#25깊이 0
메시지 큐를 두면 무엇을 얻고 무엇을 잃는가?
보내는 쪽과 받는 쪽의 시간을 떼어내는 대신 순서와 즉시성을 잃는다. 트래픽이 몰려도 받는 쪽이 자기 속도로 처리할 수 있게 되는 것이 가장 큰 이득이다.
직접 호출은 받는 쪽이 죽으면 보내는 쪽도 같이 실패한다. 큐를 끼우면 메시지가 쌓여 있다가 받는 쪽이 살아난 뒤에 처리된다. 배포 중에도 요청이 유실되지 않는다.
| 기준 | 직접 호출 | 큐 사용 |
|---|---|---|
| 받는 쪽이 죽으면 | 보내는 쪽도 실패 | 쌓였다가 나중에 처리 |
| 결과를 아는 시점 | 즉시 | 나중에. 따로 알려야 한다 |
| 순서 | 호출한 순서 | 파티션 안에서만 보장 |
대가가 분명하다. 결과를 즉시 못 준다. 주문이 접수됐다는 응답과 실제로 처리됐다는 사실 사이에 틈이 생기고, 그 틈을 화면이 설명해야 한다. 실패도 그 자리에서 안 보여서 따로 관측해야 한다.
중복 처리와 순서 보장도 함께 설계해야 한다. 대부분의 큐는 최소 한 번 전달을 보장하므로 같은 메시지가 두 번 올 수 있다. 받는 쪽이 멱등해야 하고, 순서가 필요하면 같은 키를 같은 파티션으로 보내야 한다.
추천 꼬리질문
관련 질문
- 분산 트랜잭션에서 Saga 패턴이 필요한 이유는?아키텍처 · 분산시스템Saga 패턴은 주로 메시지 큐를 이용한 비동기 이벤트 기반으로 구현되어 서비스 간의 느슨한 결합과 신뢰성 있는 상태 전이를 관리한다.
- 메시지 순서는 어디까지 보장되는가?아키텍처 · 분산시스템메시지 큐를 통한 비동기 통신 시 메시지 전달 순서 보장 문제는 핵심적인 고려 사항이다.
- 이벤트 소싱을 도입할 때의 트레이드오프는 무엇인가?아키텍처 · 분산시스템둘 다 이벤트를 쌓아 두고 나중에 소비하는 구조의 트레이드오프를 다룬다.
- 메시지 형식을 바꾸면 옛 소비자는 어떻게 되는가?아키텍처 · 분산시스템큐가 생산자와 소비자를 분리한다는 구조를 알아야 형식 변경이 소비자를 깨뜨리는 문제가 보인다.
- 게이트웨이를 두면 무엇을 얻고 무엇을 걱정해야 하는가?아키텍처 · 분산시스템