From REST to gRPC to Messaging: SCALING Microservices the Right Way!
- 비동기 메시징은 서비스 간 즉각적인 응답 없이 메시지를 교환하여 클라이언트의 블로킹을 방지합니다. 🚀
- 대부분의 시스템은 Kafka, RabbitMQ 같은 메시지 브로커를 사용하여 메시지를 안정적으로 라우팅합니다. 🌉
- 메시지는 메타데이터(헤더)와 실제 데이터(바디)로 구성되며, 문서, 커맨드, 이벤트 세 가지 주요 유형이 있습니다. ✉️
- 메시지 채널은 송신자와 수신자를 연결하며, '점대점(Point-to-Point)'과 '발행-구독(Publish-Subscribe)' 두 가지 방식으로 메시지를 전달합니다. 🔗
- 비동기 요청-응답은 클라이언트가 요청 메시지에 ID와 회신 주소를 포함하고, 서비스가 처리 후 해당 주소로 상관관계 ID를 포함한 응답을 보내는 방식으로 작동합니다. 🔄
- 브로커 없는 메시징은 낮은 지연 시간을 제공하지만, 서비스 위치 인지 및 안정성 구현의 복잡성 등의 단점이 있습니다. 🚫
- 브로커 기반 메시징은 신뢰할 수 있는 전달, 느슨한 결합, 높은 가용성을 제공하여 대부분의 대규모 시스템에 적합하나, 운영 오버헤드가 따릅니다. 🛡️
- 다양한 메시지 브로커는 채널 개념을 다르게 구현하지만, 대부분 점대점 및 발행-구독 통신을 지원합니다. 🛠️
- 메시지 브로커는 느슨한 결합, 메시지 버퍼링, 다양한 통신 패턴 지원 등 마이크로서비스 아키텍처에 강력한 이점을 제공합니다. ✨
- 단점으로는 브로커가 병목 지점이 될 수 있고, 고가용성 설정 및 운영 오버헤드가 필요합니다. ⚠️
- 확장 가능하고 탄력적인 마이크로서비스를 위해 비동기 통신 시 메시지 브로커 기반 아키텍처가 권장됩니다. ✅
데브허브 | DEVHUB | From REST to gRPC to Messaging: SCALING Microservices the Right Way!