그림 그리는 개발자
  • MQTT 에 대하여
    2023년 07월 22일 18시 50분 25초에 업로드 된 글입니다.
    작성자: 루루개발자

    안녕하세요. 루루개발자 입니다.

     

    회사에서 프론트엔드 개발을 진행중에 있는데, 프론트에서.. 즉 브라우저죠, 브라우저에서 mqtt 통신을 통해 토픽을 구독하고 이벤트를 받거나 토픽으로 메시지를 발행하여 여러가지 처리를 진행해야 하는 상황이 있었습니다. 처음에 회사에서 mqtt 를 사용해야 한다는 말을 들었을 때 mqtt 라는 단어를 처음 들어봤습니다. 그래서 이번에는 mqtt 에 대해 한번 알아보는 시간을 가져보려 합니다.

     

    MQTT 란?

    mqtt 는 경량화된 발행/구독 메시징 프로토콜(통신규격)을 의미합니다.

    낮은 전력, 낮은 대역폭 환경에서도 정상 작동될 수 있도록 설계되었기 때문에 매우 가볍다고 표현되기도 하며, 이러한 특성 때문에 iot(사물인터넷) 같은 곳에서 자주 사용된다고 합니다. 

     

    발행과 구독 (Publish & Subscribe)

    mqtt 는 브로커 서버에 연결하여 특정 토픽으로 메시지를 발행하거나, 특정 토픽을 구독하여 메시지를 받을 수 있습니다. 브로커 서버와 연결된 어떠한 장치(디바이스)는 발행자가 될 수도 있고 구독자가 될 수도 있고 발행자이자 구독자가 될 수도 있습니다.

     

    QoS (Quality of Service)

    mqtt 에는 QoS 라는 개념이 존재합니다. 서비스의 질을 보장해주는 수준을 의미하는데 다음과 같이 총 3단계가 존재합니다.

    • 0 : QoS 가 0으로 설정되면 해당 메시지는 딱 한번만 전송하고 해당 내용을 잊어버립니다. 즉, 한번 보내긴 하지만 정말로 보내졌는지 아니면 실패했는지 여부를 체크하지 않고 이 메시지에 대한 정보는 삭제된다는 의미입니다. Qos 가 0으로 설정되어 있다면 메시지를 받지 못하는 클라이언트가 생길 수 있다는 말이 됩니다.
    • 1 : QoS 가 1로 설정되면 해당 메시지는 최소 1번 이상은 클라이언트로 전송됨을 보장합니다.  이 말은 메시지가 정확히 클라이언트에게 전송되기는 하지만 그게 2번 이상 전송 될 수 있다는 의미입니다.
    • 2 : QoS 가 2로 설정되면 해당 메시지는 정확히 딱 1번 클라이언트로 전송됨을 보장합니다. 

    QoS 값이 2에 가까울 수록 브로커 서버에서는 저장해두어야 할 데이터와 체크해야 하는 과정이 늘어나므로 서버에 대한 부하는 커집니다. 하지만 그만큼 정확성을 보장할 수 있습니다.

     

    브로커 (Broker)

    mqtt 에서 브로커는 발행자와 구독자를 연결 시켜주는 다리(통로) 역할을 한다고 볼 수 있습니다. 발행자로부터 토픽을 받으면 해당 토픽을 구독하고 있는 구독자들에게 해당 토픽의 메시지를 전달해주게 됩니다.

     

    브라우저 mqtt 지원 여부

    브라우저에서는 mqtt:// 프로토콜로 바로 브로커 서버와 통신할 수는 없습니다. 대신 "MQTT over WSS" 라고 하여 wss:// 프로토콜을 사용하여 mqtt 패킷을 websocket 패킷으로 포장하여 브로커 서버와 통신하는 방식으로 브라우저에서 mqtt 를 이용할 수 있습니다. 다만 이렇게 되면 결국에는 websocket 이 중간에 있게 되므로 mqtt 의 경량적인 이점이 100% 발휘되기는 어렵다고 할 수 있습니다.

     

     


     

    - 출처 -

    https://www.joinc.co.kr/w/man/12/MQTT/Tutorial
    https://underflow101.tistory.com/22
    https://dalkomit.tistory.com/111
    https://dydtjr1128.github.io/mqtt/2018/01/31/MQTT-and-MQTT-brokers.html
    https://blog.naver.com/PostView.nhn?blogId=changbab&logNo=221565552533 

     

    댓글