IoT가 점점 떠오르면서 같이 따라오는 MQTT.
그럼 MQTT는 무엇이며 어떻게 활용하는 것 일까?
MQTT란?
MQTT(메시지 큐잉 텔레메트리 트랜스포트, Message Queuing Telemetry Transport)는 ISO 표준(ISO/IEC PRF 20922) 발행-구독 기반의 메시징 프로토콜이다. TCP/IP 프로토콜 위에서 동작한다. "작은 코드 공간"(small code footprint)이 필요하거나 네트워크 대역폭이 제한되는 원격 위치와의 연결을 위해 설계되어 있다. 발행-구독 메시징 패턴은 메시지 브로커가 필요하다.
(출처 : 위키백과)
위의 설명을 간략하게 표현하자면,
작은 데이터를 네트워크 품질이 좋지 못한 곳에서 통신을 주고받기 위해 사용되는 프로토콜이라고 보시면 됩니다.
이러한 특징때문에 저전력, 저성능 기기 등에 적합합니다.
즉 이러한 특징을 살려 성능이 낮으며 전력소모가 작은 IoT 기기들에 사용이 되는 겁니다.
MQTT구조
MQTT는 크게 세 가지 Broker, Publisher, Subscriber 구조로 이루어져 있습니다.
Publisher는 메시지(데이터)를 발행하는 역할
Subscriber는 메세지(데이터)를 구독하는 역할
Borker는 메시지를 Publisher로부터 받아와 Subscriber가 가져갈 수 있도록 전달하는 역할
이라고 생각하시면 됩니다.
아래 구조도를 보면서 설명하겠습니다.
MQTT를 처음 접하시는 분들은 이 통신 방식이 클라이언트-서버의 관계처럼 Publisher와 Subsciber도 브로커를 통하여 1:1 통신을 한다고 생각하실 수도 있지만 이는 아닙니다.
위 사진을 보면 Publisher는 데이터를 topic과 함께 포장하여 메시지를 Broker한테 보냅니다(Pub).
그리고 Subscriber는 topic을 통하여 메세지를 가져옵니다(Sub).
자세히 설명을 해보자면 Broker에게는 많은 Publisher와 Subscriber가 연결되어 있습니다. 그중에서 한 Publisher는 'A'라는 topic을 구독하는 구독자에게 메시지를 전달하고 싶을 경우 topic을 'A'로 설정하고 데이터를 담아서 Broker에게 메세지를 발행합니다. 그러면 여러 Subsciber중에서 'A'를 구독하고 있던 Subsciber만 이 메세지를 받게 되는 겁니다.
이를 응용해서 집에 많은 스위치 중에서 거실 스위치만 끄고 싶다면 topic을 "거실 스위치"로 설정해서 data를 "불 끄기"로 하면 "거실 스위치"라는 topic을 구독하고 있던 거실 스위치만 불이 꺼질 것입니다.
물론 '구독'이라는 말처럼 topic하나에 한 개의 Subscriber만 붙을 수 있는 게 아닌 여러 Subscriber도 붙을 수 있습니다.
그렇기에 1:다수 통신을 구축할 때에도 매우 유용합니다.
MQTT 서비스 품질(QoS)
Qos는 Quality of Service의 약자로 서비스 품질을 의미합니다. 3단계로 이루어져 있습니다.
0단계 : 메시지는 한 번만 보내면 클라이언트와 브로커는 전달 확인 응답을 위한 추가 단계를 밟지 않는다.
1단계 : 메시지는 확인 응답을 수신할 때까지 여러 번 송신자로부터 재시도된다.
2단계 : 송신자와 수신자는 2단계 핸드셰이크에 참여함으로써 오직 하나의 메시지 사본만을 수신하는 것을 보장한다.
0단계에서 2단계로 갈수록 통신의 품질(정확한 전달, 전달 확인 유무 등)은 향상되지만, 반대로 성능의 저하가 발생할 가능성도 높아지기에 몇 단계를 사용할지 잘 고려해야 합니다. MQTT 프로토콜을 사용하는 환경이 애초에 작은 데이터, 좋지 못한 네트워크 환경 이므로 조금의 성능 저하도 큰 영향을 미칠 수 있기 때문입니다.
'IT에 관한 모든것' 카테고리의 다른 글
IP (0) | 2019.01.29 |
---|