Infra/Info

Kafka 개념 정리

Hyeon Gu 2024. 4. 25. 00:06

메시지 큐의 근본, 메시지 지향 미들웨어 (Message Oriented Middleware)

  • 메시지 큐는 데이터의 송수신을 비동기 메시지를 사용하는 다른 응용 프로그램 간에 의미합니다.
  • 이를 구현한 시스템을 메시지 큐(Message Queue, MQ)라고 합니다.

그래서 메시지 큐가 무엇인가요?

  • 프로그래밍에서 MQ는 프로세스 또는 프로그램 인스턴스가 데이터를 서로 교환할 때 사용하는 방법입니다.
    • 프로세스
    • 프로그램 인스턴스
  • 데이터를 교환할 때 관리하는 메시지 큐를 이용하는 것이 특징입니다.

메시지 큐의 장점

  • 비동기: Queue에 넣은 데이터를 나중에 처리할 수 있습니다.
  • 비동조: Application과 분리됩니다.
  • 탄력성: 일부가 실패할 경우 전체에 영향을 미치지 않습니다.
  • 과잉: 실패할 경우 재실행이 가능합니다.
  • 보증: 작업이 처리된 것을 확인할 수 있습니다.
  • 확장성: 다수의 프로세스가 큐에 메시지를 보낼 수 있습니다.
  1. 대용량 데이터를 처리하기 위한 배치 작업이나 채팅 서비스, 비동기 데이터 처리에 사용합니다.
  2. 기존에 분산되어 있던 데이터 처리를 한 곳에 집중하여 메시지 브로커를 두고, 필요한 노드에 작업을 분산시키는 것이 목적입니다.

오픈 소스 메시지 큐

  • RabbitMQ, ActiveMQ, ZeroMQ, Kafka

그 중 Kafka만 정리해 보도록 합시다.

  1. 대용량의 실시간 로그 처리에 특화되어 설계된 메시징 시스템입니다.
  2. 기존 범용 메시지 시스템 대비 TPS가 매우 우수합니다.
  3. 특화된 시스템이기 때문에 범용 메시징 시스템에서 제공하는 다양한 기능들이 제공되지 않습니다.

⇒ 분산 시스템을 기본으로 설계하여 기존 메시징 시스템에 비해 분산 및 복제 구성을 손쉽게 가능합니다. TCP 기반의 프로토콜을 사용하여 프로토콜에 의한 오버헤드를 감소시킵니다.

Producer가 Broker에게 다수의 메시지를 전송할 때, 각 메시지를 개별적으로 전송해야하는 기존 메시징 시스템과 달리, 다수의 batch 형태로 Broker에게 한 번에 전달할 수 있어 라운드 트립 횟수를 줄일 수 있습니다.

  • 라운드 트립

기존의 메시징 시스템에서는 Broker가 Consumer에게 메시지를 push 해 주는 방식입니다. Kafka는 Consumer가 Broker로부터 직접 메시지를 가져오는 pull 방식으로 동작합니다.

⇒ Consumer는 자신의 처리 능력만큼의 메시지만 Broker로부터 가져오기 때문에 최적의 성능을 낼 수 있습니다.