본문 바로가기
개발지식

MQTT와 EMQX

by titlejjk 2023. 8. 28.

프로젝트 진행 중 MQTT와 EMQX를 사용해보라는 과제가 내려왔다.

학원쿼리큘럼중 하나인 MQTT를 사용하는 IoT과정이 있긴한데.. 관련서적을 보니 매우 어려워보였다..

블루투스니, 센서니뭐니를 데이터를 받아와서 브로커를 통해 관리 어쩌구..

 

우선 이번 프로젝트에 적용시켜야하니 남는 시간에 공부하기로 해보았다.

멘토님께서 MQTT를 설명해 주시면서 EMQX에 대해서 사용해보라고 권해주셨는데, 제시해준 과제 안에서 최대한 노력해보려고 한다.

 

우선 이 둘이 무엇을 해주는지 어떤 기능들이 있는지 한번 살펴보고 시작해보겠다.

 

MQTT(Message Queuin Telemerty Transport)

메세지 큐잉 텔레메트리 전송 프로토콜로 IoT(Internet of Things)디바이스 간의 높은 지연 시간, 데이터 통과율, 및 전력 사용량에 대한 문제를 해결하기 위해 설계 되었다.

이 프로토콜은 Publish/Subscribe 모델을 사용하여, 서버(브로커)와 클라이언트 사이에서 메세지를 전달해준다.

https://mqtt.org/

 

MQTT - The Standard for IoT Messaging

Why MQTT? Lightweight and Efficient MQTT clients are very small, require minimal resources so can be used on small microcontrollers. MQTT message headers are small to optimize network bandwidth. Bi-directional Communications MQTT allows for messaging betwe

mqtt.org

기본적인 매커니즘은 공식문서를 보면 IoT장치가 인터넷을 통해 데이터를 게시하고 구독하는 방법을 정의하는 일련의 규칙을 말한다한다. 프로토콜은 이벤트 기반이며 게시/구독(Pub/Sub)패턴을 사용하여 장치를 연결.

발신자(게시자)와 수신자(구독자)는 주제를 통해 통신하며 서로 분리된다.

특징으로 가볍고 개방적이며 단순하게 구현되도록 설계되어 이를 특성으로 작은 코드 공간이 필요하거나 네트워크 대역폭이 중요한 M2M(Machine to Machine)및 IoT컨텍스트의 통신과 같은 제한된 환경을 포함하여 다양한 상황에서 사용하기에 이상적이다.

 

그럼 MQTT의 Pub/Sub 분리기능이란?

기존 클라이언트 - 서버(요청,응답)모델에 대한 고유한 대안을 제공하는데 요청 - 응답 접근 방식에서 클라이언트가 서버 끝점과 직접 통신함으로써 생기는 병목현상을 Pub/Sub아키텍쳐로 메세지 게시자와 구독자를 나누어 중간에 브로커라는 구성 요소로 이들 간의 연결을 처리하여 더 빠르고 효율적인 통신 프로세스를 구성해준다.

 

  • 공간 분리 : 게시자와 구독자는 서로 알 필요가 없음(예 : IP주소 및 포트 교환이 없음)
  • 시간 분리 : 게시자와 구독자가 동시에 실행될 필요가 없다.
  • 동기화 분리 : 게시 또는 수신 중에 두 구성 요소의 작업을 중단할 필요가 없다.

이를 통해 MQTT Pub/Sub아키텍쳐로 얻는 중요한 이점은

향상된 확장성으로 브로커로써 모든 메세지 중앙 헙 역할을 하여 성능 저하 없이 많은 클라이언트를 처리할 수 있으며

아키텍처의 분리된 특징을 이용하여 향상된 내결함성을 제공한다.

기존 방식으로는 클라이언트 - 서버 모델에서는 서버가 다운되면 연결된 모든 클라이언트의 연결이 끊어졌지만 Pub/Sub으로 구성되어있으면 브로커가 클라이언트가 다시 연결될 때까지 메세지를 저장하여 메세지가 손실되지 않도록 할 수 있다.

또한 유연성을 장점으로 낮은 대역폭, 긴 대기 시간 등등의 네트워크의 문제를 상쇄할 수 있는 유연성을 가지고 있다.

 

EMQ X

EMQ X는 고성능, 확장성 있는 MQTT 브로커 플랫폼으로 높은 처리량과 낮은 지연 시간을 제공해준다. 그리고 다양한 IoT프로젝트와 서비스에 적용될 수 있다. EMQ X는 다양한 메세지 브로커에 대한 관리 기능과 함께, 고급 보안 기능, 클러스터링, 여러종류의 IoT프로토콜 지원등을 제공한다.

https://www.emqx.com/en

 

The #1 MQTT Platform for IoT, IIoT and Connected Cars

Unleash the full potential of your IoT, IIoT, and Connected Cars with EMQX - the #1 MQTT platform that delivers fast, reliable, and secure MQTT messaging.

www.emqx.com

먼저 EMQX는 오픈소스이다. MQTT브로커이며 HTTP,QUIC 및 WebSocket을 포함한 다양한 프로토콜을 지원해준다.

그리고 TLS/SSL 및 다양한 인증 매커니즘을 통해 MQTT와의 안전한 양뱡향 통신을 제공하여 IoT장치 및 애플리케이션을 위한 안정적이고 효율적인 통신 인프라를 보장해준다.

EMQX는 단일 클러스터에서 동시 MQTT연결을 최대 1억개 까지의 확장이 가능하고, 초당 수백만개의 MQTT메세지를 처리, 낮은 대기시간을 제공하여 메세지로의 통신이 즉각적으로 수신된다.

 

여기까지 대충 정리하자면

MQTT는 메세징 프로토콜 EMQ X는 MQTT프로토콜을 구현한 브로커 소프트웨어이다.

즉, MQTT는 "어떻게"메세지를 전달할 것인가에 대한 규칙을 정의, EMQ X는 그러한 규칙을 실제로 실행하는 브로커 역할을 가집니다.

'개발지식' 카테고리의 다른 글

내가 보려고 만든 Linux 진짜 초 기본명령어  (0) 2023.06.25
POJO JAVA  (0) 2023.06.22
Framework  (0) 2023.06.16
객체지향 설계 원칙 SOLID  (0) 2023.06.14
Spirng Framework 와 Spring Boot의 차이  (0) 2023.06.14

댓글