🤨 Kafka란?
Apache Kafka는 고성능 데이터 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 오픈 소스 분산 이벤트 스트리밍 플랫폼 (distributed event streaming platform)입니다.

🤔 이벤트 스트리밍 플랫폼 이란?
Kafka는 세 가지 주요 기능을 결합하여 end-to-end 이벤트 스트리밍을 구현할 수 있습니다.
- 이벤트 스트림을 지속적으로 발행(publish-write), 구독(subscribe-read) 합니다.
- 이벤트 스트림을 원하는 만큼 내구성 있고 안정적으로 저장(store) 합니다 . KafkaCluster(broker)
→ 확장성이 뛰어나고 탄력적인 장점을 가지고 있습니다. 따라서, 가상머신, 컨테이너, 클라우드등에 배포가 가능합니다.
🎃 Kafka의 장점
Kafka는 이벤트 스트리밍 플랫폼으로서 메세지큐처럼 메시지 브로커 역할을 할 수 있도록 구현하여 사용도 가능하고, 그 외에 추가로 장점들이 많습니다.
- 분산처리에 효과적이다.
- 대용량 실시간 로그 처리에 특화되어있다.
- 파일 시스템에 메세지를 저장하여 영속성이 보장됩니다.
- 장애가 발생하면 데이터 복구 가능
- 메세지가 많아져도 성능 저하가 많이 없음.
🍊 Kafka와 MQTT
예전 프로젝트에 메세지큐 방식인 MQTT를 사용해본 적 있다.
Kafka에 대해 찾아보던 중 MQTT와 비슷한 점이 많이 보이길래 차이점을 조금 정리해보았다.
🍂 MQTT
MQTT는 Pub/Sub 기반의 메세징 프로토콜입니다.(IoT에 특화)
MQTT 장점
- 최소한의 전력으로 통신가능한 프로토콜이다.
- 지연시간이 큰 시나리오에 적합하다.
- 확장성이 좋고, 가용성이 높다.
- wild card 사용이 가능하다
MQTT 단점
- Streaming Processing안된다
- Data Integration안된다.
→ Pub/Sub Messaging만 가능...
MQTT는 이럴 때 사용하는 게 좋다.
- network가 좋지 않아서 최소한의 전력만 가능할 때
- 가벼운 Push-based messaging solution이 필요할때
🍃 Kafka
kafka 장점
- Pub/Sub Messaging, Streaming Processing, Data Integration 다 가능하다.
- 고효율, 큰 스케일, 높은 가용성을 가지고 있다.
- Data Center, Public Cloud와 같은 모든 인프라에서 배포 가능하다.
- producer들은 Kafka에게 데이터를 쓰고, consumer는 Kafka로 데이터를 읽으면 되므로 producing, consuming system을 통합할수 있다.
kafka 단점
- 좋은 네트워크와 인프라가 필요하다.
- 기본 브로커가 3개 이상 필요하므로 (1개로 사용가능하긴 하지만..) 서버 비용이 든다.
- wild card topic selection을 지원하지 않는다. 즉, 한번에 하나의 topic만 선택이 가능하다.
🧸 느낀 점
MQTT는 뭔가 IoT Use Case에 특화되어잇으니까, Kafka와 조합하면, 엄청 좋다는 글을 봤다. (오호라..)
추후에 프로젝트 주제가 맞는다면, 한번 둘을 동시에 사용해보고 싶다는 생각이 들었다.
kafka connect에 대해서도 알아보시면 좋을 거 같아요~
그리고 kafka를 직접 운용해보니 말씀해주신 리소스를 많이 차지한다는 장점이 크게 와닿더라구요. aws ec2 free tier 로는 운용이 불가 했었습니다