My Page

blog

MQTT (Message Queuing Telemetry Transport) 에 대하여

MQTT (Message Queuing Telemetry Transport)

MQTT는 사물인터넷(IoT) 및 M2M(Machine-to-Machine) 통신에서 가장 널리 사용되는 초경량 메시징 프로토콜입니다. 네트워크 대역폭이 제한적이거나 연결이 불안정한 환경에서도 기기들이 신뢰성 있게 데이터를 주고받을 수 있도록 설계된 것이 가장 큰 특징입니다.

핵심 아키텍처: 발행/구독 (Pub/Sub) 모델

웹에서 흔히 쓰이는 HTTP의 클라이언트-서버(요청-응답) 모델과 달리, MQTT는 발행-구독(Publish-Subscribe) 모델을 사용합니다. 이 구조에서는 데이터를 보내는 쪽과 받는 쪽이 서로를 몰라도 통신이 가능합니다.

  1. 발행자 (Publisher): 센서나 기기처럼 데이터를 수집하여 메시지를 보내는 주체입니다.
  2. 구독자 (Subscriber): 전송된 데이터를 받아서 처리하는 주체(예: 모바일 앱, 백엔드 서버, 데이터베이스)입니다.
  3. 브로커 (Broker): 발행자와 구독자 사이의 중앙 우체국 역할을 합니다. 모든 메시지를 수신하고, 이를 필요로 하는 구독자에게 정확하게 필터링하여 전달합니다.

주요 개념

개념 설명
토픽 (Topic) 메시지를 라우팅하는 기준이 되는 경로입니다. 슬래시(/)를 사용해 계층적으로 구성됩니다. (예: sensor/temperature/room1)
페이로드 (Payload) 전송되는 실제 데이터입니다. MQTT는 데이터 형식을 따지지 않으므로 JSON, 일반 텍스트, 바이너리 등 자유롭게 전송할 수 있습니다.
QoS (서비스 품질) 메시지 전송의 신뢰성을 보장하는 3가지 레벨입니다.
  • QoS 0 (최대 한 번): 메시지를 한 번만 보냅니다. 유실될 수 있지만 가장 빠릅니다.
  • QoS 1 (최소 한 번): 메시지 전달을 확인합니다. 중복 수신될 가능성이 있습니다.
  • QoS 2 (정확히 한 번): 가장 안전하지만 통신 과정이 길어 가장 느립니다.

왜 HTTP 대신 MQTT를 사용할까요?

  • 초경량 패킷: HTTP는 헤더(Header)가 무거워 오버헤드가 크지만, MQTT는 최소 2바이트의 헤더만을 사용하여 대역폭 소모가 극히 적습니다.
  • 배터리 효율: 지속적인 연결(Keep-Alive)을 유지하면서도 전력 소모가 적어 배터리로 구동되는 소형 센서에 최적화되어 있습니다.
  • 불안정한 네트워크에 강함: 터널 안이나 지하처럼 통신이 끊어지기 쉬운 환경에서도, 세션 관리와 QoS 기능을 통해 연결이 복구되면 데이터를 안전하게 재전송합니다.
  • 양방향 통신: 기기가 서버로 데이터를 보내는 것뿐만 아니라, 서버가 기기를 실시간으로 원격 제어하는 양방향 통신이 매우 쉽습니다.