MQTT(Message Queuing Telemetry transport)
MQTT(Message Queuing Telemetry Transport)는 IoT 환경에서 널리 사용되는 경량 메시징 프로토콜이다.
1999년 IBM의 Andy Stanford-Clark와 Arlen Nipper에 의해 원격 유전의 SCADA 시스템 모니터링을 위해 처음 개발되었으며, 현재는 OASIS 표준 및 ISO/IEC 20922로 지정되어 있다.
주요 특징
- 경량성: 작은 코드 공간과 최소한의 네트워크 대역폭을 사용한다.
- 발행/구독(Publish/Subscribe) 모델: 메시지 브로커를 통해 발행자와 구독자 간 통신을 중개한다.
- QoS(Quality of Service): 세 가지 수준의 메시지 전달 품질을 제공한다.
- QoS 0: 최대 1회 전송 (Fire and Forget)
- QoS 1: 최소 1회 전송
- QoS 2: 정확히 1회 전송
- 토픽 기반 통신: 계층적 구조의 토픽을 사용하여 효율적인 메시지 라우팅을 지원한다.
- 연결 유지(Keep-Alive): 클라이언트 상태를 모니터링하고 비정상 연결 해제를 감지할 수 있다.
MQTT 구성 요소
- 브로커(Broker): 메시지를 중계하는 서버 역할을 한다.
- 발행자(Publisher): 특정 토픽으로 메시지를 발행한다.
- 구독자(Subscriber): 관심 있는 토픽의 메시지를 구독한다.
MQTT의 동작 원리
- 연결 수립: 클라이언트는 브로커와 TCP/IP를 통해 연결을 설정한다.
- 메시지 발행: 발행자(Publisher)는 특정 주제에 메시지를 발행한다.
- 메시지 전달: 브로커는 해당 주제를 구독한 모든 구독자(Subscriber)에게 메시지를 전달한다.
- 연결 종료: 클라이언트는 필요에 따라 브로커와의 연결을 종료할 수 있다.
MQTT 브로커 종류
- Mosquitto: 경량, 오픈소스, 다양한 플랫폼 지원
- EMQ: 분산 아키텍처, 높은 확장성, 대규모 연결 지원
- HiveMQ: 높은 성능, 클러스터링 지원, 엔터프라이즈 환경에 적합
- RabbitMQ: AMQP와 MQTT 모두 지원, 다양한 플러그인 제공
MQTT의 활용 분야
MQTT는 경량성과 효율성으로 인해 IoT, 모바일 애플리케이션, 센서 네트워크, 원격 모니터링 등 다양한 분야에서 활용되고 있다. 특히 제한된 대역폭과 전력 자원을 가진 환경에서의 통신에 적합하다.