[IoT] MQTT -> Kafka를 이용한 데이터 파이프라인 구축하기 #1

IoT 데이터 파이프라인 구축 시리즈

전체 과정을 총 3단계로 나누어 상세히 다룹니다. 각 단계를 클릭하면 해당 포스팅으로 이동하실 수 있습니다.

  1. EMQX와 Kafka를 이용한 대규모 데이터 파이프라인(현재글)

  2. EMQX 브로커 설정 및 데이터 수집
    • 핵심: 수만 대의 IoT 기기를 안정적으로 연결할 인프라 구축
    • 주요 내용: EMQX 설치, MQTT 프로토콜 이해, 기기 연결 테스트 및 데이터 수집 확인
  3. EMQX와 Kafka 연동
    • 핵심: 수집된 데이터를 손실 없이 메시지 큐(Kafka)로 전달하는 전송로 구축
    • 주요 내용: Kafka Resource 생성, 데이터 유실 방지를 위한 브로커 및 토픽 최적화(Partition/Replication)
  4. Kafka Consumer를 활용한 데이터 소비
    • 핵심: 전송된 데이터를 실제 비즈니스 로직에 맞게 처리 및 저장
    • 주요 내용: Kafka Consumer Group 구성, 실시간 데이터 처리 로직 구현 및 모니터링

📊 데이터 파이프라인 흐름 (Data Pipeline Steps)

전체 데이터 흐름은 아래 5단계를 거치며 유연하고 안정적으로 처리됩니다.

단계 주체 (역할) 핵심 동작 비고
1단계 IoT 기기 (Producer) Publish (게시) MQTT 프로토콜로 메시지를 EMQX로 전송
2단계 EMQX (MQTT Broker) Routing (분류) 수만 개의 클라이언트 연결 관리 및 메시지 중계
3단계 Kafka Connector (Producer) Bridging (연결) EMQX 데이터를 읽어 Kafka 브로커로 전달(Write)
(MQTT Consumer & Kafka Producer 역할)
4단계 Kafka Cluster (Broker) Persistence (저장) 데이터를 토픽별로 디스크에 안전하게 보관 및 순서 보장
5단계 App Consumer (Consumer) Pull (가져오기) 가공 속도에 맞춰 Kafka에서 데이터를 당겨옴(Fetch)

🏗️ 시스템 구성 요소 (Architecture Components)

  1. Nginx Upstream: 인입 트래픽 로드밸런싱 및 고가용성(HA) 게이트웨이 역할.
  2. EMQX Cluster: 대규모 동시 접속을 처리하는 분산 MQTT 브로커.
  3. Kafka Connector: 분산 모드(Distributed Mode) 구성을 통한 무중단 데이터 전송.
  4. Kafka Cluster: 메시지 영속화(Persistence)를 통한 데이터 완충지대 역할.
  5. Consumer (Spring Boot): 비즈니스 로직 처리 및 가공 후 최종 저장소 적재.

Leave a comment