Lessons Learned - Lo Sviluppo dei Software nell'era dell'IoT

L'Internet degli Oggetti è una realtà già da molto tempo. Nel 2017 i dispositivi collegati tramite IoT (Internet of Things) erano 27 miliardi, cifra destinata a raggiungere i 125 miliardi entro il 2030. Si prevede che entro il 2022 il settore dei prodotti IoT darà vita a un mercato da 561 miliardi di dollari. Questa tendenza verso prodotti sempre più connessi porterà ad alcuni cambiamenti nello sviluppo dei software. Confrontando lo sviluppo di software IoT con gli scenari di sviluppo tradizionali, ci si rende conto che nell'era dell'IoT gli sviluppatori si trovano ad affrontare nuove sfide tecniche e metodologiche tuttavia difficili da riconoscere a prima vista. In particolare, riuscire a garantire la qualità del software può ben presto diventare un ostacolo. Decisioni errate relativamente all'architettura hanno come risultato la realizzazione di software di difficile manutenzione e comportano rischi per la sicurezza. Le conseguenze consistono in costi elevati e una competitività ridotta.

Tuttavia, nonostante gli ostacoli e le innumerevoli sfide che pongono, i progetti IoT rappresentano la soluzione per sviluppare software in maniera sostenibile e in un futuro non troppo lontano non sarà più possibile farne a meno. Concept Reply ha già dimostrato le proprie competenze in molti progetti nell'ambito dell'IoT e ha acquisito una serie di conoscenze fondamentali, utili per superare queste sfide.

  • strip-0

    LEZIONE 1: LA PROGRAMMAZIONE DELLA SICUREZZA PRIMA DI TUTTO

    Un ambiente IoT è estremamente complesso, poiché prevede numerosi elementi che comunicano tra loro scambiandosi dati. Spesso le falle legate alla sicurezza possono essere risolte rapidamente a livello di gateway o eliminando direttamente l'elemento vulnerabile. Allo stesso tempo, a livello di dispositivo vi sono requisiti particolari (come microcontrollori speciali o una memoria limitata), il che significa che le correzioni non sono disponibili rapidamente. Fin dall'inizio è necessario programmare un'opzione di aggiornamento dei dispositivi, con una funzione "over the air". Anche un'architettura software che preveda la presenza di ostacoli e limitazioni d'accesso ai gateway o al server dell'app può rivelarsi utile nel caso in cui si verifichi una violazione.

  • LEZIONE 2: I SIMULATORI DEI DISPOSITIVI COME SUPPORTO PER FARE LA PROPRIA SCELTA

    Oltre al frontend sul client e al backend sul server, vengono utilizzati il software Edge sul gateway IoT, responsabile della connessione a Internet e dell'elaborazione dei dati in maniera semplice, nonché il "Thing Software" sul dispositivo vero e proprio, come ad esempio un sensore. Questa complessità di sistema comporta uno sforzo aggiuntivo in fase di test. Dato che nelle prime fasi del progetto solitamente i dispositivi veri e propri non sono disponibili, i simulatori diventano indispensabili. Tra le altre cose, essi si rivelano utili durante la fase di test automatizzato nel cloud e permettono anche di semplificare il test di carico. Naturalmente, anche i dispositivi già esistenti possono essere integrati nell'automazione dei test, ma ciò rende più difficile il test nel cloud, poiché nella maggior parte dei casi i dispositivi si trovano all'interno del firewall della rete aziendale. È quindi necessario creare un'infrastruttura di test complessa che si differenzi dalle infrastrutture tradizionali.

    strip-1
  • strip-2

    LEZIONE 3: FUNZIONE DI AGGIORNAMENTO OTA IMPRESCINDIBILE

    Visto il numero crescente di apparecchiature e dispositivi presenti in uno scenario di IoT, è praticamente impossibile mantenere una visione globale della situazione ed eseguire manualmente gli aggiornamenti. I dispositivi impiegati spesso possono essere tenuti aggiornati solo mediante aggiornamenti "over the air" (aggiornamenti OTA). Si tratta di un aspetto da tenere in considerazione fin dall'inizio del processo di sviluppo, anche in relazione all'intero ciclo di vita dell'applicazione, poiché un dispositivo che presenta falle di sicurezza e nessun meccanismo di aggiornamento sarà inutilizzabile. Un ulteriore vantaggio deriva dal fatto che, mentre un cliente all'inizio di un progetto spesso non sa nemmeno quali siano le funzioni che in futuro dovranno essere implementate dal proprio software, un meccanismo di aggiornamento integrato consente anche la successiva implementazione di funzioni software attualmente inesistenti.

  • LEZIONE 4: ACCESSO DAL DISPOSITIVO AL CLOUD

    In caso di guasto, la ricerca della relativa causa è molto più complessa rispetto a un ambiente software tradizionale, per via dell'elevato numero di dispositivi e di eventuali gateway intermedi. I log devono quindi essere gestiti in maniera centralizzata e in modo mirato, in parte anche perché a livello del dispositivo potrebbero esservi limitazioni di spazio. Una banca dati centrale dei log (oppure Syslog-ng) è una possibile soluzione per risolvere il problema legato all'elevato numero di dispositivi. Un ulteriore problema è rappresentato dal funzionamento a batteria, che può essere risolto inviando al cloud informazioni aggiornate sullo stato ogni volta che il dispositivo è online.

    strip-3
  • strip-4

    LEZIONE 5: L'IOT NECESSITA DI METODI AGILI

    La tanto discussa customer experience non rappresenta un criterio decisivo per il successo solo nel frontend, vale a dire nelle app e nei siti Web, ma svolge un ruolo fondamentale anche nei dispositivi sotto forma di facilità d'uso. Molti clienti all'inizio non attribuiscono alcun valore alla facilità d'uso, ma si tratta di un errore, poiché questa risulta invece decisiva per il successo a lungo termine di una soluzione. Già durante la fase di sviluppo si dovrebbe tenere conto, ad esempio, di come dovrebbe essere il processo di configurazione di un gateway IoT. Poiché i progetti nell'ambito dell'IoT sono spesso progetti innovativi, uno degli obiettivi prioritari dei clienti è quello di ottenere un business impact, ad esempio riducendo i costi di manutenzione o vendendo funzioni software generiche. Dato che proprio nelle prime fasi è difficile valutare il business impact a cui aspirare, l'adozione di un approccio agile si rivela fondamentale. Il business case può quindi essere sviluppato in parallelo. La sfida consiste nel rimanere concentrati e non perdersi in caratteristiche inutili.

  • LEZIONE 6: IL VANTAGGIO DEL CLOUD NATIVE PER IL TIME-TO-MARKET

    Gli hub IoT cloud native sono dotati delle funzionalità necessarie integrate di default e pronte all'uso e possono quindi essere configurati con il minimo sforzo. Persino il passaggio graduale a un numero maggiore di dispositivi è relativamente facile. Anche gli SDK, disponibili per molte versioni software dei dispositivi, contribuiscono ad accelerare lo sviluppo di un software. L'alternativa agli hub IoT cloud native sono gli hub IoT sviluppati autonomamente (basati su Kubernetes, prodotti open source e software personalizzati), che possono essere progettati per funzionare su diversi ambienti cloud, rendendo quindi il cliente indipendente dal fornitore del cloud.

    strip-5
  • strip-6

    LEZIONE 7: EVITARE UNO SVILUPPO SEPARATO DEI COMPONENTI INTEGRATI

    In questo caso, la contrapposizione riguarda temi come l'efficienza energetica, la disponibilità e le prestazioni. Per esempio, il requisito di una copertura ad ampio raggio richiede una notevole potenza di trasmissione del dispositivo ma può essere mantenuta solo temporaneamente, a causa dell'elevata energia richiesta. Tuttavia, il dimensionamento di un componente hardware avviene in base a esigenze specifiche che lasciano poco spazio alla flessibilità necessaria per soddisfare tutti i criteri sopra citati (efficienza energetica, disponibilità e prestazioni). Per questi motivi, una pianificazione preventiva si rivela fondamentale. Le domande più importanti sono: i requisiti possono essere implementati anche in futuro con un hardware pianificato? Quanta flessibilità è necessaria?

MAGGIORI INFORMAZIONI

Per saperne di più, scarica il white paper completo di esempi di best practice e un confronto dettagliato tra lo scenario di sviluppo software tradizionale e IoT.

Con un partner di sviluppo competente come Concept Reply al proprio fianco, è possibile approcciare i progetti di IoT in maniera strutturata e implementarli in modo ottimale: si incrementa la qualità del software, si evitano le iterazioni, si riducono (ulteriori) costi di sviluppo, si aumenta la soddisfazione del cliente e si abbassano i costi di manutenzione.