Architettura del prodotto della piattaforma IoT su Google Cloud

Last reviewed 2024-08-09 UTC

I prodotti delle piattaforme IoT in genere forniscono connettività di dati di base MQTT e HTTPS. Ti consentono inoltre di eseguire il provisioning dei dispositivi e offrono autenticazione e gestione, archiviazione e visualizzazione della telemetria, elaborazione dei dati e generazione di avvisi. Le organizzazioni utilizzano spesso le piattaforme IoT quando un broker MQTT autonomo non è sufficiente per un caso d'uso e occorre 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 per dispositivi connessi e rappresenta una differenza fondamentale tra una piattaforma IoT e un broker MQTT autonomo. Questo documento illustra le considerazioni di architettura di base e i consigli che devi seguire prima di eseguire il deployment di un'architettura di prodotto della piattaforma IoT su Google Cloud.

Questo documento fa parte di una serie di documenti che forniscono informazioni sulle architetture IoT su Google Cloud. Gli altri documenti di questa serie includono quanto segue:

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

Un'architettura di piattaforma IoT generica (il flusso di eventi è spiegato nel testo che segue.

Come mostrato nel diagramma precedente, la piattaforma IoT esegue il deployment di un broker o un endpoint 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 edge. Altre applicazioni IoT possono collegarsi alla piattaforma IoT tramite Pub/Sub o utilizzando il connettore MQTT di Dataflow.

La piattaforma IoT fornisce un insieme di servizi di gestione dei dispositivi. Come mostrato nel diagramma, questi servizi sono:

  • Archivio delle credenziali del dispositivo
  • Motore delle regole
  • Autenticazione e autorizzazione del dispositivo
  • Gestione della configurazione del dispositivo
  • Registry del dispositivo
  • Gestione degli aggiornamenti dei dispositivi

In genere, i prodotti delle piattaforme IoT includono anche servizi come funzionalità di gemelli digitali, interfacce di sviluppo low-code, funzionalità di avviso e notifica e altre funzionalità di analisi.

Considerazioni e scelte sull'architettura

Le sezioni seguenti descrivono le scelte di architettura che puoi fare per un'architettura di prodotto della 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 solitamente 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 i client MQTT solo a un servizio di messaggistica di backend, come Kafka o Pub/Sub. Questo tipo di endpoint solitamente non implementa la specifica completa del protocollo MQTT e spesso non include funzionalità come i livelli QoS 1 e 2 o le iscrizioni condivise. Il vantaggio di questo approccio è che riduce la complessità della piattaforma IoT, in quanto non è presente un'applicazione broker MQTT separata. I costi operativi sono inferiori e la manutenzione è più semplice rispetto a una piattaforma che utilizza un broker MQTT distinto. Tuttavia, a causa del supporto ridotto per le funzionalità del protocollo MQTT più avanzate, questo approccio comporta meno flessibilità e 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 come parte della piattaforma, come mostrato nell'architettura di esempio in questo documento. Questo broker potrebbe essere uno dei broker open source esistenti o un'implementazione di broker proprietari. Un broker MQTT completo fornisce la funzionalità MQTT bidirezionale completa 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 più elevato rispetto a MQTT, ma è supportato più ampiamente dai dispositivi mobili come gli smartphone, dai browser web e da altre applicazioni. Viene utilizzato spesso in determinate applicazioni per dispositivi connessi a internet ed è supportato da piattaforme open source come Eclipse Hono e molti prodotti commerciali.

Molte applicazioni per dispositivi con limitazioni utilizzano (Constrained Application Protocol (CoAP), definito in RFC 7252) come alternativa a MQTT. CoAP ha come target client con un'occupazione ridotta e un ingombro ridotto per dispositivi e sensori embedded. 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 del broker MQTT autonomo su Google Cloud perché queste considerazioni sono applicabili anche a 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 a internet variano notevolmente in base alle applicazioni e ai fattori di forma dei dispositivi. È importante selezionare il metodo di autenticazione appropriato per il caso d'uso target 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 certificato client X.509, l'autenticazione basata su token JWT (spesso combinata con OAuth 2.0) e l'autenticazione tramite nome utente e password. Alcune piattaforme supportano anche l'integrazione con un provider di autenticazione LDAP esterno.

Per alcuni dispositivi con limitazioni, l'autenticazione JWT o con nome utente e password potrebbe essere più appropriata, in quanto questi schemi richiedono meno risorse su un dispositivo connesso. Quando utilizzi l'autenticazione JWT o tramite nome utente e password, è importante criptare la connessione di rete distintamente dall'autenticazione mTLS, perché una connessione criptata non è obbligatoria per nessuno di questi metodi di autenticazione. L'autenticazione tramite certificato X.509, invece, consuma più risorse sul dispositivo connesso, ma in genere viene utilizzata in una connessione criptata con mTLS e pertanto offre un elevato livello di sicurezza.

Il provisioning delle credenziali di autenticazione sul dispositivo perimetrale al momento della produzione è anche un elemento importante dello schema di autenticazione dei dispositivi connessi, ma non rientra nell'ambito di questo documento.

Per saperne di più sull'autenticazione e sulla gestione delle credenziali, consulta Best practice per l'esecuzione di un backend IoT su Google Cloud.

Gestire i dispositivi connessi

In genere, i dispositivi connessi pubblicano eventi di telemetria e informazioni sullo stato sulla piattaforma tramite uno degli endpoint di importazione, ad esempio MQTT. Se utilizzi una piattaforma IoT multiprotocollo, i dispositivi possono comunicare utilizzando uno qualsiasi dei protocolli supportati.

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

  • Aggiornamenti del software e del sistema:la distribuzione e il rollback di aggiornamenti di firmware, software e applicazioni sui dispositivi connessi. Questi aggiornamenti solitamente comportano anche lo spazio di archiviazione e la gestione degli aggiornamenti stessi.
  • Aggiornamenti della configurazione: il caricamento, lo stoccaggio e il 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 queste credenziali al dispositivo connesso, controllo delle attività e dei tentativi di accesso al dispositivo e revoca delle credenziali compromesse o scadute al momento opportuno.
  • Motore di regole ed elaborazione dei dati:definizione ed esecuzione di regole basate sui dati e di altri passaggi di elaborazione dei dati. Questa funzionalità spesso include un qualche tipo di interfaccia low-code per definire regole e pipeline di elaborazione dei dati.

Carichi di lavoro di backend

La maggior parte delle piattaforme IoT fornisce le proprie funzionalità di archiviazione e trasporto dei dati interni che ti consentono di connetterti ai carichi di lavoro e alle applicazioni di backend. AMQP, RabbitMQ e Kafka vengono comunemente utilizzati per fornire il trasporto interno dei dati. Tutti questi possono essere collegati a Pub/Sub utilizzando 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 utilizzare direttamente uno dei prodotti Cloud Storage, come Cloud SQL, Firebase o BigQuery.

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

Casi d'uso

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

Gestione di smart appliance

Le applicazioni che gestiscono più elettrodomestici smart sono adatte a una piattaforma IoT. Un esempio di questa applicazione è una piattaforma per gestire gli elettrodomestici da cucina come lavastoviglie e macchine da 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. In questo caso, le funzionalità di gestione di una piattaforma IoT sono importanti per monitorare lo stato di ciascun dispositivo, gestire gli aggiornamenti software e le patch di sicurezza e acquisire l'attività del dispositivo per fornire informazioni cruciali al produttore e al cliente. Queste funzionalità non rientrano nell'ambito di un broker MQTT di base. Per lo meno, un repository di informazioni sul dispositivo, un database dello stato del dispositivo, un datastore di telemetria e un'interfaccia di analisi sono tutti fondamentali per creare una piattaforma di elettrodomestici intelligenti di successo.

Logistica e monitoraggio degli asset

Per un'applicazione di logistica e monitoraggio delle risorse, un prodotto della piattaforma IoT offre funzionalità più complete di un broker MQTT di base, quindi è una scelta migliore per questo caso d'uso. Il monitoraggio dello stato e della posizione attuali e passati di un gran numero di asset dipende da un solido sistema di gestione delle identità e di un database dello stato dei dispositivi. Quando vengono implementati, i nuovi asset devono essere collegati alla piattaforma con il minor numero di problemi possibile e successivamente monitorati durante tutto il ciclo di vita. In molti casi, l'applicazione raccoglie anche altre informazioni dei sensori sull'asset, ad esempio temperatura, umidità e pressione atmosferica locali oppure dati di posizionamento e accelerazione 3D per rilevare movimenti o cadute 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