일상생활에서 정보와 의견을 전달하기 위해서 사용되는 것처럼, 컴퓨터 공학의 경우, 프로그래밍에서 통신을 통해 정보를 주고받는 데이터를 의미한다.
이러한 메시지를 안전하고 효율적으로 전달하기 위한 소프트웨어 혹은 서비스를 의미한다. 메시지를 보내는 기능 외에도, 다음과 같은 추가적인 기능을 가지고 있다.
메시지 큐의 확장된 기능으로, 다수의 메시지를 운영 관리하기 위한 기술 혹은 아키텍처를 의미한다. 기존 메시지 큐의 1:1 통신 방법을 넘어, 광범위한 전송과 라우팅을 허용한다.
자세한 내용은 이전에 작성했던 메시지 큐와 메시지 브로커를 참조하자
일상생활에서 일련의 사건을 의미하는 것처럼, 컴퓨터 공학의 경우, 프로그래밍에서 시스템에서 발생하는 사건이나 상황을 의미한다.
메시지 브로커와 유사하게, 이벤트 브로커는 다수의 이벤트를 운영 관리하기 위한 기술 혹은 아키텍처를 의미한다.
메시지 브로커, 이벤트 브로커 모두 메시지 혹은 이벤트 통신을 위해 기술을 선택하기 보다는 MSA
아키텍처 상에서, 서버간의 통신 혹은 데이터 동기화를 목적으로 사용하는 경우가 많다. 더불어 두 가지 기술 모두 MSA
통신 체계를 구축하기 위한 공통적인 기능을 모두 수행할 수 있다.
실제 kafka
사용 시 이벤트
라는 말 보다는 메시지
를 보낸다는 경우가 더 많다.
그럼에도 불구하고 Kafka
가 이벤트 브로커로 분류되는 이유는 메시지 큐를 사용하지 않으며, Producer
의 이벤트 발행을 통해Consumer
에게 메시지를 전송하기 때문이다.
프로그래밍 전반에 사용되는 메시지 아키텍처는 대부분 비동기 통신을 사용하며, 더불어 메시지 브로커의 라우팅 기능이 확립되면서, 이벤트처럼 통신 상대를 명확히 지정할 이유가 사라졌다.
> 송신자와 수신자 기존 수행할 작업을 메시지 브로커에게 전가 했다고 볼 수 있다. 송신자가 통신을 보내기 위해 수신자를 파악할 이유가 사라진것이다.
이는 이벤트가 동작을 처리할 때 특정 작업 상대를 지정하지 않는다는 점에서 일정부분 비슷하여, 메시지 통신과 이벤트 통신의 경계가 모호해졌다고 볼 수 있다.
RestAPI
가 있다.상태변경
이 있다.MSA
와 같이, 수평적 확장이 가능하여, 대규모 데이터 통신 처리에 적합하다.RabbitMQ
의 경우 consumer
별 메시지 큐를 통해 메시지를 전송하는 전통적인 방식을 사용하며, Kafka
는 따로 메시지 큐를 구현하지 않고, 토픽을 기반으로 다수의 파티션을 활용한 데이터 스트림을 통해 메시지를 전송한다.Kafka
는 메시지 통신 TCP/IP
프로토콜을 사용하며, RabbitMQ
의 경우 AMQP
프로토콜을 사용한다.Kafka
는 초당 수백만 개, RabbitMQ
는 초당 수천개의 성능을 보여준다.
RabbitMQ
역시 다수의 브로커를 활용하면,Kafka
와 유사한 성능을 보일 수 있다.
RabbitMQ
는 효율적인 메시지 전달에 초점을 두어, 서비스에 다양한 기능을 구현하는 용도로 설계되었으며, Kafka
의 경우 실시간 데이터 처리에 초점을 두어, producer
의 이벤트 발행에 따라 대용량의 데이터를 빠르게 처리하기 위한 목적으로 설계되었다.참고
Message Driven vs Event Driven
메세지와 이벤트의 차이점은 무엇인가?
이벤트 기반 아키텍처와 메시지 기반 아키텍처
이벤트 (컴퓨팅)
Kafka이벤트-브로커-vs-RabbitMQ메시지-브로커
RabbitMQ와 Kafka - 메시지 대기열 시스템 간의 차이점 - AWS
카프카(kafka) vs RabbitMQ
[메시지 큐] Kafka, RabbitMQ 개념 및 비교