메시지 브로커

·2023년 5월 6일
0

개발 지식

목록 보기
67/96
post-thumbnail

메시지 브로커

독립되어 있는 마이크로 서비스 간의 통신을 위해 필요하다. 쇼핑몰을 예로 든다면, 상품을 결제하는 경우, 결제 내역만 변경되는 것이 아니라, 알림을 함께 보내고, 장바구니에 있다면 이를 제거해주고, 배송 상태를 생성하여 현재 상황을 중개하도록 해야한다.

독립된 서비스 간 여러 작업이 진행되어야 하는 경우

이러한 경우, 해결방법은 2가지이다. 서버측에서 해결을 보던지, 아니면 프론트에서 연속된 요청으로 해결하는 것이다. 단 프론트에서 연속된 요청을 보내는 방법은 여러 단점이 존재한다. 요청횟수를 줄이기 위해, 캐시나 전역 라이브러리 설계를 잘 해야할 것이며, 모든 요청마다 프론트와 상호작용을 하는 것은 그다지 업무 효율성이 좋다고 말할 수 없다. 당연히 클라이언트에서 제어해야하는 부분이 커지니 고객측면에서는 앱 자체가 무거워지고 느려질 수 밖에 없다고 생각한다.

그렇기에 서버끼리 서로 이벤트 요청을 수행하여 임의의 이벤트에 대한 후속 조치를 이행한다. 단 지금의 독립된 형태를 계속 유지하면서 말이다. 이를 위한 방법이 메시지 브로커이다. 메시지 브로커는 각 서비스들이 비동기적으로 메시지를 주고 받을 수 있도록 중간 매개체 역할을 한다.

사용방식

메시지 브로커를 통해 각 마이크로 서비스는 메시지를 발행(Publish)하거나 구독(Subscribe) 할 수 있다. 임의의 메시지를 발행하는 경우, 해당 메시지를 구독하고 있는 서비스에 이를 받아 이어지는 자신의 해야할 일을 진행하는 것이 가능하다.

장점

메시지 브로커를 사용하면 직접적으로 서비스에게 요청을 하는 방식이 아니기 때문에 서비스 간 결합도를 낮추는 것이 가능하다. 또한 대량의 메시지 처리와 더불어 로드 밸런싱, 에러 핸들링 등 다양한 기능을 제공해주기 때문에, 메시지 브로커를 통해 서버 간 통신을 많이 사용하는 편이다.

profile
새로운 것에 관심이 많고, 프로젝트 설계 및 최적화를 좋아합니다.

0개의 댓글