I prodotti della piattaforma IoT in genere forniscono la connettività di base dei dati MQTT e HTTPS. Consentono inoltre di eseguire il provisioning dei dispositivi, forniscono autenticazione e gestione, archiviazione e visualizzazione della telemetria, elaborazione dei dati e avvisi. Le organizzazioni spesso utilizzano le piattaforme IoT quando un broker MQTT autonomo non è sufficiente per un caso d'uso e quando è necessario un prodotto della 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 di dispositivi connessi ed è una differenza fondamentale tra una piattaforma IoT e un broker MQTT autonomo. Questo documento illustra le considerazioni e le raccomandazioni architettoniche di base che devi fare 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:
- Panoramica delle architetture dei dispositivi connessi su Google Cloud overview
- Architettura del broker MQTT autonomo su Google Cloud
- Architettura del prodotto della piattaforma IoT su Google Cloud (questo documento)
- Best practice per l'esecuzione di un backend IoT su Google Cloud
- Architettura del dispositivo su Pub/Sub su Google Cloud
- Best practice per il provisioning e la configurazione automatici di sistemi e server edge e bare metal
Il seguente diagramma mostra un'architettura di esempio con un prodotto della piattaforma IoT generico in esecuzione su Google Cloud.
Come mostrato nel diagramma precedente, la piattaforma IoT esegue il deployment di un broker o di un endpoint MQTT per la connettività dei dispositivi. La piattaforma IoT è connessa a un bilanciatore del carico di rete proxy esterno per distribuire il traffico dai dispositivi edge. Altre applicazioni IoT possono connettersi 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 i seguenti:
- Store delle credenziali del dispositivo
- Motore regole
- Autenticazione e autorizzazione del dispositivo
- Gestione della configurazione dispositivo
- Registro dispositivi
- Gestione degli aggiornamenti dei dispositivi
I prodotti della piattaforma IoT in genere includono anche servizi come funzionalità di gemello digitale, interfacce di sviluppo low-code, funzionalità di avviso e notifica e altre funzionalità di dati e analisi.
Considerazioni e scelte architettoniche
Le sezioni seguenti descrivono le scelte architettoniche 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 della piattaforma IoT commerciali include un endpoint MQTT e in genere anche un endpoint HTTPS per 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 dei metodi precedenti ha scelto il 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 in genere non implementa la specifica completa del protocollo MQTT e spesso non include funzionalità come i livelli di QoS 1 e 2 o gli abbonamenti condivisi. Il vantaggio di questo approccio è che riduce la complessità della piattaforma IoT, perché non esiste un'applicazione 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 comporta una minore 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 proprietaria. Un broker MQTT completo fornisce la funzionalità MQTT bidirezionale completa descritta in precedenza, ma 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 è supportato più ampiamente dai dispositivi mobili come gli smartphone, dai browser web e da altre applicazioni. Viene utilizzato di frequente in alcune applicazioni di dispositivi connessi ed è supportato da piattaforme open source come Eclipse Hono e molti prodotti commerciali.
Molte applicazioni di dispositivi vincolati utilizzano (Constrained Application Protocol (CoAP), definito nella RFC 7252) come alternativa a MQTT. CoAP è destinato a client a basso overhead e di piccole dimensioni 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 relativa al bilanciamento del carico dell'articolo 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 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 con certificato client X.509, l'autenticazione basata su token JWT (spesso combinata con OAuth 2.0) e l'autenticazione con 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 con nome utente e password potrebbe essere più appropriata, perché questi schemi richiedono meno risorse su un dispositivo connesso. Quando utilizzi l'autenticazione JWT o con nome utente e password, è importante criptare la connessione di rete separatamente dall'autenticazione mTLS, perché una connessione criptata non è richiesta da nessuno di questi metodi di autenticazione. L'autenticazione con certificato X.509, al contrario, consuma più risorse sul dispositivo connesso, ma viene in genere utilizzata in una connessione criptata con mTLS e quindi fornisce un elevato livello di sicurezza.
Anche il provisioning delle credenziali di autenticazione sul dispositivo edge al momento della 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 l'articolo Best practice per l'esecuzione di un backend IoT su Google Cloud.
Gestisci 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 multi-protocollo, i dispositivi possono comunicare utilizzando uno qualsiasi dei protocolli supportati.
Ti consigliamo di utilizzare una piattaforma IoT che abbia le seguenti funzionalità:
- Aggiornamenti software e di sistema: la distribuzione e il rollback degli aggiornamenti di firmware, software e applicazioni ai dispositivi connessi. Questi aggiornamenti in genere comportano anche l'archiviazione e la gestione degli aggiornamenti stessi.
- Aggiornamenti della configurazione: la distribuzione, l'archiviazione e il rollback degli aggiornamenti alla configurazione delle applicazioni di cui è stato eseguito il deployment sui dispositivi connessi.
- Creazione e gestione delle credenziali: la creazione di nuove credenziali del dispositivo, la distribuzione di queste credenziali al dispositivo connesso, l'audit dei tentativi di accesso e dell'attività del dispositivo e la revoca delle credenziali compromesse o scadute al momento opportuno.
- Motore regole ed elaborazione dei dati: la definizione e l'esecuzione di regole basate sui dati e altri passaggi 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.
Workload di backend
La maggior parte delle piattaforme IoT fornisce funzionalità di archiviazione e trasporto dei dati interne che consentono di connetterti ai workload e alle applicazioni di backend. AMQP, RabbitMQ e Kafka sono di uso comune per fornire il trasporto interno dei dati. È possibile connettere tutti questi servizi 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, 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 subscriber. Se non è disponibile il supporto MQTT, Apache Beam fornisce un driver MQTT, che consente l'integrazione bidirezionale con Dataflow e altri deployment di Beam.
Casi d'uso
Le sezioni seguenti descrivono scenari di esempio in cui una piattaforma IoT è una scelta architettonica migliore rispetto a un broker MQTT autonomo o a una connessione diretta a Pub/Sub.
Gestione degli elettrodomestici smart
Le applicazioni che gestiscono più elettrodomestici smart sono adatte a una piattaforma IoT. Un esempio di questo tipo di applicazione è una piattaforma per la gestione di elettrodomestici da cucina come lavastoviglie e macchine del caffè. Questi dispositivi in genere si connettono a un'applicazione basata sul 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 ogni dispositivo, gestire gli aggiornamenti software e le patch di sicurezza e acquisire l'attività del dispositivo per fornire informazioni strategiche fondamentali al produttore e al cliente. Queste funzionalità non rientrano nell'ambito di un broker MQTT di base. Come minimo, un repository di informazioni sui dispositivi, un database dello stato dei dispositivi, un datastore di telemetria e un'interfaccia di analisi sono tutti elementi fondamentali per creare una piattaforma di elettrodomestici smart di successo.
Logistica e monitoraggio degli asset
Per un'applicazione di logistica e monitoraggio degli asset, un prodotto della piattaforma IoT offre funzionalità più complete rispetto a 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 una flotta di asset di grandi dimensioni dipende da un solido database dello stato dei dispositivi e da un sistema di gestione delle identità. Quando vengono eseguiti il deployment di nuovi asset, questi devono essere connessi alla piattaforma con il minor attrito possibile e successivamente monitorati durante l'intero ciclo di vita dell'asset. In molti casi, l'applicazione raccoglie anche altre informazioni sui sensori dell'asset, come 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, quindi la gestione completa dei dispositivi fornita dalla piattaforma IoT è una funzionalità importante.
Passaggi successivi
- Scopri di più sulla connessione dei dispositivi e sulla creazione di applicazioni IoT su Google Cloud utilizzando Intelligent Products Essentials.
- Scopri di più sulle pratiche per il provisioning e la configurazione automatici di sistemi e server edge e bare metal.
- Per ulteriori architetture di riferimento, diagrammi e best practice, esplora il Cloud Architecture Center.