웹소켓 및 MQTT 비교
웹과 통합된 IoT 서비스 구현에 사용되는 주요 기술과 보안 문제에 대해 소개합니다.
소통은 MQTT 브로커
20여년 전 개발된 MQTT 는 데이타 생성자(publisher)가 채널을 구독한 구독자(Subscriber)에게 발행(publish)을 하는 방식으로 정보를 전달하며, 채널정보만 서로 공유하면 분산 환경에서의 데이타 통신을 용이하게 해줍니다. 더불어 이미 약속된 메시지 전달 프로토콜을 사용하므로 브로커(Broker)역활을 하는 서버를 위해 별도의 코딩을 하지 않아도 됩니다. 게다가 저사양 디바이스들의 메시지 소통을 지원하므로 효과적인 솔류션으로 사용되고 있습니다.
웹브라우저는 웹소켓
10여년 전 개발되어 이미 모든 모던 브라우저와 서버 환경에 적용되고 있는 웹소켓(WebSocket)을 통해 서버와 브라우저 간의 양방향 실시간 통신이 가능해 졌습니다. 하지만 이름 그대로 소켓 통신 기능만 제공하므로 클라이언트들간의 메시지 소통은 직접 코딩하여 구현해 주거나 MQTT 같은 브로커를 별도로 연동하여 사용해야합니다.
IoT 와 웹브라우저 통합
IoT와 웹브라우저가 통합되는 서비스를 제공하는 서버의 경우 브라우저는 웹소켓으로 연결할 수 있으며, 디바이스는 웹소켓이나 소켓 통신으로 연결이 가능합니다. 이때 브라우저 및 디바이스들간의 소통 방법은 별도로 구현하거나 MQTT 및 기타 PubSub 기능의 서비스들을 이용 가능합니다.
대표적인 MQTT 브로커인 모스키토(Mosquitto)의 경우 웹소켓을 통한 연결 기능을 제공하며, Eclipse 의 Paho JavaScript Client 는 웹브라우저가 MQTT 브로커와 연결할 수 있도록 웹소켓을 활용하는 라이브러리를 제공하고 있습니다. 이런 방식으로 웹브라우저 환경에서 IoT기기들을 통합 및 제어해주는 사례로 Node-Red 가 있습니다. 보통은 이런 방식으로 개별 기능의 모듈 들을 서로 연동하는 방식으로 서비스를 구현하고있습니다. 모듈화는 여러 장점이 있지만 파편화로 인한 문제점도 함께 갖게됩니다.