IoT 플랫폼 제품 아키텍처에 관한 소개
IoT 플랫폼 제품은 기본적인 MQTT 및 HTTPS 데이터 연결성을 제공하며, 장치를 프로비저닝하고 인증 및 관리, 원격 측정 저장 및 시각화, 데이터 처리, 경보 등의 기능을 제공합니다. 많은 조직에서 단독 MQTT 브로커가 사용 사례에 충분하지 않고 보다 완전한 IoT 플랫폼 제품이 필요할 때 IoT 플랫폼을 사용합니다. IoT 플랫폼은 이종 장치 모음을 관리하기 위한 통일된 인터페이스를 제공하며, 이는 많은 연결 장치 애플리케이션에 중요하며 단독 MQTT 브로커와의 주요 차이점입니다.
IoT 플랫폼은 MQTT 브로커 또는 장치 연결을 위한 엔드포인트를 배포합니다. IoT 플랫폼은 외부 프록시 네트워크 로드 밸런서에 연결되어 에지 장치로부터의 트래픽을 분산시킵니다. 추가적인 IoT 애플리케이션은 Pub/Sub 또는 Dataflow MQTT 커넥터를 통해 IoT 플랫폼에 연결할 수 있습니다. IoT 플랫폼은 장치 관리 서비스 세트를 제공하며, 이 서비스에는 장치 자격 증명 저장소, 규칙 엔진, 장치 인증 및 권한 부여, 장치 구성 관리, 장치 레지스트리, 장치 업데이트 관리 등이 포함됩니다. 또한 IoT 플랫폼 제품은 일반적으로 디지털 트윈 기능, 저코드 개발 인터페이스, 경보 및 알림 기능, 기타 분석 기능 등의 서비스를 포함합니다.
대부분의 상용 IoT 플랫폼 애플리케이션에는 MQTT 엔드포인트와 종종 연결된 장치로부터의 데이터 수집을 위한 HTTPS 엔드포인트가 포함됩니다. MQTT의 경우, IoT 플랫폼은 MQTT와 다른 메시지 서비스 사이의 커넥터 또는 전체 MQTT 사양을 구현하는 MQTT 브로커를 통해 엔드포인트를 구현합니다. 상용 IoT 플랫폼을 평가할 때, 공급업체가 제품에 대해 선택한 접근 방식을 알아야 하며, 이는 사용 사례에 대한 영향을 결정하는 데 중요합니다. 어떤 경우에는 MQTT 엔드포인트가 MQTT 클라이언트를 백엔드 메시징 서비스(예: Kafka 또는 Pub/Sub)와 연결하는 데만 사용되며, 이 경우에는 완전한 MQTT 프로토콜 사양을 구현하지 않고 QoS 레벨 1 및 2 또는 공유 구독과 같은 기능을 포함하지 않을 수 있습니다. 이 접근 방식의 장점은 IoT 플랫폼의 복잡성을 줄이고 운영 비용을 낮추며 유지 관리가 간단하지만, 보다 고급 MQTT 프로토콜 기능에 대한 지원이 줄어들어 MQTT 메시지 전송에 대한 유연성과 기능이 단독 MQTT 브로커에 비해 떨어집니다. 다른 IoT 플랫폼은 플랫폼의 일부로 완전한 MQTT 브로커를 제공하며, 이 브로커는 기존의 오픈 소스 브로커 또는 독점 브로커 구현일 수 있습니다. 완전한 MQTT 브로커는 앞서 설명한 전방향 MQTT 기능을 제공하지만, IoT 플랫폼의 관리에 복잡성과 운영 비용을 추가할 수 있습니다.
HTTPS는 연결된 장치 사용 사례에 대한 MQTT의 일반적인 대안 프로토콜이며, MQTT보다 오버헤드가 높지만 모바일 장치 및 웹 브라우저와 기타 애플리케이션에 더 널리 지원됩니다. 많은 제약 장치 애플리케이션은 RFC 7252에서 정의된 제약 애플리케이션 프로토콜(CoAP)을 MQTT 대안으로 사용합니다. CoAP은 임베디드 장치 및 센서를 위한 저오버헤드 및 소형 클라이언트를 목표로 합니다. 많은 상용 IoT 플랫폼 애플리케이션은 CoAP 엔드포인트도 제공합니다.
IoT 플랫폼의 운영의 중요한 부분인 장치 인증 및 자격 증명 관리에 관해서는, 연결된 장치에 의해 지원되는 인증 방법은 애플리케이션 및 장치 형태 요인에 따라 다양합니다. 대상 사용 사례에 적합한 인증 방법을 선택하고 선택한 인증 체계를 올바르게 구현하는 것이 중요합니다. 단독 MQTT 브로커와 달리, IoT 플랫폼은 장치 아이덴티티 및 자격 증명을 관리하는 통합 서비스를 제공합니다. 대부분의 IoT 플랫폼은 X.509 클라이언트 인증서 인증, JWT 토큰 기반 인증(종종 OAuth 2.0과 결합), 사용자 이름 및 비밀번호 인증을 사용합니다. 일부 플랫폼은 외부 LDAP 인증 제공자와의 통합도 지원합니다. 일부 제약 장치의 경우, JWT 또는 사용자 이름 및 비밀번호 인증이 더 적합할 수 있으며, 이들 체계는 연결된 장치에서 더 적은 리소스를 필요로 합니다. JWT 또는 사용자 이름 및 비밀번호 인증을 사용할 때, 네트워크 연결을 별도로 mTLS 인증으로 암호화하는 것이 중요합니다. 반대로, X.509 인증서 인증은 연결된 장치에서 더 많은 리소스를 소비하지만, 일반적으로 mTLS 암호화된 연결에서 사용되므로 높은 수준의 보안을 제공합니다.
일반적으로 연결된 장치는 MQTT와 같은 섭취 엔드포인트를 통해 플랫폼에 원격 측정 이벤트 및 상태 정보를 게시합니다. 다중 프로토콜 IoT 플랫폼을 사용하는 경우, 장치는 지원되는 프로토콜 중 어느 하나를 사용하여 통신할 수 있습니다. 조직은 소프트웨어 및 시스템 업데이트, 구성 업데이트, 자격 증명 생성 및 관리, 규칙 엔진 및 데이터 처리와 같은 기능을 갖춘 IoT 플랫폼을 사용하는 것이 좋습니다.
대부분의 IoT 플랫폼은 AMQP, RabbitMQ, Kafka 등을 사용하여 내부 데이터 전송을 제공하며, 이들은 모두 Pub/Sub SDK를 사용하여 Pub/Sub에 연결할 수 있습니다. 또한 PostgreSQL과 같은 통합 데이터베이스 시스템을 플랫폼에서 데이터를 저장하는 데 사용할 수 있습니다. 많은 경우, IoT 플랫폼은 Cloud Storage 제품(예: Cloud SQL, Firebase, BigQuery)을 직접 사용하도록 구성할 수 있습니다. IoT 플랫폼에 완전한 MQTT 브로커가 있는 경우, 백엔드 애플리케이션은 플랫폼의 MQTT 기능을 사용하여 장치와 통신할 수 있습니다. 애플리케이션이 MQTT를 지원하는 경우, 애플리케이션은 구독자로서 브로커에 연결할 수 있습니다. MQTT를 지원하지 않는 경우, Apache Beam은 MQTT 드라이버를 제공하여 Dataflow 및 다른 Beam 배포와 양방향 통합을 가능하게 합니다.
IoT 플랫폼은 스마트 가전 관리 및 물류 및 자산 추적과 같은 사용 사례에 단독 MQTT 브로커 또는 Pub/Sub에 직접 연결하는 것보다 더 나은 아키텍처 선택입니다. 스마트 가전 관리 애플리케이션의 경우, IoT 플랫폼의 관리 기능은 각 장치의 상태 모니터링, 소프트웨어 업데이트 및 보안 패치 관리, 장치 활동 캡처를 통해 제조업체 및 고객에게 중요한 정보를 제공하는 데 중요합니다. 물류 및 자산 추적 애플리케이션의 경우, IoT 플랫폼 제품은 강력한 장치 상태 데이터베이스 및 아이덴티티 관리 시스템을 통해 대규모 자산의 현재 및 과거 상태 및 위치를 모니터링하는 데 더 완전한 기능을 제공합니다.