- MQTT 에 대하여2023년 07월 22일
- 루루개발자
- 작성자
- 2023.07.22.:50
반응형안녕하세요. 루루개발자 입니다.
회사에서 프론트엔드 개발을 진행중에 있는데, 프론트에서.. 즉 브라우저죠, 브라우저에서 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% 발휘되기는 어렵다고 할 수 있습니다.
- 출처 -
반응형'IT 기타' 카테고리의 다른 글
meta 태그의 keywords 는 이제 seo 에 영향을 주지 않는다? (0) 2023.08.24 네이티브? 웹뷰? 앱이 무엇으로 만들어졌는지 확인해보자! (1) 2023.08.09 github 에 내가 만든 react frontend package 배포하기 (0) 2023.07.22 안드로이드 디바이스가 절전모드일 때 발생한 이슈 (0) 2022.10.01 GET 메소드 요청시 body 를 보낼 수 있을까? (0) 2022.08.28 다음글이전글이전 글이 없습니다.댓글