Di Jonas Sticha e Christian Hoff, Software Engineer, BMW Car IT GmbH
L’innovation sta accelerando nel mercato automobilistico, portando novità interessanti all’esperienza in-vehicle. Le tecnologie relative all’auto connessa offrono nuovi modelli di business e una vasta gamma di servizi software e data-driven.
Per questi ultimi le possibilità sono infinite. Ma c’è un trend in particolare comune a svariati casi d’uso: stanno diventando sempre più distribuiti. Per fornire un’ottima user experience, i servizi in-vehicle connessi spesso devono integrare dati molto diversi tra loro.
I servizi connessi in BMW Group
In BMW Group sfruttiamo le tecnologie dell’auto connessa per offrire ai conducenti servizi avanzati che spaziano dal parcheggio on-street alle informazioni sul traffico. Tuttavia, ci rendiamo conto che il passaggio a vetture elettriche e autonome richiederà servizi più complessi.
I nostri veicoli elettrici, ad esempio, richiedono che i piloti non solo siano aggiornati sullo stato della batteria della vettura, ma che sappiano anche a quale distanza si trova la colonnina di ricarica. Oltre alle indicazioni stradali, la navigazione satellitare dovrà infatti fornire dettagli relativi all’occupazione della stazione di ricarica, all’eventuale possibilità di prenotarla, al costo e ai dati di fatturazione. Tutte queste informazioni richiedono l’integrazione di dati e servizi.
A mano a mano che nuove tecnologia emergono è fondamentale comprendere come poterle utilizzare per i nostri veicoli e i software engineer del dipartimento di ricerca le analizzano a fondo, esplorandone il potenziale per futuri servizi BMW Group.
Connettersi ad ambienti IoT-cloud
Abbiamo volute esplorare come i sistemi di backend implementati su nuove architetture serverless si integrano con diverse fonti di dati e service provider e come si collegano poi ai veicoli di BMW Group con il protocollo di messaggistica MQ Telemetry Transport (MQTT). Il nostro obiettivo era quello di effettuare una valutazione tecnica per capire l’infrastruttura broker di backend e le implicazioni sullo stack di comunicazione della vettura, in particolare come collegare le auto BMW con la nuova tecnologia IoT e come sfruttare il cloud.
Abbiamo immaginato una sorta di sondaggio ‘Point of Interest’ (POI), una proof of concept che ci avrebbe permesso di esplorare la tecnologia e creare qualcosa che gli utenti potessero sperimentare. Funzionava così: un gruppo di amici che viaggia su auto diverse decide di fare una pausa e sceglie il luogo avvalendosi di una app in-vehicle in tempo reale per votare le opzioni proposte da un sistema di backend. Dopo aver deciso dove fermarsi tutti ricevono le indicazioni stradali necessarie per raggiungere la meta.
Semplificare l’implementazione
I vantaggi di costo e flessibilità dell’open source ci hanno spinti a valutare diverse piattaforme cloud. Inoltre, la tecnologia aperta ci permetteva di ispezionare il codice per meglio comprenderne l’operatività. Abbiamo paragonato le funzionalità, la prontezza tecnica e l’ecosistema, oltre alle offerte commerciali.
Dopo aver valutato alcune architetture serverless abbiamo scelto OpenWhisk e poi la piattaforma applicativa cloud Red Hat OpenShift per il deployment di servizi di messaggistica EnMasse e del framework. La selezione di OpenShift è dipesa dall’interfaccia smart integrate e semplice da utilizzare e perché offriva la possibilità di condividere idee con gli sviluppatori e i solution architect di Red Hat.
I veicoli si connettono al servizio EnMasse tramite il protocollo MQTT e i messaggi in ingresso fanno scattare OpenWhisk Actions, che implementano la backend application logic. Il ‘POI poll PoC’ ha richiesto meno di tre settimane di lavoro.
Scalabile su milioni di veicoli
I sistemi gestiti di OpenShift ci assicurano la libertà di implementare i nostri servizi connected IoT in qualunque ambiente cloud senza preoccuparci di reti, sistemi operativi o di scalarli a milioni di utenti. Prevediamo infatti che queste piattaforme ci forniranno il load balancing e il messaging persistente di cui abbiamo bisogno per scalare come vogliamo.