Infra/Info
Kafka 개념 정리
Hyeon Gu
2024. 4. 25. 00:06
메시지 큐의 근본, 메시지 지향 미들웨어 (Message Oriented Middleware)
- 메시지 큐는 데이터의 송수신을 비동기 메시지를 사용하는 다른 응용 프로그램 간에 의미합니다.
- 이를 구현한 시스템을 메시지 큐(Message Queue, MQ)라고 합니다.
그래서 메시지 큐가 무엇인가요?
- 프로그래밍에서 MQ는 프로세스 또는 프로그램 인스턴스가 데이터를 서로 교환할 때 사용하는 방법입니다.
- 프로세스
- 프로그램 인스턴스
- 데이터를 교환할 때 관리하는 메시지 큐를 이용하는 것이 특징입니다.
메시지 큐의 장점
- 비동기: Queue에 넣은 데이터를 나중에 처리할 수 있습니다.
- 비동조: Application과 분리됩니다.
- 탄력성: 일부가 실패할 경우 전체에 영향을 미치지 않습니다.
- 과잉: 실패할 경우 재실행이 가능합니다.
- 보증: 작업이 처리된 것을 확인할 수 있습니다.
- 확장성: 다수의 프로세스가 큐에 메시지를 보낼 수 있습니다.
- 대용량 데이터를 처리하기 위한 배치 작업이나 채팅 서비스, 비동기 데이터 처리에 사용합니다.
- 기존에 분산되어 있던 데이터 처리를 한 곳에 집중하여 메시지 브로커를 두고, 필요한 노드에 작업을 분산시키는 것이 목적입니다.
오픈 소스 메시지 큐
- RabbitMQ, ActiveMQ, ZeroMQ, Kafka
그 중 Kafka만 정리해 보도록 합시다.
- 대용량의 실시간 로그 처리에 특화되어 설계된 메시징 시스템입니다.
- 기존 범용 메시지 시스템 대비 TPS가 매우 우수합니다.
- 특화된 시스템이기 때문에 범용 메시징 시스템에서 제공하는 다양한 기능들이 제공되지 않습니다.
⇒ 분산 시스템을 기본으로 설계하여 기존 메시징 시스템에 비해 분산 및 복제 구성을 손쉽게 가능합니다. TCP 기반의 프로토콜을 사용하여 프로토콜에 의한 오버헤드를 감소시킵니다.
Producer가 Broker에게 다수의 메시지를 전송할 때, 각 메시지를 개별적으로 전송해야하는 기존 메시징 시스템과 달리, 다수의 batch 형태로 Broker에게 한 번에 전달할 수 있어 라운드 트립 횟수를 줄일 수 있습니다.
- 라운드 트립
기존의 메시징 시스템에서는 Broker가 Consumer에게 메시지를 push 해 주는 방식입니다. Kafka는 Consumer가 Broker로부터 직접 메시지를 가져오는 pull 방식으로 동작합니다.
⇒ Consumer는 자신의 처리 능력만큼의 메시지만 Broker로부터 가져오기 때문에 최적의 성능을 낼 수 있습니다.