티스토리 뷰

IT 일반

MQTT 프로토콜에 대한 이해

야라바 2023. 8. 24. 19:53
728x90

MQTT(Message Queuing Telemetry Transport) 프로토콜은 ISO/IEC 20922로 등재된 표준 프로토콜로 현재는 5.0까지 나왔다. TCP/IP 기반에서 동작하는 발행/구독(publish/subscribe ) 방식의 프로토콜이다. 프로토콜 구현을 위한 코드가 짧고, 메시지의 최대 길이도 64MB 정도 이므로 IoT 기기들의 메시지 전달에 적절하다고 할 수 있다.

 

https://wikipedia.org/

위의 그림에서 보듯이 각 클라이언트는 짧은 정보를 브로커(Broker)에 던지고 특정 정보를 구독하는 클라이언트에게 해당 정보과 전달되는 방식이다. 클라이언트 B를 온도 센서라 한다면 클라이언트 A는 모바일기기 일수도 있고 정보를 수집하는 서버일 수도 있다. 동일한 토픽(topic, 그림에서는 temperature/roof)을 구독하는 클라이언트가 여러 개 일수도 있다.

 

MQTT를 서비스하는 브로커가 많이 있지만 대표적인 몇 가지를 나열하면 다음과 같다.

 

■ 이클립스 모스키토(Eclipse Mosquitto, https://mosquitto.org/ ,https://github.com/eclipse/mosquitto)

C/C++ 기반의 오픈소스 프로젝트(EPL/EDL)로 가장 대표적인 MQTT 브로커이다.

MQTT  5.0, 3.1을 모두 지원하고, 라이브러리와 함께 발행 및 구독을 위한 mosquitto_pub, mosquitto_sub 도구도 제공한다.

 

■ EMQX(Eclipse Mosquitto, https://www.emqx.io/https://github.com/emqx/emqx)

얼랭(Erlang, 병렬 함수형 언어) 기반의 오픈소스 프로젝트(아파치 2.0)로 IoT, IIoT(산업용 IoT), 커넥티드카 분야를 표방하고 있다.

MQTT  5.0, 3.1을 모두 지원하고, MQTT 이외에도 HTTP, WebSocket 등도 지원한다. 

PHP, Node.js, Python, Go 언어등을 통해 사용할 수 있도록 인터페이스를 제공한다.

 

■ 카산다나(Cassandana, https://github.com/mtsoleimani/cassandana/)

자바 기반의 오픈소스 프로젝트(아파치 2.0)로 이클립스 모스키토 브로커를 모태로 한 브로커이다.

 

■ 이재버드(ejabberd, https://www.process-one.net/en/ejabberd/, https://github.com/processone/ejabberd)

얼랭(Erlang, 병렬 함수형 언어) 기반의 오픈소스 프로젝트(GPL2)

원래 Jabber라 부르던 프로코톨인 XMPP(Extensible Messaging and Presence Protocol) 서버 역할과 동시에 MQTT 브로커 역할을 하는 프로그램이다.

 

■ 래빗 MQ(RabbitMQ, https://rabbitmq.com/https://github.com/rabbitmq)

얼랭(Erlang, 병렬 함수형 언어) 기반의 오픈소스 프로젝트(MPL2.0).

C#, Java 등 다양한 인터페이스를 제공한다.

 

MQTT 브로커가 IoT 기기들에서 들어오는 다양한 센서 정보 및 장비 상태 정보들을 원활하면서도 정확하게 중계하는 역할을 하므로 어떤 브로커를 선택하는가에 따라 개발자의 개발 난이도와 적응도가 많이 달라질 것으로 보인다. 

 

브로커가 완성된 도구라면 개발자들이 보통 연관되는 것은 발행과 구독을 수행하는 클라이언트 이므로 https://mqtt.org/software/ 사이트의 "Client Library"에서 다양한 클라이언트 도구 및 라이브러리를 참고하여 개발을 진행하면 된다. 정말 다양한 언어와 플랫폼을 지원하고 있었다. 브로커가 달라져도 클라이언트 입장에서는 서버 주소와 포트만 바뀌는 것이므로 자신의 환경에 맞는 클라이언트 라이브러리를 선택할 필요가 있다.

 

실제 IoT 장비가 없더라도 실제 장비처럼 브로커에 붙어서 정보를 발행하는 시뮬레이터들도 있었다. 아래의 시뮬레이터는 파이썬으로 간단하게 테스트해 볼 수 있는 도구이다.

https://github.com/DamascenoRafael/mqtt-simulator

 

728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함