I prodotti della piattaforma IoT in genere forniscono connettività di base dei dati MQTT e HTTPS. Consentono inoltre di eseguire il provisioning dei dispositivi e forniscono autenticazione e gestione, visualizzazione e archiviazione della telemetria, elaborazione dei dati e avvisi. Le organizzazioni utilizzano spesso le piattaforme IoT quando un broker MQTT autonomo non è sufficiente per un caso d'uso e serve 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 di dispositivi connessi ed è una differenza fondamentale tra una piattaforma IoT e un broker MQTT autonomo. Questo documento descrive le considerazioni e i consigli di base sull'architettura che devi prendere in considerazione prima di implementare 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:
- Panoramica delle architetture dei dispositivi connessi su Google Cloud
- 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
- Dispositivo nell'architettura Pub/Sub per 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 di piattaforma IoT generico in esecuzione su Google Cloud.
Come mostrato nel diagramma precedente, la piattaforma IoT esegue il deployment di un broker MQTT o di un endpoint 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 Dataflow.
La piattaforma IoT fornisce un insieme di servizi di gestione dei dispositivi. Come mostrato nel diagramma, questi servizi sono i seguenti:
- Archivio delle credenziali del dispositivo
- Motore delle regole
- Autenticazione e autorizzazione del dispositivo
- Gestione della configurazione dei dispositivi
- Registro dei dispositivi
- Gestione degli aggiornamenti dei dispositivi
I prodotti della piattaforma IoT in genere includono anche servizi come funzionalità di digital twin, interfacce di sviluppo low-code, funzionalità di avvisi e notifiche e altre funzionalità di analisi.
Considerazioni e scelte architettoniche
Le sezioni seguenti descrivono le scelte architetturali 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 commerciale include un endpoint MQTT e in genere anche un endpoint HTTPS per l'importazione datii 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 iscrizioni condivise. 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 offre 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 proprietaria del broker. 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 di 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 da dispositivi mobili come gli smartphone, nonché da browser web e altre applicazioni. Viene utilizzato di frequente in alcune applicazioni per dispositivi connessi 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 è destinato a client con un overhead ridotto e un ingombro ridotto per sensori e dispositivi incorporati. Molte applicazioni di piattaforme IoT commerciali forniscono anche un endpoint CoAP.
Bilanciamento del carico
Per saperne di più 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 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 del dispositivo. La maggior parte delle piattaforme IoT utilizza l'autenticazione dei certificati client X.509 per l'autenticazione, 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 con risorse limitate, 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 tramite 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.
Il provisioning delle credenziali di autenticazione sul dispositivo perimetrale al momento della produzione è anche una parte importante dello schema di autenticazione del dispositivo connesso, ma non rientra nell'ambito di questo documento.
Per ulteriori informazioni 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 multi-protocollo, i dispositivi possono comunicare utilizzando uno qualsiasi dei protocolli supportati.
Consigliamo alla tua organizzazione 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 di solito 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:creazione di nuove credenziali del dispositivo, invio di queste credenziali al dispositivo connesso, controllo dei tentativi di accesso e dell'attività del dispositivo e revoca delle credenziali compromesse o scadute al momento opportuno.
- Motore di 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 definire regole e pipeline di elaborazione dei dati.
Workload di backend
La maggior parte delle piattaforme IoT fornisce funzionalità interne di archiviazione e trasporto dei dati che ti consentono di connetterti ai tuoi backend e alle tue applicazioni. AMQP, RabbitMQ e Kafka vengono comunemente utilizzati per fornire il trasporto interno dei dati. Tutti questi possono essere connessi 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, 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. Se non è presente il supporto MQTT, Apache Beam fornisce un driver MQTT, che consente l'integrazione bidirezionale con Dataflow e altre implementazioni di Beam.
Casi d'uso
Le sezioni seguenti descrivono scenari di esempio in cui una piattaforma IoT è una scelta architetturale migliore rispetto a un broker MQTT autonomo o a una connessione diretta a Pub/Sub.
Gestione degli elettrodomestici intelligenti
Le applicazioni che gestiscono più elettrodomestici smart sono adatte a una piattaforma IoT. Un esempio di applicazione di questo tipo è una piattaforma per gestire gli elettrodomestici della cucina, come lavastoviglie e macchinette 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 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 critiche 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 essenziali per creare una piattaforma di elettrodomestici intelligenti 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 grande flotta di asset dipende da un solido database dello stato dei dispositivi e da un sistema di gestione delle identità. Man mano che vengono implementati nuovi asset, questi devono essere collegati alla piattaforma con il minor attrito possibile e successivamente monitorati durante tutto il ciclo di vita dell'asset. In molti casi, l'applicazione raccoglie anche altre informazioni dei sensori sull'asset, come temperatura, umidità e pressione atmosferica locali o dati di posizionamento e accelerazione 3D per rilevare movimenti o cadute imprevisti. Tutti questi dati devono essere inseriti e associati all'asset corretto per l'analisi in qualsiasi applicazione di backend, pertanto la gestione dei dispositivi completa fornita dalla piattaforma IoT è una funzionalità importante.
Passaggi successivi
- Scopri di più su come connettere i dispositivi e creare applicazioni IoT su Google Cloud utilizzando Intelligent Products Essentials.
- Scopri le 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.