MQTT(Message Queuing Telemetry transport)

MQTT(Message Queuing Telemetry Transport)는 IoT 환경에서 널리 사용되는 경량 메시징 프로토콜이다.
1999년 IBM의 Andy Stanford-Clark와 Arlen Nipper에 의해 원격 유전의 SCADA 시스템 모니터링을 위해 처음 개발되었으며, 현재는 OASIS 표준 및 ISO/IEC 20922로 지정되어 있다.

주요 특징

  1. 경량성: 작은 코드 공간과 최소한의 네트워크 대역폭을 사용한다.
  2. 발행/구독(Publish/Subscribe) 모델: 메시지 브로커를 통해 발행자와 구독자 간 통신을 중개한다.
  3. QoS(Quality of Service): 세 가지 수준의 메시지 전달 품질을 제공한다.
    • QoS 0: 최대 1회 전송 (Fire and Forget)
    • QoS 1: 최소 1회 전송
    • QoS 2: 정확히 1회 전송
  4. 토픽 기반 통신: 계층적 구조의 토픽을 사용하여 효율적인 메시지 라우팅을 지원한다.
  5. 연결 유지(Keep-Alive): 클라이언트 상태를 모니터링하고 비정상 연결 해제를 감지할 수 있다.

MQTT 구성 요소

  1. 브로커(Broker): 메시지를 중계하는 서버 역할을 한다.
  2. 발행자(Publisher): 특정 토픽으로 메시지를 발행한다.
  3. 구독자(Subscriber): 관심 있는 토픽의 메시지를 구독한다.

MQTT의 동작 원리

  1. 연결 수립: 클라이언트는 브로커와 TCP/IP를 통해 연결을 설정한다.
  2. 메시지 발행: 발행자(Publisher)는 특정 주제에 메시지를 발행한다.
  3. 메시지 전달: 브로커는 해당 주제를 구독한 모든 구독자(Subscriber)에게 메시지를 전달한다.
  4. 연결 종료: 클라이언트는 필요에 따라 브로커와의 연결을 종료할 수 있다.

MQTT 브로커 종류

  1. Mosquitto: 경량, 오픈소스, 다양한 플랫폼 지원
  2. EMQ: 분산 아키텍처, 높은 확장성, 대규모 연결 지원
  3. HiveMQ: 높은 성능, 클러스터링 지원, 엔터프라이즈 환경에 적합
  4. RabbitMQ: AMQP와 MQTT 모두 지원, 다양한 플러그인 제공

MQTT의 활용 분야

MQTT는 경량성과 효율성으로 인해 IoT, 모바일 애플리케이션, 센서 네트워크, 원격 모니터링 등 다양한 분야에서 활용되고 있다. 특히 제한된 대역폭과 전력 자원을 가진 환경에서의 통신에 적합하다.


참고 및 출처