IoT 디바이스를 위한 MQTT 와 Kafka 결합

Dragony·2023년 8월 14일
0

Kafka

목록 보기
7/7

참고 사이트

Kafka vs MQTT

MQTT

  • pub/sub 메세징 프로토콜의 개방형 표준
  • MQTT는 제한된 장치 및 신뢰할 수 없는 네트워크를 포함하여 IoT Use case를 위해 구축되었음
  • 그러나 데이터 통합 및 데이터 처리는 X

Apache Kafka

  • IoT 플랫폼이 아니고, 이벤트 스트리밍 플랫폼임
  • 메세지 저장, 데이터 통합, 스트림 처리를 위한 확장 가능하고 안정적이며 탄력적인 실시간 플랫폼을 제공함

MQTT와 Kafka는 각각 장/단점이 있으며, 서로를 상호보완하며 사용 가능합니다.


MQTT를 언제 사용해야(하지 말아야) 할까요?

MQTT 장점

  • 경량 (Lightweight)
  • 연결이 좋지 않고(poor connectivity), 대기시간이 높은 시나리오를 위함 (e.g. 모바일 네트워크)
  • 높은 확장성과 가용성
  • ISO 표준
  • 대부분의 IoT 프로토콜
  • 모든 인프라 (edge, data center, public cloud) 에 배포 가능

MQTT 단점

  • 오직 pub/sub 메세징 처리만 가능하고, 스트리밍 프로세싱이나 데이터 통합 없음
  • 비동기 처리 (클라이언트가 오랫동안 offline 상태일 수 있음)
  • 이벤트 재처리 없음

Kafka를 언제 사용해야(하지 말아야) 할까요?

Kafka 장점

  • Pub/Sub Messaging, Streaming Processing, Data Integration -> 가능하다. (MQTT는 Pub/Sub만 가능하다.)
  • 높은 처리량과 고가용성
  • 장기 저장 가능
  • 이벤트 재처리 가능
  • 모든 인프라 (edge, data center, public cloud) 에 배포 가능

Kafka 단점

  • 안정적인 네트워크와 우수한 인프라 필요
  • keep alive, last will 또는 testment와 같은 IoT 관련 기능이 없음

많은 IoT 사용 사례에서 아키텍처는 두 기술을 결합합니다.



예시

HiveMQ, Apache Kafka 및 TensorFLow를 사용하여 100,000개의 IoT 장치에서 대규모 기계 학습 스트리밍


MQTT IoT 센서 데이터의 스트리밍 이상 감지를 위한 KSQL/ksqlDB용 딥 러닝 UDF

  • MQTT 프록시 + Apache Kafka(MQTT 브로커 없음)

  • Kafka Connect를 사용하는 대신 Confluent MQTT 프록시를 활용할 수 있습니다. MQTT 브로커 없이도 IoT 장치에서 직접 IoT 데이터를 통합할 수 있습니다.

  • 이 접근 방식에서는 Kafka Connect(hood에서 Kafka consumer 사용)의 풀 접근 방식을 사용하는 대신 Confluent MQTT 프록시를 통해 Kafka 브로커에 직접 데이터를 푸시합니다.

  • Load Balancer(Confluent REST 프록시와 유사)를 사용하여 MQTT 프록시를 쉽게 확장할 수 있습니다.

  • 중간에 추가적인 MQTT Broker가 필요하지 않다는 큰 장점이 있습니다.

profile
안녕하세요 :) 제 개인 공부 정리 블로그입니다. 틀린 내용 수정, 피드백 환영합니다.

0개의 댓글