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 등이 있다
'기타 개념정리' 카테고리의 다른 글
스택 힙 메모리 개념 차이점 정리 (0) | 2021.01.19 |
---|---|
JSON 개념 및 예제 (0) | 2021.01.16 |
쿼리를 대문자로만 쓰는 이유 (0) | 2021.01.15 |
RESTful API 개념정리 (0) | 2021.01.12 |
이클립스에서 JRE만으로도 코딩이 가능한 이유 (0) | 2020.11.10 |
댓글