RabbitMQ 도입 → 동기/비동기 기준 분리 → 로그 상관 ID
서비스 간 통신이 복잡해지면서 메시지 브로커를 미들웨어로 쓰는 설계를 처음 도입했습니다. 레거시 시스템과 신규 API가 직접 호출로 얽혀 있었는데, RabbitMQ를 중간에 두고 프로듀서·컨슈머를 분리하니 한쪽이 다운돼도 메시지가 큐에 남아 재처리가 가능해졌습니다. 레이턴시가 중요한 경로는 직접 REST 호출을 유지하고, 지연이 허용되는 이벤트성 처리는 메시지 큐로 분리하는 기준을 구분하는 것이 가장 어려운 판단이었습니다. 프로토콜 변환이 필요한 구간에서는 gRPC → REST 변환 레이어를 얇게 만들었고, 그 레이어가 단일 장애점이 되지 않도록 스테이트리스로 유지했습니다. 미들웨어는 편리하지만 디버깅 경로가 길어지는 단점이 있어서 로그 상관 ID를 처음부터 설계에 넣는 게 중요하다고 생각합니다.