RabbitMQ
EAI / MQ
HANDA개발
2022. 4. 7. 16:04
유통회사의 경우,
큰 곳이라서 가맹지원(본사직원용: 기준데이터, 발주재고관리, 매출data 등) / 점포경영(점장용) 별로
데이터베이스가 따로 있음.
EAI(Enterprise Application Integration 애플리케이션 통합을 위한 기술)
서로의 데이터를 동기화 시켜주기 위해 MQ를 많이 사용한다.
(MQ(Message Queue)로 데이터를 주고 받아 동기화시킴.
상용 IBM MQ / 오픈소스로는 rabbit MQ, active MQ등이 있음.)
그냥 queue로도 메시지들을 주고받을 수 있지만 이런 시스템을 사용하는 이유는 단순 메시지 전달이 아닌
받지 못하는 예외적인 상황이 발생한 경우 정보가 유실되지 않게 정보전달을 잠시 중단하고 메시지를
전달받을 수 있는 조건이 될때까지 기다리는 등 효율적인 데이터전달하는 추가적인 기능을
가지고 있기 때문이다.
MQ란?
메시지 기반의 미들웨어로 메시지를 이용하여 여러 어플리케이션, 시스템, 서비스들을 연결해주는 솔루션.
비동기 메시지를 사용하는 서비스들 사이에서 데이터를 교환해주는 역할을 한다.
- IBM MQ
- 가장 많이 사용되는 상용 MQ 제품으로 표준 JMS 메시징 기반으로 MQTT 프로토콜을 지원한다.
- Apache ActiveMQ
- Java 기반의 JMS Queue 를 지원하는 오픈소스로 MQTT, AMQP, OpenWire, STOMP 프로토콜을 지원한다.
- 다양한 언어를 지원하며 클러스터링이 가능하다. 단, 모니터링 도구는 없다.
- REST API를 통해 웹기반 메시징 API를 지원하며 Ajax를 통해 순수한 DHTML을 사용한 웹스트리밍 지원을 한다.
- Rabbit MQ
- 고성능을 목표로 AMQP 프로토콜을 사용하여 개발된 MQ 로 Erlang OTP 기반으로 개발되었다.
- 실시간 모니터링이 용이하고 다양한 언어 및 OS 지원, RabbitMQ 서버간 클러스터링이 가능하다.
- Kafka
- LinkedIn에서 구직정보들을 처리할수 있는 플랫폼으로 개발이 시작되었다.
- 실시간 로그 처리에 특화되어 설계된 시스템으로 개발되어 타 MQ 대비 TPS가 매우 우수하나 특화된 솔루션이기 때문에 타 MQ 솔루션에서제공하는 다양한 기능들은 제공되지 않는다.
- AMQP, JMS 이 아닌 단순 메시지 헤더를 이용한 TCP 통신이다.
- MQ는 broker가 producer 에게 메세지를 받아서 consumer에게 push해 주는 방식인데 반해, Kafka는 consumer가 broker로부터 직접 메시지를 가지고 가는 pull 방식으로 동작하기 때문에 consumer는 자신의 처리능력만큼의 메시지만 broker로부터 가져오기 때문에 최적의 성능을 낼 수 있다.
- 많은 데이터 전송과 최대 처리량을 유지하기에 대량 데이터 스트리밍에 적합하다.
- 상태 변경이 시간순으로 기록되어하는 응용 프로그램인 이벤트 소싱(Evenet Sourcing) 저장소로 적합하다.
다시 본론으로 돌아가면,
기업에서는 a라는 저장소가 있으면 a_EAI용 데이터저장소가 따로 있어서 동시에 2가지 db에 데이터를 저장해주고
각각의 EAI용 데이터 베이스를 통해 서로 다른 시스템의 db 데이터 정보를 주고 받는다.