Controllo della flotta di veicoli a guida automatica

Servizio app di Azure
App contenitore di Azure
Registro Azure Container
Hub IoT Azure
Rete virtuale di Azure

Questa architettura di esempio illustra un approccio end-to-end per un OEM (Original Equipment Manufacturer) del settore automobilistico e include un'architettura di riferimento e diverse librerie pubblicate open source di supporto che possono essere riutilizzate. Microsoft ha riprogettato il software di controllo della flotta per essere a disponibilità elevata, con ridondanza geografica e indipendente dal fornitore e per l'esecuzione in un contesto cloud ibrido.

Architettura

Ridondanza geografica con failover senza tempi di inattività per una disponibilità del 99,9% e ripristino di emergenza

Screenshot di un'istanza del back-end, costituita dai componenti seguenti, viene distribuita in due aree di Azure: hub IoT di Azure, Inserimento, RabbitMQ, Stato della missione, Stato del veicolo, Job Manager e Geo DB.

Scaricare un file di Visio di questa architettura.

Workflow

  • Un'istanza del back-end, costituita dai componenti seguenti, viene distribuita in due aree di Azure: hub IoT di Azure, inserimento dati, RabbitMQ, stato della mission, stato del veicolo, gestore del processo e database geografico. L'hub IoT si connette al set di applicazioni create usando un'architettura di microservizi in Servizio app di Azure usando la funzionalità app Web del servizio app, app Web per contenitori o Kubernetes.
  • Un sistema di elezione leader determina quale back-end controlla i veicoli a guida automatica nella fabbrica in un determinato momento. Se il back-end in carica ha esito negativo, l'elezione leader trasferisce immediatamente il controllo al back-end nell'altra area.
  • Grazie a questa architettura di failover con ridondanza geografica e senza tempi di inattività, il software di controllo AGV in esecuzione in Azure ottiene una disponibilità del 99,9%, a condizione che la connessione Internet e i sottosistemi esterni, ad esempio SAP, non siano fattori limitanti.

Kubernetes e RabbitMQ per distribuzioni indipendenti dai data center

Screenshot di Kubernetes e RabbitMQ distribuiti in un dispositivo Azure IoT Edge.

Scaricare un file di Visio di questa architettura.

Negli scenari in cui la connessione Internet tra uno stabilimento di produzione e Azure è un fattore limitante, il software di controllo AGV può essere distribuito anche nei nodi di calcolo locali. Usando Kubernetes e RabbitMQ come tecnologie indipendenti dalla piattaforma, il livello dell'applicazione descritto nella sezione precedente viene distribuito in un Azure IoT Edge.

Implementazione della specifica VDA 5050 per la comunicazione indipendente dal fornitore AGV

Screenshot della soluzione di controllo della flotta AGV back-end in Azure.

Scaricare un file di Visio di questa architettura.

Grazie alla conformità alla specifica del connettore del veicolo VDA 5050, il software di controllo AGV può comunicare con tutti i tipi di veicoli a guida automatica di fornitori diversi purché siano conformi alla specifica VDA 5050.

Workflow

In questa architettura, è possibile visualizzare una panoramica dei diversi servizi e componenti usati per eseguire la soluzione di controllo della flotta AGV back-end in Azure:

  • Quando gli sviluppatori eseguono il commit di nuovo codice, GitHub Actions esegue automaticamente l'analisi del codice per individuare rapidamente le vulnerabilità e gli errori di codifica. Può essere usato anche per distribuire automaticamente applicazioni e componenti dell'infrastruttura.
  • Un registro contenitori archivia le immagini del contenitore usate per i diversi servizi del back-end di controllo della flotta AGV.
  • I servizi back-end vengono distribuiti in app Web per contenitori.
  • Questi servizi back-end possono connettersi a sistemi esterni usando il protocollo VDA 5050. Possono anche connettersi a una piattaforma di streaming gestita, ad esempio Kafka, e possono archiviare le informazioni sui veicoli in un database SQL di Azure.
  • Azure Key Vault archivia password, chiavi e certificati.
  • Application Insights implementa la registrazione e il monitoraggio per le applicazioni eseguite come servizi back-end.
  • Le identità gestite si connettono ai diversi servizi e risorse in Azure, eliminando la necessità per gli sviluppatori di gestire le credenziali. Forniscono un'identità per le applicazioni da usare per la connessione alle risorse che supportano l'autenticazione di Microsoft Entra.

Componenti

Servizio app di Azure è un servizio PaaS (piattaforma distribuita come servizio) per la compilazione e l'hosting di app in macchine virtuali gestite. Gestisce l'infrastruttura di calcolo sottostante in cui vengono eseguite le app. Il servizio app monitora le quote di utilizzo delle risorse e le metriche delle app, registra le informazioni di diagnostica e genera avvisi basati sulle metriche.

Rete virtuale di Azure è il blocco predefinito fondamentale per la rete privata in Azure. Questo servizio consente a diversi tipi di risorse di Azure, ad esempio Macchine virtuali di Azure, di comunicare in modo sicuro tra di esse, con Internet e con le reti locali.

Hub IoT è un servizio PaaS gestito, ospitato nel cloud, che funge da hub del messaggio centrale per la comunicazione bidirezionale tra l'applicazione IoT e i dispositivi gestiti.

App Azure Container è un servizio contenitore serverless completamente gestito per la compilazione e la distribuzione di contenitori su larga scala.

Registro Azure Container è un servizio gestito di registri Docker privato basato sull'applicazione open source Docker Registry 2.0. È possibile usare i registri contenitori di Azure con la pipeline di sviluppo e distribuzione di contenitori esistente oppure usare Attività del Registro Azure Container per compilare immagini di contenitore in Azure. È possibile eseguire compilazioni su richiesta o automatizzare completamente le compilazioni con trigger quali i commit del codice sorgente e gli aggiornamenti delle immagini di base.

Microsoft Entra ID è il servizio di gestione delle identità e degli accessi basato sul cloud che autentica utenti, servizi e applicazioni.

Archiviazione di Azure offre una soluzione di archiviazione cloud durevole, a disponibilità elevata e altamente scalabile. Include funzionalità di archiviazione di oggetti, file, dischi, code e tabelle.

RabbitMQ è un software open source di broker di messaggi che originariamente implementava il protocollo AMQP e da allora è stato esteso con un'architettura plug-in per supportare altri protocolli, tra cui Streaming Text Oriented Messaging Protocol e MQ Telemetry Transport.

Macchine virtuali di Azure offre risorse di elaborazione scalabili su richiesta che offrono la flessibilità della virtualizzazione senza la necessità di acquistare e gestire hardware fisico.

Database SQL di Azure è un motore di database PaaS completamente gestito che si occupa della maggior parte delle funzioni di gestione del database, ad esempio l'aggiornamento, l'applicazione di patch, il backup e il monitoraggio, senza alcun coinvolgimento dell'utente.

Azure Key Vault è un servizio cloud per archiviare i segreti e accedervi in modo sicuro. Un segreto è qualsiasi elemento per cui si vuole controllare rigorosamente l'accesso, ad esempio chiavi API, password, certificati o chiavi crittografiche.

Application Insights, una funzionalità di Monitoraggio di Azure, è un servizio estendibile di gestione delle prestazioni dell'applicazione per sviluppatori e professionisti DevOps. Può essere usato per monitorare le applicazioni attive. Oltre a rilevare automaticamente le anomalie nelle prestazioni, include strumenti di analisi avanzati che consentono di diagnosticare i problemi e conoscere come viene effettivamente usata l'app dagli utenti.

Alternative

Questa architettura usa Kubernetes e la funzionalità app Web di Servizio app di Azure per l'esecuzione delle applicazioni per questa soluzione. In alternativa, è possibile eseguire questi microservizi in Istanze di Azure Container, che offre il modo più semplice e rapido per eseguire un contenitore in Azure, senza dover adottare un servizio di livello superiore, ad esempio servizio Azure Kubernetes.

L'esempio locale usa macchine virtuali di Azure, che possono anche essere sostituite da tecnologie contenitore.

Un'altra opzione per eseguire questi servizi è in servizio Azure Kubernetes. Offre Kubernetes serverless per l'esecuzione di microservizi, un'esperienza CI/CD integrata, oltre a opzioni di sicurezza e governance di livello aziendale.

È anche consigliabile usare Monitoraggio di Azure in combinazione con Application Insights per analizzare e ottimizzare le prestazioni di applicazioni, contenitori, database e altre risorse e per monitorare e diagnosticare i problemi di rete.

Questa architettura usa RabbitMQ come broker di messaggi. Microsoft Azure offre anche il supporto nativo per le soluzioni di messaggistica, ad esempio archiviazione code di Azure o bus di servizio di Azure. Per un confronto, vedere Analogie e differenze tra le code di Azure e le code del bus di servizio.

Le applicazioni e i servizi in Azure vengono distribuiti usando gli script Terraform. Valutare la possibilità di usare modelli di Azure Resource Manager nativi di Azure (modelli di ARM) o Bicep per la creazione di script.

Dettagli dello scenario

La produzione automobilistica si basa sui veicoli a guida automatica (AGV) per distribuire parti alle linee di montaggio. I veicoli a guida automatica sono una parte cruciale della produzione just-in-time e della logistica automatizzata delle fabbriche. Le fabbriche che usano i veicoli a guida automatica si trovano in genere ad affrontare tre sfide:

  • Disponibilità. Qualsiasi interruzione del servizio interrompe la produzione.
  • Connettività. Le fabbriche spesso non dispongono di una connessione affidabile al cloud pubblico.
  • Blocco da parte del fornitore. Le soluzioni tradizionali per veicoli a guida automatica si basano su protocolli di comunicazione proprietari.

Questa architettura di esempio è suddivisa in tre aree operative:

  • Architettura di riferimento per il controllo della flotta basata su Azure con ridondanza geografica, failover senza tempi di inattività, disponibilità del 99,9% e ripristino di emergenza efficiente.
  • Distribuzione indipendente dal data center e locale basata su Kubernetes e RabbitMQ.
  • Comunicazione AGV indipendente dal fornitore basata sulla specifica VDA 5050 comune.

Potenziali casi d'uso

Questa soluzione è ideale per le industrie manifatturiere, automobilistiche e di trasporto. Si applica agli scenari seguenti:

  • Il cliente sta attualmente usando i veicoli a guida automatica nel processo di produzione.
  • Il cliente ha una bassa disponibilità dei veicoli a guida automatica, con un impatto sul ritorno sugli investimenti (ROI).
  • La fabbrica ha una connessione incoerente con il cloud pubblico.
  • Il cliente è membro di Open Manufacturing Platform (OMP).
  • Il cliente è membro del gruppo di lavoro Open Manufacturing Platform Autonomous Transport System (OMP ATS).

Problemi principali

La produzione a basso costo di beni si basa sull'automazione del processo di produzione e sulla consegna just-in-time delle parti alle linee di montaggio. Trasportando automaticamente le parti alle linee di montaggio, i veicoli a guida automatica contribuiscono sia alla produzione just-in-time che all'automazione della logistica delle fabbriche. In un tipico stabilimento di produzione in serie di autovetture, ad esempio, viene messa in opera un'autovettura ogni minuto. Pertanto, ogni minuto di interruzione di una linea di montaggio in uno stabilimento di produzione causa una perdita finanziaria, nell'ordine di decine di migliaia di dollari statunitensi. Gli OEM del settore automobilistico richiedono un elevato livello di affidabilità e disponibilità per i sistemi automatizzati e devono affrontare una serie di sfide:

  • Problema di disponibilità. Il software di controllo della flotta AGV esistente non soddisfa il requisito di disponibilità del 99,9%.
  • Problema di connettività. Alcuni stabilimenti di produzione non dispongono di una connessione Internet sufficientemente stabile con la larghezza di banda necessaria per consentire la comunicazione tra il software di controllo della flotta AGV ospitato nel cloud pubblico di Azure e i veicoli a guida automatica nella fabbrica. Pertanto, l'hosting del software di controllo della flotta AGV in un data center esterno alla Intranet di uno stabilimento di produzione di questo tipo non è un'opzione.
  • Problema di blocco da parte del fornitore dei veicoli a guida automatica. Non è stato possibile scambiare i veicoli a guida automatica esistenti con quelli nuovi di un altro fornitore, perché il software di controllo della flotta AGV dipendeva dal protocollo di comunicazione proprietario degli AGV esistenti.

Un'architettura che supporti la ridondanza geografica con failover senza tempi di inattività per una disponibilità del 99,9% e il ripristino di emergenza può risolvere questi problemi.

Considerazioni

Queste considerazioni implementano i pilastri di Azure Well-Architected Framework, che è un set di set di principi guida che possono essere usati per migliorare la qualità di un carico di lavoro. Per altre informazioni, vedere Framework ben progettato di Microsoft Azure.

Disponibilità e scalabilità

Le applicazioni e i servizi che costituiscono la soluzione di controllo della flotta AGV vengono distribuiti in due aree di Azure usando zone di disponibilità, ovvero posizioni fisiche univoche all'interno delle aree di Azure che consentono di proteggere macchine virtuali, applicazioni e dati da errori del data center. Anche Servizio app di Azure e il servizio Azure Kubernetes possono essere distribuiti in zone di disponibilità. L'hub IoT fornisce disponibilità elevata intra-area tramite l'implementazione delle ridondanze in quasi tutti i livelli di servizio.

Sicurezza

La sicurezza offre garanzie contro attacchi intenzionali e l'abuso di dati e sistemi preziosi. Per altre informazioni, vedere Panoramica del pilastro della sicurezza.

Usare Microsoft Entra ID per il controllo di identità e accesso e usare Azure Key Vault per gestire chiavi e segreti.

DevOps

Per distribuire automaticamente i microservizi in Kubernetes o Servizio app di Azure, è preferibile usare i processi CI/CD. Prendere in considerazione l'uso di una soluzione come Azure DevOps o GitHub Actions.

Ottimizzazione dei costi

L'ottimizzazione dei costi riguarda l'analisi dei modi per ridurre le spese non necessarie e migliorare l'efficienza operativa. Per altre informazioni, vedere Panoramica del pilastro di ottimizzazione dei costi.

In generale, usare il calcolatore prezzi di Azure per stimare i costi e usare il calcolatore del servizio Azure Kubernetes per stimare i costi per l'esecuzione del servizio Azure Kubernetes in Azure. Per altre considerazioni, vedere la sezione "Ottimizzazione dei costi" in Microsoft Azure Well-Architected Framework.

Collaboratori

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autore principale:

Passaggi successivi

Documentazione sui prodotti:

Percorsi di apprendimento Microsoft:

Articoli di panoramica del Centro architetture di Azure:

Architetture correlate: