[IoT] MQTT -> Kafka를 이용한 데이터 파이프라인 구축하기 #1
IoT 데이터 파이프라인 구축 시리즈
전체 과정을 총 3단계로 나누어 상세히 다룹니다. 각 단계를 클릭하면 해당 포스팅으로 이동하실 수 있습니다.
- EMQX 브로커 설정 및 데이터 수집
- 핵심: 수만 대의 IoT 기기를 안정적으로 연결할 인프라 구축
- 주요 내용: EMQX 설치, MQTT 프로토콜 이해, 기기 연결 테스트 및 데이터 수집 확인
- EMQX와 Kafka 연동
- 핵심: 수집된 데이터를 손실 없이 메시지 큐(Kafka)로 전달하는 전송로 구축
- 주요 내용: Kafka Resource 생성, 데이터 유실 방지를 위한 브로커 및 토픽 최적화(Partition/Replication)
- 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)
- Nginx Upstream: 인입 트래픽 로드밸런싱 및 고가용성(HA) 게이트웨이 역할.
- EMQX Cluster: 대규모 동시 접속을 처리하는 분산 MQTT 브로커.
- Kafka Connector: 분산 모드(Distributed Mode) 구성을 통한 무중단 데이터 전송.
- Kafka Cluster: 메시지 영속화(Persistence)를 통한 데이터 완충지대 역할.
- Consumer (Spring Boot): 비즈니스 로직 처리 및 가공 후 최종 저장소 적재.
Leave a comment