Message Queue를 사용하는 이유

박우민·2020년 12월 16일
0

AMQP를 구현한 MOM(Message Oriented Middleware) 시스템은 Kafka, RabbitMQ, Active MQ, AWS SQS, Java JMS 등이 존재한다.

시스템간의 연관이 많아지는 구조에서 (SOA, MSA 등) 서비스간 결합도를 낮추고, 비동기 요청, 성능, 안정성 등 여러가지 이점이 있어서 메시징 시스템을 사용하게 된다.

장/단점에 대해서 더 알아보면

서비스간의 결합성이 낮아지므로 각자의 비즈니스 로직에만 집중

메시지 처리 방식은 Message Broker에 위

각 서비스는 Client를 통해 메시지를 보내고 받기만 하면 됨

각 서비스는 비동기 방식으로 메시지를 보내기만 하면, Message Broker에서 순서 보장, 메시지 전송 보장등을 처리

메시징 시스템이 잠깐 다운되어도 각 서비스에는 직접적인 영향을 미치지 않음

단점

함수 호출, 공유메모리 사용 방식보다 메시징 시스템을 사용했을 때 호출 구간이 늘어나므로 네트워크 비용 발생

Message Broker 구축, 예를 들면 kafka 클러스터 구축에 필요한 금전, 인적자원에 대한 비용

어떨 때 사용하면 좋을까?

Failover
서버간 데이터를 주고 받을 때 항상 시스템 장애를 염두해두어야 하는데, 서버에 문제나 네트워크의 문제에 대한 Failover 할 수 있다.

서버 부하가 많은 작업
서버 부하가 많은 경우 원하는 만큼의 메세지를 소비하는 것이 가능하다.

부하 분산에 용이하다.
한 큐에 여러 consumer가 존재할 수 있기 때문에 부하 분산이 가능하고, Scaling 대응에 적합하다.

데이터 손실 방지
consumer가 broker에 처리 완료에 대한 응답을 주지 않은 경우(메세지 처리 중 문제가 발생하는 경우) 브로커는 큐에 메세지를 다시 넣어 처리할 수 있게 할 수 있음

profile
안녕하세요 Software Development Engineer 입니다.

0개의 댓글