본문 바로가기
IT(Dev) Notes

Apache Kafka

by 미티치 2022. 9. 14.

Apache Kafka는 Event를 topic 별로 저장하는 MQ(Message Queue)입니다. 애플리케이션 간에 대용량 메시지를 교환하기 위해 사용되고, 분산환경에 특화되어 있는 Message Queue입니다.

 

Apache Kafka 등장배경

  • Publisher (발신자) : Kafka에게 원하는 메시지(데이터)를 전송, 메시지를 누가 받을지 신경쓰지 않음
  • Subscribe (수신자) : 원하는 topic을 구독하여 원하는 시점에 메시지를 가지고 옴

이를 개선하기 위해 Event Broker인 Kafka를 사용하게 되었고 Pub/Sub 구조를 통하여 발신자와 수신자는 메시지를 누가 보냈는지, 언제 받을지에 대한 고민을 하지 않고 메시지를 전달하는데만 초점을 맞추어 구현이 가능하게 되었습니다.

Event를 중앙에서 처리하는 Kafka가 등장하기 전에는 개별 애플리케이션들이 Point to Point 구조로 연결되어 있었습니다. 앞서 설명 드렸듯 Point to Point 구조의 서비스 연결은 스파게티 네트워크가 발생하여 복잡도가 증가하고, 파이프라인 관리가 어렵다는 단점이 있었습니다.

 

 

RabbitMQ와 Apache Kafka 비교

 

사실, Kafka와 같은 Event Broker가 출현하기 전에 이와 유사한 RabbitMQ가 있었습니다. RabbitMQ도 여러 서비스들의 메시지를 전달하는 역할을 위해 탄생하였으며 ‘메시지 발행자(Publisher)의 메시지를 소비자(Consumer)에게 원하는 방식으로 신뢰성 있게 전달’하는 목적을 정확히 수행하는데 초점이 맞추어져 있었습니다. 따라서 Consumer가 메시지를 소비하고나면 MQ에서는 메시지를 삭제하기 때문에 이후에는 메시지를 재생하거나 추적이 어렵다는 단점이 있습니다.

이에 반해 Kafka는 RabbitMQ에 비해 대용량 데이터를 처리할 수 있고, Event를 소비한 이후에도 저장하고 있기 때문에 메시지 재생이 가능하다는 장점이 있습니다.

 

 

'IT(Dev) Notes' 카테고리의 다른 글

CNCF, CloudEvents  (2) 2022.09.17
Apache Flink  (0) 2022.09.17
[요약] 데이터 3법 개정안  (0) 2021.08.20
C++ 개발자를 위한 Visual Studio 설치하는 방법  (0) 2020.08.08
객체의 필드에 직접 접근하면 안되는 이유  (0) 2017.03.24