Message Queuing Telemetry Transport(MQTT)는 인터넷을 통해 사물 인터넷(IoT) 또는 M2M(머신 간) 디바이스와 애플리케이션을 연결하는 데 적합한 대중적인 경량형 게시-구독(publish-subscribe) 메시징 프로토콜입니다. MQTT는 저대역폭 또는 저전력 환경에서 효율적으로 작동하도록 설계되어 원격 클라이언트 수가 많은 애플리케이션에 적합합니다. 가전, 자동차, 운송, 제조 및 헬스케어 등 다양한 산업에서 사용되고 있습니다.
MQTT를 통해 연결된 디바이스 또는 애플리케이션을 클라이언트라고 합니다. 이러한 클라이언트는 특정 주제 또는 여러 주제에 대한 메시지를 게시하거나 구독합니다. 구독한 클라이언트는 해당 주제에 게시된 모든 메시지를 수신하여 많은 디바이스와 서비스 간에 효율적이고 내결함성 있는 데이터 교환을 가능하게 합니다.
MQTT 아키텍처의 핵심은 브로커입니다. 브로커는 클라이언트(및 클라이언트가 구독하는 모든 주제)를 추적하고, 메시지를 처리하고, 해당 메시지를 적절한 시스템으로 라우팅하는 역할을 하는 서버입니다.
MQTT 프로토콜의 여러 주요 버전이 표준으로 채택되었습니다. OASIS 조직은 프로토콜의 개정을 관리하고 각 버전에 대한 전체 사양을 유지 관리합니다. MQTT의 각 개정 버전은 프로토콜 기능 세트를 확장했기 때문에 사용 중인 디바이스와 브로커가 어떤 버전의 MQTT를 준수하는지 파악해야 합니다.
MQTT 메시지에는 여러 유형이 있으며, 각 메시지 유형에는 호환되는 디바이스와 애플리케이션이 따라야 하는 특정 형식이 포함되어 있습니다. MQTT 프로토콜의 개정 버전은 형식과 메시지 유형에 따라 달라집니다. 메시지 유형의 전체 목록은 MQTT 프로토콜의 각 사양에서 확인할 수 있습니다.
가장 일반적인 세 가지 메시지 유형은 CONNECT, PUBLISH, SUBSCRIBE입니다. 각 MQTT 메시지에는 헤더, 페이로드, 선택적 플래그가 포함됩니다. 메시지 유형에 따라 페이로드의 길이가 달라질 수 있습니다. 예를 들어 PUBLISH 메시지에서 페이로드에는 모든 구독 디바이스에 전송할 데이터가 포함되며 데이터 필드 길이는 메시지 크기와 직접적인 관련이 있습니다. 기본적으로 MQTT 디바이스는 비보안 방식으로 포트 1883에 연결하거나, SSL/TLS 암호화가 활성화된 경우 포트 8883에 연결합니다.
스마트 카는 MQTT가 실제로 사용되는 좋은 예입니다. 자동차 제조업체가 원격 진단 및 차량 관리부터 연료비 결제 및 엔터테인먼트에 이르기까지 모든 것을 지원하는 새로운 기능을 추가하면서 MQTT는 커넥티드 카의 일반적인 표준이 되었습니다. HTTP(Hypertext Transfer Protocol) 프로토콜과 달리, MQTT는 자동차가 사각지대를 오가거나 연결에 따라 무선 셀 기지국이 변경되어도 지속적인 세션을 유지할 수 있습니다. 또한 MQTT가 양방향 통신을 지원하므로 차량과 클라우드 애플리케이션은 상대방이 응답하기를 기다리지 않고 데이터를 쉽게 주고받을 수 있습니다.
HTTP와 MQTT는 모두 인터넷을 통해 데이터를 전송하는 데 사용되는 네트워크 프로토콜입니다. 두 프로토콜의 차이점을 살펴보겠습니다.
MQTT의 많은 기능은 IoT 디바이스(IoT의 “사물”)와 백엔드 시스템 간의 메시징에 적합한 프로토콜입니다. 여기서는 4가지 기능에 초점을 맞춥니다.
MQTT는 기본 전송 프로토콜로 TCP/IP(Transmission Control Protocol/Internet Protocol)를 지원합니다. 널리 사용되는 이 네트워킹 프로토콜은 클라이언트와 브로커 간에 메시지가 확실하게 전송되도록 보장합니다.
TCP/IP가 신뢰할 수 있고 효율적이라고 생각되는 데에는 몇 가지 이유가 있습니다.
가장 일반적이지만 MQTT 메시지 전송에 TCP/IP가 유일한 선택은 아닙니다. MQTT 프로토콜은 UDP(User Datagram Protocol)와 WebSockets를 통해서도 작동합니다.
F5는 다음과 같은 무료 리소스를 통해 NGINX가 MQTT 기반 IoT 시스템에 대해 보안, 로드 밸런싱 및 고가용성을 제공하는 방법을 계속 연구하는 데 도움을 드리고자 합니다.