Architettura dei prodotti della piattaforma IoT su Google Cloud

I prodotti della piattaforma IoT in genere forniscono connettività dati MQTT e HTTPS di base. Consentono inoltre di eseguire il provisioning dei dispositivi e offrono autenticazione e gestione, archiviazione e visualizzazione della telemetria, elaborazione dei dati e avvisi. Le organizzazioni spesso usano le piattaforme IoT quando un broker MQTT autonomo non è sufficiente per un caso d'uso ed è necessario un prodotto di piattaforma IoT più completo. Una piattaforma IoT fornisce un'interfaccia unificata per la gestione di una raccolta eterogenea di dispositivi. Questa interfaccia è importante per molte applicazioni dei dispositivi connessi ed è una differenza fondamentale tra una piattaforma IoT e un broker MQTT autonomo. Questo documento descrive le considerazioni sull'architettura di base e i consigli che devi fare prima di eseguire il deployment di un'architettura di prodotto di una piattaforma IoT su Google Cloud.

Questo documento fa parte di una serie di documenti che forniscono informazioni sulle architetture IoT su Google Cloud e sulla migrazione da IoT Core. Gli altri documenti di questa serie includono:

Il seguente diagramma mostra un'architettura di esempio con un prodotto di piattaforma IoT generico in esecuzione su Google Cloud.

Un'architettura generica di una piattaforma IoT (flusso degli eventi descritto nel testo che segue.

Come mostrato nel diagramma precedente, la piattaforma IoT esegue il deployment di un endpoint o di un broker MQTT per la connettività dei dispositivi. La piattaforma IoT è collegata a un bilanciatore del carico di rete proxy esterno per distribuire il traffico dai dispositivi periferici. Ulteriori applicazioni IoT possono connettersi alla piattaforma IoT tramite Pub/Sub o utilizzando il connettore Dataflow MQTT.

La piattaforma IoT offre una serie di servizi di gestione dei dispositivi. Come mostrato nello schema, questi servizi sono i seguenti:

  • Archivio credenziali dispositivo
  • Motore regole
  • Autenticazione e autorizzazione del dispositivo
  • Gestione delle configurazioni dei dispositivi
  • Registro dispositivi
  • Gestione degli aggiornamenti dei dispositivi

I prodotti della piattaforma IoT in genere includono anche servizi come digital twin funzionalità, interfacce di sviluppo low-code, funzionalità di avviso e notifica e altre funzionalità di analisi.

Considerazioni e scelte sull'architettura

Le seguenti sezioni descrivono le scelte architettoniche che puoi fare per un'architettura di prodotto di una piattaforma IoT e l'impatto di queste scelte.

Endpoint di importazione

La maggior parte delle applicazioni di piattaforme IoT commerciali include un endpoint MQTT e, di solito, anche un endpoint HTTPS per l'importazione dati dai dispositivi connessi.

MQTT

Una piattaforma IoT implementa un endpoint MQTT in uno dei seguenti modi:

  • Un connettore tra MQTT e un altro servizio di messaggistica
  • Un broker MQTT che implementa la specifica MQTT completa

Quando valuti le piattaforme IoT commerciali, è importante sapere quale degli approcci precedenti è stato scelto dal fornitore per il prodotto, in modo da poter determinare le implicazioni per il tuo caso d'uso.

In alcuni casi, l'endpoint MQTT connette solo i client MQTT a un servizio di messaggistica di backend, come Kafka o Pub/Sub. Questo tipo di endpoint di solito non implementa la specifica completa del protocollo MQTT e spesso non include funzionalità come i livelli QoS 1 e 2 o le sottoscrizioni condivise. Il vantaggio di questo approccio è che diminuisce la complessità nella piattaforma IoT, poiché non esiste un'applicazione di broker MQTT separata. I costi operativi sono inferiori e la manutenzione è più semplice rispetto a quando la piattaforma utilizza un broker MQTT separato. Tuttavia, a causa del supporto ridotto per le funzionalità più avanzate del protocollo MQTT, questo approccio riduce la flessibilità e le funzionalità per il trasporto dei messaggi MQTT rispetto a un broker MQTT autonomo che implementa la specifica MQTT completa.

Altre piattaforme IoT forniscono un broker MQTT completo all'interno della piattaforma, come mostrato nell'architettura di esempio di questo documento. Questo broker potrebbe essere uno dei broker open source esistenti o un'implementazione di broker proprietaria. Un broker MQTT completo fornisce l'intera funzionalità MQTT bidirezionale descritta in precedenza, ma un broker completo può aggiungere complessità e costi operativi alla gestione della piattaforma IoT.

HTTPS e altri protocolli supplementari

Oltre a MQTT, molte piattaforme IoT forniscono più endpoint di importazione dati rispetto a quelli mostrati nell'architettura principale descritta in questo documento.

HTTPS è un protocollo alternativo comune a MQTT per i casi d'uso dei dispositivi connessi. Ha un overhead maggiore rispetto a MQTT, ma è più ampiamente supportato dai dispositivi mobili, come i telefoni, dai browser web e da altre applicazioni. Viene utilizzato spesso in alcune applicazioni per dispositivi connessi ed è supportato da piattaforme open source come Eclipse Hono e da molti prodotti commerciali.

Molte applicazioni per dispositivi vincolati utilizzano il protocollo CoAP (Consad Application Protocol) definito in RFC 7252 come alternativa a MQTT. CoAP sceglie come target clienti con overhead e dimensioni ridotte per dispositivi e sensori incorporati. Molte applicazioni di piattaforme IoT commerciali forniscono anche un endpoint CoAP.

Bilanciamento del carico

Per ulteriori informazioni sulla scelta del bilanciatore del carico migliore per la tua architettura, consulta la sezione sul bilanciamento del carico dell'architettura di broker MQTT autonomo su Google Cloud, perché queste considerazioni sono valide anche per questo caso.

Autenticazione del dispositivo e gestione delle credenziali

La gestione delle credenziali e dell'autenticazione dei dispositivi è una parte fondamentale del funzionamento di una piattaforma IoT. I metodi di autenticazione supportati dai dispositivi connessi variano notevolmente a seconda delle applicazioni e dei fattori di forma dei dispositivi. È importante selezionare il metodo di autenticazione appropriato per il caso d'uso di destinazione e implementare correttamente lo schema di autenticazione scelto.

A differenza di un broker MQTT autonomo, una piattaforma IoT fornisce servizi integrati per gestire l'identità e le credenziali dei dispositivi. La maggior parte delle piattaforme IoT utilizza l'autenticazione tramite certificati client X.509 per l'autenticazione, l'autenticazione basata su token JWT (spesso combinata con OAuth 2.0) e l'autenticazione basata su nome utente e password. Alcune piattaforme supportano anche l'integrazione con un provider di autenticazione LDAP esterno.

Per alcuni dispositivi vincolati, l'autenticazione JWT o basata su nome utente e password potrebbe essere più appropriata, poiché questi schemi richiedono meno risorse su un dispositivo connesso. Quando utilizzi l'autenticazione JWT o il nome utente e la password, è importante crittografare la connessione di rete separatamente per l'autenticazione mTLS, poiché una connessione criptata non è necessaria per nessuno di questi metodi di autenticazione. L'autenticazione dei certificati X.509, invece, consuma più risorse sul dispositivo connesso, ma viene in genere utilizzata in una connessione criptata con mTLS e offre quindi un elevato livello di sicurezza.

Anche il provisioning delle credenziali di autenticazione sul dispositivo periferico in fase di produzione è una parte importante dello schema di autenticazione dei dispositivi connessi, ma non rientra nell'ambito di questo documento.

Per ulteriori informazioni sull'autenticazione e sulla gestione delle credenziali, consulta le best practice per l'esecuzione di un backend IoT su Google Cloud.

Gestisci i dispositivi connessi

In genere, i dispositivi connessi pubblicano sulla piattaforma eventi di telemetria e informazioni sullo stato tramite uno degli endpoint di importazione, come MQTT. Se utilizzi una piattaforma IoT multi-protocollo, i dispositivi possono comunicare usando uno qualsiasi dei protocolli supportati.

Consigliamo alla tua organizzazione di utilizzare una piattaforma IoT con le seguenti funzionalità:

  • Aggiornamenti software e di sistema:distribuzione e rollback di aggiornamenti di firmware, software e applicazioni ai dispositivi connessi. Questi aggiornamenti di solito comportano anche l'archiviazione e la gestione degli aggiornamenti stessi.
  • Aggiornamenti della configurazione: distribuzione, archiviazione e rollback degli aggiornamenti alla configurazione delle applicazioni di cui è stato eseguito il deployment sui dispositivi connessi.
  • Creazione e gestione delle credenziali: creazione di nuove credenziali del dispositivo, invio di tali credenziali al dispositivo connesso, controllo dei tentativi e delle attività di accesso al dispositivo e revoca delle credenziali compromesse o scadute al momento opportuno.
  • Motore delle regole ed elaborazione dei dati: la definizione e l'esecuzione di regole basate sui dati e altre fasi di elaborazione dei dati. Questa funzionalità spesso include un tipo di interfaccia low-code per la definizione di regole e pipeline di elaborazione dei dati.

Carichi di lavoro di backend

La maggior parte delle piattaforme IoT offre funzionalità interne di archiviazione e trasporto dei dati che consentono di connetterti ai carichi di lavoro e alle applicazioni di backend. AMQP, RabbitMQ e Kafka sono comunemente utilizzati per fornire il trasporto interno di dati. Tutti questi elementi possono essere connessi a Pub/Sub tramite l'SDK Pub/Sub. Puoi anche utilizzare un sistema di database integrato, come PostgreSQL, per archiviare i dati nella piattaforma. In molti casi, la piattaforma IoT può essere configurata per l'utilizzo diretto di uno dei prodotti Cloud Storage, ad esempio Cloud SQL, Firebase o BigQuery.

Se la piattaforma IoT dispone di un broker MQTT completo, le applicazioni di backend possono anche comunicare con i dispositivi utilizzando la funzionalità MQTT della piattaforma. Se l'applicazione supporta MQTT, può connettersi al broker come sottoscrittore. In assenza di supporto MQTT, Apache Beam fornisce un driver MQTT, che consente l'integrazione bidirezionale con Dataflow e con altri deployment Beam.

Casi d'uso

Le seguenti sezioni descrivono scenari di esempio in cui una piattaforma IoT rappresenta una scelta architetturale migliore rispetto a un broker MQTT autonomo o a una connessione diretta a Pub/Sub.

Gestione smart di elettrodomestici

Le applicazioni che gestiscono più smart appliance sono adatte a una piattaforma IoT. Un esempio di questa applicazione è una piattaforma per gestire elettrodomestici da cucina, come lavastoviglie e macchine per il caffè. In genere, questi dispositivi si connettono a un'applicazione basata su cloud, direttamente tramite Wi-Fi o tramite un gateway locale che utilizza Bluetooth Low Energy (BLE) o un altro protocollo locale. Le funzionalità di gestione di una piattaforma IoT sono importanti in questo caso per monitorare lo stato di ciascun dispositivo, gestire gli aggiornamenti software e le patch di sicurezza e acquisire l'attività dei dispositivi al fine di fornire informazioni critiche al produttore e al cliente. Queste funzionalità esulano dall'ambito di un broker MQTT di base. Come minimo, un repository di informazioni sul dispositivo, un database di stato del dispositivo, un datastore di telemetria e un'interfaccia di analisi sono tutti fondamentali per creare una piattaforma di smart appliance di successo.

Logistica e monitoraggio degli asset

Per un'applicazione di logistica e monitoraggio degli asset, un prodotto di una piattaforma IoT offre funzionalità più complete rispetto a un broker MQTT di base, perciò è la scelta migliore per questo caso d'uso. Il monitoraggio dello stato attuale e passato e della posizione di un grande parco risorse dipende da un solido database dello stato dei dispositivi e da un sistema di gestione delle identità. Man mano che viene eseguito il deployment dei nuovi asset, questi devono essere connessi alla piattaforma nel modo più semplice possibile e successivamente monitorati per tutto il ciclo di vita degli asset. In molti casi, l'applicazione raccoglie anche altre informazioni del sensore sull'asset, come temperatura, umidità e pressione atmosferica locali o dati di accelerazione e posizionamento 3D per rilevare cali o movimenti imprevisti. Tutti questi dati devono essere importati e associati all'asset corretto per l'analisi in qualsiasi applicazione di backend, pertanto la gestione completa dei dispositivi fornita dalla piattaforma IoT è una funzionalità importante.

Passaggi successivi