blog
MQTT (Message Queuing Telemetry Transport) 에 대하여
MQTT (Message Queuing Telemetry Transport)
MQTT는 사물인터넷(IoT) 및 M2M(Machine-to-Machine) 통신에서 가장 널리 사용되는 초경량 메시징 프로토콜입니다. 네트워크 대역폭이 제한적이거나 연결이 불안정한 환경에서도 기기들이 신뢰성 있게 데이터를 주고받을 수 있도록 설계된 것이 가장 큰 특징입니다.
핵심 아키텍처: 발행/구독 (Pub/Sub) 모델
웹에서 흔히 쓰이는 HTTP의 클라이언트-서버(요청-응답) 모델과 달리, MQTT는 발행-구독(Publish-Subscribe) 모델을 사용합니다. 이 구조에서는 데이터를 보내는 쪽과 받는 쪽이 서로를 몰라도 통신이 가능합니다.
- 발행자 (Publisher): 센서나 기기처럼 데이터를 수집하여 메시지를 보내는 주체입니다.
- 구독자 (Subscriber): 전송된 데이터를 받아서 처리하는 주체(예: 모바일 앱, 백엔드 서버, 데이터베이스)입니다.
- 브로커 (Broker): 발행자와 구독자 사이의 중앙 우체국 역할을 합니다. 모든 메시지를 수신하고, 이를 필요로 하는 구독자에게 정확하게 필터링하여 전달합니다.
주요 개념
| 개념 | 설명 |
|---|---|
| 토픽 (Topic) | 메시지를 라우팅하는 기준이 되는 경로입니다. 슬래시(/)를 사용해 계층적으로 구성됩니다. (예: sensor/temperature/room1) |
| 페이로드 (Payload) | 전송되는 실제 데이터입니다. MQTT는 데이터 형식을 따지지 않으므로 JSON, 일반 텍스트, 바이너리 등 자유롭게 전송할 수 있습니다. |
| QoS (서비스 품질) |
메시지 전송의 신뢰성을 보장하는 3가지 레벨입니다.
|
왜 HTTP 대신 MQTT를 사용할까요?
- 초경량 패킷: HTTP는 헤더(Header)가 무거워 오버헤드가 크지만, MQTT는 최소 2바이트의 헤더만을 사용하여 대역폭 소모가 극히 적습니다.
- 배터리 효율: 지속적인 연결(Keep-Alive)을 유지하면서도 전력 소모가 적어 배터리로 구동되는 소형 센서에 최적화되어 있습니다.
- 불안정한 네트워크에 강함: 터널 안이나 지하처럼 통신이 끊어지기 쉬운 환경에서도, 세션 관리와 QoS 기능을 통해 연결이 복구되면 데이터를 안전하게 재전송합니다.
- 양방향 통신: 기기가 서버로 데이터를 보내는 것뿐만 아니라, 서버가 기기를 실시간으로 원격 제어하는 양방향 통신이 매우 쉽습니다.