본문 바로가기
기타 개념정리

Message Queue(MQ) 개념정리

by wakestand 2021. 1. 15.
반응형

Message Queue(MQ)는 매우 간단한 개념인데

메시지를 큐 방식으로 다른 서비스로 보내준다

 

MQ는 여러 시스템을 연결하는 솔루션으로

주로 사용되는 걸 볼 수 있는데

왜 사용하냐면 여러 서비스들의 언어, DB가 서로 다르기 때문에

해당 서비스들이 데이터를 교환하려고

언어를 통일할 수는 없지 않은가

 

따라서 MQ를 사용해 통신하게 되는데

언어는 다를지라도 JSON 타입으로 보낼 데이터를 만든 뒤

MQ를 사용해 다른 서비스로 보내는 식으로 사용하게 된다

여기에 MQ는 비동기식으로 동작하기 때문에

타 서비스에 맞출 필요 없이 메시지를 던져놓고

본인의 일을 계속 진행할 수 있게 된다

 

자주 보게 되는 예제는

여러 서비스 간 DB를 동기화하는 경우에

각 서비스별로 DB를 따로 가지고 있는 걸 볼 수 있다

주문에서는 NoSQL, 창고에서는 오라클, MySQL 같은..

 

특정 DB가 바뀌면

MQ가 JSON 타입으로 타 DB에 데이터를 보내서

DB의 정보를 맞춰주게 되는데

 

온라인 쇼핑몰에서 주문이 들어온다 치면

주문 쪽 DB에서 재고를 감소시키면서 MQ로 메시지를 보내

창고 쪽 재고도 똑같이 감소시키게 된다

 

주의할 점은 비동기 통신이기 때문에

송수신 과정에서 에러가 날 경우

주문에서는 재고가 감소했는데

창고에서는 메시지를 받는 과정에서 에러가 났기 때문에

 

주문과 창고의 재고가 달라지는 현상도 발생하는데

이러면 뭐 에러 수정 후 다시 보내서 해결하거나

혹은 수동으로 DB Update 쿼리를 날려 해결한다

 

마지막으로 MQ의 예제로는

IBM MQ, RabbitMQ, Apache Kafka 등이 있다

반응형

댓글