I nuovi paradigmi di computing come cloud, mobile e cognitive, stanno generando interessanti opportunità per le aziende sotto il profilo delrisparmio, dell’efficienza e dell’innovazione. Tuttavia, l’adesione ai modelli IT di ultima generazione in sostituzione dei sistemi tradizionali, richiedono la modernizzazione delle applicazioni aziendali legacy, nonché un cambio nelle metodologie di sviluppo del software e gestione del ciclo di vita.
Oggi le imprese di qualsiasi settore e dimensione devono fare i conti con un panorama competitivo internazionale e fortemente digitalizzato, che obbliga a una profonda revisione organizzativa con l’obiettivo di personalizzare l’offerta e accelerare il time-to-market. Il business chiede tecnologie a supporto delle attività aziendali in grado di sostenere più alti livelli di performance e flessibilità, riducendo tuttavia i costi di implementazione e manutenzione.
Le applicazioni aziendali modern diventano il cuore della nuova Digital Enterprise: veloci nella progettazione e nel deployment, rispondono alle attuali esigenze delle Lob garantendo interfacce user-friendly, accesso facile e sicuro da qualsiasi dispositivo, disponibilità sempre e ovunque.
La nuvola invece rappresenta l’architettura principe per i nuovi ecosistemi IT: si tratta di ambienti multi-cloud, dove non sono solo le infrastrutture a diventare ibride, ma le stesse applicazioni. I software infatti devono essere in grado di girare su sistemi differenti, in modalità tradizionale o as-a-service, nelle sedi aziendali o nei datacenter del provider. Si aprono quindi scenari di progettazione differenti, spaziando dall’adozione dei container (che permettono lo sviluppo rapido del software per ambienti legacy o cloud grazie all’utilizzo di risorse elementari standard) all’application modernization per la trasposizione dei programmi tradizionali verso i modelli as-a-service e sulla nuvola.
L’obsolescenza delle applicazioni aziendali oggi è un problema spinoso per moltissime organizzazioni, uno che riguarda sia il personale IT sia l’utenza aziendale. L’impiego di software basati su framework ormai superati o addirittura giunti al fine vita (quindi rimasti senza aggiornamenti di funzionalità e sicurezza) comporta infatti numerose criticità sia in termini di gestione e protezione sia sul piano delle performance e della semplicità d’uso.
Occorre pertanto perseguire una strategia di modernizzazione del parco software, nell’ottica di una strategia cloud first, che permetta di soddisfare le necessità applicative del business (accesso multi-device, disponibilità 24x7, usability, velocità di time-to-market e così via).
Le tattiche per conseguire l’obiettivo e adattare i programmi al paradigma as-a-service possono essere molteplici.
Il re-hosting (ovvero la cosiddetta strategia Lift-and-Shift) consiste nella semplice trasposizione dell’applicazione aziendale e dei dati associati sulla nuvola senza modifiche al codice o alle caratteristiche funzionali.
Il re-platforming (conosciuto anche come approccio Lift-Tinker-and-Shift) comporta la modifica più o meno profonda del codice con l’obiettivo di ottimizzare gli attributi funzionali e strutturali dell’applicazione per cogliere appieno i benefici della migrazione su infrastrutture as-a-service e semplificare le successive operazioni di manutenzione. L’applicazione aziendale, migliorata in termini di flessibilità e integrazione con le tecnologie cloud native, potrà quindi sfruttare e avvantaggiarsi di tutto un nuovo portfolio di servizi come ad esempio le architetture serverless o i database sulla nuvola.
A volte però si rendono necessari interventi più spinti e il programma va riscritto completamente partendo da zero ma preservandone le caratteristiche funzionali. Il re-building punta a sviluppare una nuova applicazione aziendale cloud native, utilizzando direttamente le architetture a microservizi e gli strumenti messi a disposizione dagli ambienti PaaS (Platform-as-a-Service). La tecnica della containerizzazione si rivela oggi tra le più accreditate per lo sviluppo di applicazioni moderne con un alto livello di scalabilità, velocità di deployment e portabilità tra ambienti eterogenei. Semplificando, un container è un server virtualizzato a livello di sistema operativo. A differenza delle macchine virtuali, infatti, non ricrea un’istanza di tutti gli asset fisici (sistemi di storage, unità di calcolo, apparati di rete e così via) ma solo dell’ambiente di esecuzione delle applicazioni. I container mettono sostanzialmente a disposizione delle applicazioni risorse reali condivise, accessibili secondo criteri stabiliti; rispetto a una VM, richiedono meno risorse computazionali e tempi di attivazione ridotti.
Ovviamente non sempre è possibile eseguire il re-hosting applicativo e in certi casi le altre tecniche di modernizzazione possono risultare poco convenienti. Esistono infatti situazioni in cui si rende necessaria la sostituzione delle vecchie applicazioni con altre soluzioni cloud-native, in grado di svolgere analoghe funzionalità.
Come ultima considerazione, bisognerebbe valutare se le applicazioni in oggetto siano davvero indispensabili alle attività aziendali oppure potrebbero essere tranquillamente dismesse.
È chiaro che il passaggio alle applicazioni aziendali moderne comporta uno sforzo non banale per l’intera organizzazione (i Sistemi Informativi devono impiegare tempo e risorse per la migrazione in cloud o l’eventuale software selection, ma anche gli utenti devono essere formati e abituarsi ai nuovi strumenti). È quindi preferibile studiare a monte quali software sono utili all’azienda e vanno mantenuti, lasciando aperta l’ipotesi di dismettere alcuni programmi.
La scelta di aprirsi all’application modernization implica anche una migliore collaborazione tra team informatico e utenza aziendale: è infatti sulla spinta del business che si attiva il processo di evoluzione applicativa, alla luce delle nuove necessità competitive. Saranno quindi le Lob a chiarire i propri bisogni e a richiedere nuove funzionalità software ai colleghi dell’IT. Importante risulta anche l’adozione di metodologie DevOps e Agile per la progettazione applicativa: lavorando in costante sinergia, i team di sviluppo e produzione possono accelerare i tempi di rilascio dei software, con la possibilità di apportare modifiche molto rapidamente, venendo incontro alle richieste del business.