Wednesday, September 4, 2019

MQTT broker 서비스를 이사가다.

장치간의 메시징(통신)을 위해 MQTT - Message Queuing Telemetry Transport,  ISO standard (ISO/IEC PRF 20922) - 프로토콜을 사용하고 있고, 다음 그림과 같이 MQTT broker(or server)가 연결된 디바이스들(subscriber)의 mqtt에 기반한 메시징을 중계해준다.


Image from www.mathworks.com


알려진대로 매우 가벼운 프로토콜이기 때문에 IoT 디바이스들에 적용되기에 적합하다.

문제는 mqtt broker인데 이는 서버이므로 PC든 라즈베리 파이든 NAS든 broker를 구동할 서버가 준비되어야 한다. 여기에는 두가지 문제가 있는데, 하나는 간단한 응용을 위해 항시 켜져있는 서버를 운용해야 한다는 점과, 서버가 내부 IP 영역에 존재하면 그 외부의 장치들은 접근하기가 어렵다는 것이다. 물론, 전자의 경우 NAS같이 원래 항상 운용되는 장비가 있다면 거기에 mqtt broker를 설치/운용할 수 있으며, 후자의 경우 port forwarding 을 사용하여 내/외부 모두 접근이 가능한 서버를 구축할 수도 있을 것이다.
그런데 간단한 구축을 위해 너무 귀찮잖아!

이런 경우를 위해 유/무료로 mqtt broker 운용해주는 site들이 여럿 있다.

나같은 경우 CloudMQTT에서 제공하는 무료 서비스를 사용하고 있었다.
무료의 경우 생성할 수 있는 채널 수 등이 제한되어 있었는데, 그래도 충분히 활용할 만 했었다. 그런데, 오랜만에 새로운 채널을 생성하려고 했는데 이게 웬걸. 무료 정책이 바뀌어서 기존에 만든것은 유지하지만 새롭게 만들거나 변경하는것이 불가능했다. 뭔가 하려면 기존것을 상당부분 삭제해야 하는 상황이다!

[CloudMQTT 무료버전]

Cute Cat

  • 5 users/acl rules/connections
  • 10 Kbit/s

CloudMQTT 무료 서비스는 사용자수던, acl rule(채널)수던, 접속자 수던 5개로 제한되고 있고, 통신속도는 10 Kbit/s !  이거 너무하지 않은가?


그래서 다른 대안을 찾기 시작했고, broker로 유명한 mosquitto를 제공하는 재단에서 mqtt 테스트 서버를 무료로 제공하기에 이를 사용하기로 하였다.
물론, 다른 무료 서버들도 많이 있다. 선택은 사용자가 적절히!

[Public MQTT Brokers]
https://mntolia.com/10-free-public-private-mqtt-brokers-for-testing-prototyping/



테스트 서버의 접속 url은 http://test.mosquitto.org/ 이다.

접속 port에 따라서 서비스 형태가 약간 다르다.
  • 1883 : MQTT, unencrypted
  • 8883 : MQTT, encrypted
  • 8884 : MQTT, encrypted, client certificate required
  • 8080 : MQTT over WebSockets, unencrypted
  • 8081 : MQTT over WebSockets, encrypted


IoT의 소형장치들은 대부분 보안에 취약하다. 이는 미래에 큰 화두가 될 것이다.
나는 테스트를 위한 (보안이 필요 없는) 정보를 주고받는 정도이므로 1883 포트를 사용한다.

무료가 항상 그렇듯 본 서비스도 donation을 받는다. 한달에 약 $70가 운용비용이라고 하는데, 설마 이정도도 ECLIPSE 재단에서 지불을 못할까?

테스트 해보니 속도도 빠르고 별 문제가 없어서, 앞으로는 본 서비스를 활용할 계획이다.



No comments:

Post a Comment