개요
AWS IoT Core
- IoT 기기를 다른 기기에 연결하는 클라우드 서비스를 제공합니다.
- AWS IoT Core에서 지원하는 프로토콜들을 살펴보겠습니다
MQTT
- MQTT는 제약된 디바이스를 위해 설계된 경량의 메시징 프로토콜로서 광범위하게 사용되고 있습니다.
-Publish-Subscribe 패턴을 기반으로 하며, client는 주제(topic)를 구독하거나 메시지를 발행할 수 있습니다
- Pub와 Sub 사이의 Message Broker의 종류는 일반적으로 아래와 같습니다
- Rabbit MQ
- VernaMQ
- HiveMQ
- mosquitto
장점
- 저전력 디바이스와 효율적인 통신이 가능합니다
- 경량 프로토콜이므로 오버헤드가 적고, 다른 기기 간 통신 역시 쉽게 가능합니다.
- QoS(Quality of Service) 레벨을 통해 메세지의 신뢰성과 일관성을 보장합니다.
단점
- 보안성이 낮아 암호화와 인증이 별도로 필요할 수 있습니다 (AWS 이용시 암호화 제공)
대용량 데이터 전송에 아래와 같은 이유로 적합하지 않을 수 있습니다
- 메세지 크기 제한
- 데이터 유실
- QoS 레벨이 높을수록 처리량이 감소합니다
- QoS 레벨이 낮을수록 유실될 확률이 증가합니다
- 보안
- MQTT는 보안 기능을 갖추고 있지 않습니다, 별도의 암호화가 필요합니다
예시
- AWS IoT의 MQTT 지원 ver : MQTT v3.1.1을 기반으로 몇가지 차이점이 있습니다
- ref : (aws)[https://catalog.us-east-1.prod.workshops.aws/workshops/cdb1fb2e-9345-4c47-9831-026dad5870e6/ko-KR/4-iotcore]
MQTT over WSS
- MQTT 프로토콜을 웹 소켓 위에서 보안 연결을 사용하여 전송하는 방식입니다
- webapps(in page) 내에서 직접 메세지를 sub/pub 하는 경우 websocket을 통해 MQTT를 실행하는 방식을 추천
(ref : (stackoverflow)[https://stackoverflow.com/questions/30624897/direct-mqtt-vs-mqtt-over-websocket])
장점
- 연결 유지를 위한 재접속 절차가 간소화됩니다
- 다수의 클라이언트간의 통신을 WSS와 비교하여 간편하게 활용할 수 있습니다
- QoS 레벨을 활용하여 신뢰성 있는 데이터 전송을 간편하게 구현할 수 있습니다
- 웹 브라우저와 서버간의 실시간 통신에 널리 사용되는 웹 소켓 덕분에 웹 생태계와 쉽게 통합 가능합니다
단점
HTTPS
- Hypertext transfer Protocol
- application layer protocol
- 클라이언트가 요청을 하기 위해 연결을 연 다음 응답을 받을때 까지 대기하는 전통적인 클라이언트-서버 모델을 따릅니다
(ref:(mozila_http)[https://developer.mozilla.org/en-US/docs/Web/HTTP])
LoRaWAN
- 장거리 광역 네트워크
- LPWAN(저전력 광역 네트워크)의 하나로, 장거리 통신 및 저전력 기능을 제공합니다
장점
단점
- 제한된 대역폭 , 느린 데이터 전속 속도
- 실시간 통신이 어렵고 연결의 일관성이 보장되지 않을 수 있습니다.