modernization

Evolvere il parco software aziendale secondo i principi di progettazione Cloud Native diventa un fattore competitivo irrinunciabile per qualsiasi organizzazione. Ecco come e perché fare application modernization.

Il Cloud si sta affermando come modello di gestione IT vincente per restituire alle organizzazioni flessibilità infrastrutturale e velocità nella delivery dei servizi digitali. Per trarre il massimo vantaggio dal Cloud, però, è molto spesso necessario procedere all’application modernization. Con questo termine ci si riferisce all’ottimizzazione del parco applicativo aziendale affinché garantisca performance, funzionalità e sicurezza all’interno dei nuovi ecosistemi informativi.

In questo articolo approfondiamo il tema della modernizzazione applicativa, analizzandone i benefici e le possibili modalità di attuazione. 

 

Ti occupi di Cloud Transformation?  Scopri gli strumenti IT e le metodologie migliori per essere davvero  competitivo

 

Cosa si intende con application modernization

Per application modernization (chiamata anche legacy modernization) si intende un aggiornamento del software esistente predisponendolo agli approcci di sviluppo più recenti in termini di linguaggi, framework e infrastruttura. Le modifiche al codice, indipendentemente dalla loro profondità, sono volte all’ottimizzazione delle prestazioni e delle funzionalità all’interno della nuova architettura ormai quasi inderogabilmente in Cloud (sono rarissimi i casi in cui un’applicazione moderna rimanga on-prem).

Si tratta comunque di un percorso che va affrontato caso per caso, in base alla tipologia di applicazioni, e in modo graduale. Per girare correttamente sulle infrastrutture Cloud, con risultati apprezzabili, non tutte le applicazioni tradizionali devono subire interventi massicci: in alcuni casi bastano poche modifiche mirate. Inoltre, il passaggio sul Cloud deve avvenire in modalità seamless, senza interferire con l’operatività e la continuità di servizio: meglio quindi procedere passo a passo, effettuando prima la migrazione e successivamente effettuando gli interventi di ottimizzazione.

In qualsiasi contesto aziendale, comunque, “svecchiare” le applicazioni legacy si prefigura come una mossa necessaria per la stessa sopravvivenza dell’organizzazione. La nuova digital enterprise deve contare sulla disponibilità di servizi flessibili, scalabili, sicuri e potenti: le applicazioni moderne sono la chiave di successo del business oggigiorno.

Perché modernizzare le applicazioni legacy

Progettate per girare in ambienti tipicamente client-server, le applicazioni di tipo tradizionale vengono sviluppate ed eseguite secondo un approccio monolitico, come una singola unità che racchiude tutte le funzioni e interconnette strettamente i processi afferenti. Qualsiasi errore o modifica del codice influisce direttamente sul comportamento dell’intera applicazione, quindi ogni intervento richiede test approfonditi, aggiornamento completo del software, nuovo deployment; il risultato è, in molti casi, l’interruzione del servizio per un periodo più o meno prolungato. 

Le applicazioni monolitiche inoltre non permettono eventuali cambiamenti a livello di tecnologie o architetture sottostanti. Infine, hanno una scalabilità ridotta, presentano limitazioni nell’aggiunta di funzionalità, sono spesso sviluppate da un unico fornitore o team, generalmente hanno costi di infrastruttura maggiori rispetto a quelli di un'applicazione moderna.

Il business dell’era digitale invece non tollera i downtime, ma pretende servizi sempre disponibili, flessibili e veloci da implementare. Modernizzare le applicazioni legacy è fondamentale per andare incontro alle esigenze dell’organizzazione. Perché?

Virare verso il modello Cloud Native permette di dare nuova vita al parco applicativo esistente, perché possa soddisfare i nuovi requisiti e supportare le strategie aziendali. Rimanere con applicazioni obsolete significa perdere posizioni rispetto alla concorrenza e mettere un freno alle ambizioni del business: se i competitor avanzano grazie ai progetti di modernizzazione, restare fermi al palo è rischioso.

L’application modernization permette invece di generare innovazione a vantaggio del business, riducendo al minimo i rischi: sostituire o ricostruire totalmente un’applicazione funzionante, che supporta una pluralità di processi, potrebbe rivelarsi pericoloso o comunque particolarmente oneroso. La modernizzazione invece procede per gradi, permettendo di tenere sotto controllo eventuali errori e di affrontare i costi di intervento in modo dilazionato. 

L’application modernization consente infine il pieno passaggio al Cloud: in molti casi, se le soluzioni legacy possono girare sul Cloud, le infrastrutture on-premise sottostanti vengono migrate, con vantaggi in termini di ottimizzazione dei costi e aumento della flessibilità. Questo particolare approccio è chiamato rehosting e rappresenta il primo step di modernizzazione, come vedremo tra qualche paragrafo.

Dai microservizi al DevOps, come modernizzare le applicazioni

Se i vantaggi della application modernization sono evidenti, non così scontate sono le tematiche correlate, le conoscenze necessarie e le metodologie per procedere correttamente.

Andando ad approfondire l’aspetto architetturale, le applicazioni moderne si contraddistinguono rispetto alle soluzioni monolitiche per la struttura a microservizi: ogni applicazione è concepita e sviluppata come un insieme di unità funzionali indipendenti, che possono essere aggiunte, eliminate o modificate singolarmente, senza influenzare il comportamento complessivo del sistema. I microservizi sono in carico a team specializzati, che possono intervenire autonomamente per effettuare le variazioni di competenza senza creare interruzioni o disservizi. 

Nell’ambito delle architetture modulari, l’utilizzo delle API si rende necessario per favorire l’integrazione e l’interoperabilità dei diversi servizi, accelerando i tempi di sviluppo per l’aggiunta di ulteriori funzioni.

Sul piano dell’infrastruttura, le applicazioni moderne sfruttano i vantaggi della containerizzazione: sostanzialmente, le applicazioni o i microservizi girano all’interno di ambienti di runtime completi (container), assicurando il funzionamento indipendentemente dall’hardware sottostante e garantendo così la piena portabilità del software in ambienti ibridi e Multi Cloud. Grazie ad apposite piattaforme di orchestrazione (come Kubernetes, per citare la più nota soluzione open-source), i container possono essere gestiti in modo dinamico e automatizzato, ovviando all’inevitabile crescita della complessità.

Dal punto di vista dei processi, per cogliere tutte le opportunità delle applicazioni Cloud Native, il ricorso a metodologie Agile e pratiche DevOps risulta fondamentale. Le metodologie Agile suddividono il processo di sviluppo in sprint (blocchi di attività), secondo un approccio iterativo e incrementale. Ogni ciclo è finalizzato alla realizzazione di un incremento (una miglioria al software come la correzione di un bug o l’aggiunta di una funzionalità), che viene rilasciato e immediatamente testato dagli utenti per la raccolta dei feedback. Si procede così step-by-step fino alla release finale, con la possibilità di correggere il tiro in corso d’opera, garantendo l’allineamento con i desiderata del business. 

La pratiche DevOps invece favoriscono la collaborazione tra i team di sviluppo e le Operations, riducendo le tempistiche di deployment applicativo e automatizzando la gestione del ciclo di vita del software.

Chiariti i pilastri dell’approccio Cloud Native, il passaggio successivo è capire come modernizzare le applicazioni legacy. Generalmente vengono indicate tre vie percorribili, in base al caso specifico, ai budget e agli obiettivi:

  • il rehosting (spesso indicato come Lift&Shift) prescrive la semplice migrazione dell’applicazione in Cloud, con l’apporto di modifiche nulle o minime;
  •  il replatforming ottimizza il comportamento dell’applicazione per il passaggio in Cloud, grazie a interventi mirati che introducono le moderne tecniche di sviluppo;
  • il refactoring prevede la riscrittura parziale o completa dell’applicazione, secondo i framework Cloud Native per massimizzare il rendimento sul Cloud. 

 

Il futuro è Cloud Native, la tua azienda lo è?  Scopri nella nostra guida come iniziare il percorso

 

12Factor, le buone pratiche per sviluppare le modern application

Per semplificare il processo di application modernization e più in generale per guidare lo sviluppo di software Cloud Native, la 12Factor Methodology suggerisce una serie di buone pratiche che permettono di ottimizzare il comportamento delle applicazioni sul Cloud.

Il documento ufficiale chiarisce gli obiettivi principali della metodologia, orientata alla progettazione di applicazioni che:

  • sono facilmente replicabili sui diversi ambienti con tutte le dipendenze annesse, grazie alla containerizzazione e al disaccoppiamento con l’hardware sottostante;
  • permettono di definire una netta separazione tra la base di codice e le configurazioni necessarie all’esecuzione su sistemi differenti, favorendo ulteriormente la portabilità;
  • possono scalare massivamente senza dover apportare cambiamenti significativi agli strumenti, all’architettura e ai processi di software management, così da risparmiare tempi e costi;
  • adottano un approccio stateless per cui ogni processo è indipendente dalle esecuzioni precedenti e le componenti, come memoria e file-system, non sono condivise e persistenti tra runtime consecutivi;
  • minimizzano le distanze e stimolano la collaborazione tra team di Development e addetti alle Operations, consentendo di accorciare i cicli di sviluppo grazie ai processi di Continuous Integration e Continuous Delivery.

Seguire i 12 principi per la progettazione delle modern application significa partire con il piede giusto per innovare il parco applicativo aziendale, tagliando sui costi di gestione IT e restituendo al business i vantaggi attesi, tra cui flessibilità strategica, continuità operativa, velocità nella delivery dei servizi.

Organizzare la modernizzazione e le competenze necessarie

Se l’application modernization è necessaria e urgente, pena la perdita di competitività aziendale, non sempre le organizzazioni hanno in casa le competenze e il know-how necessari a procedere correttamente.

Modernizzare è certamente la via più rapida e meno rischiosa per evolvere il portfolio applicativo, ma necessita di una serie di conoscenze tecnologiche e metodologiche

Innanzitutto, bisogna avere un’ottima padronanza delle tecniche di sviluppo Cloud Native, con un focus particolare su architetture a microservizi, utilizzo delle API, container e piattaforme di orchestrazione. Inoltre, servono solide competenze in materia di metodologie Agili e pratiche DevOps, quindi occorrono opportune capacità di change management

Adottando i nuovi framework per la gestione del ciclo di vita del software, infatti, l’organizzazione del lavoro cambia radicalmente spingendo verso un’accelerazione dei rilasci e una maggiore sinergia all’interno di team multidisciplinari, che possono lavorare in parallelo ma sempre in direzione di obiettivi comuni. I Developers devono interagire continuamente con gli utenti finali per la raccolta dei feedback e con gli addetti alle Operations per innescare un circolo virtuoso di distribuzione continua.

L’expertise in progetti analoghi di application modernization si rivela fondamentale per la buona riuscita di qualsiasi iniziativa: partendo da un’analisi del parco applicativo esistente, bisogna avere la capacità di individuare per ciascuna applicazione il metodo corretto di modernizzazione (rehosting, replatforming, refactoring), dando un ordine di priorità ai diversi interventi. Bisogna insomma essere in grado di disegnare un percorso coerente, personalizzato e lungimirante che permetta di evolvere gradualmente tutto il portfolio aziendale e cogliere appieno le opportunità del Cloud.

Il successo delle iniziative di application modernization presuppone quindi una combinazione di competenze tecniche, visione strategica ed esperienze pregresse: ecco perché affidarsi a partner referenziati, con un background specifico, si rivela l’opzione vincente che permette di massimizzare e accelerare i ritorni.

Esempi virtuosi di application modernization

Mettendo sul piatto della bilancia opportunità e sfide dell’application modernization, non stupisce che molte aziende abbiano già intrapreso percorsi virtuosi per innovare il portafoglio software.

Tra i pionieri che hanno abbandonato le architetture monolitiche per seguire i principi Cloud Native, figurano colossi multinazionali come Amazon, eBay, Netflix, PayPal e Twitter. Tuttavia, non sono soltanto le grandi Corporation figlie dell’era digitale a intraprendere la strada della modernizzazione. Ci sono casi di successo anche in Italia, che coinvolgono aziende storiche operanti in settori più tradizionali.

Ad esempio, la società farmaceutica Zambon ha finalizzato un progetto per il replatforming e il redesigning dei siti aziendali (Corporate, versioni internazionali, di prodotto), arrivando a costruire un’infrastruttura Multi Cloud.

SparkFabrik è stato scelto anche dalla testata ilGiornale.it per governare il proprio Cloud ed evolvere la piattaforma CMS in ottica Cloud Native.

Insomma, l’application modernization è una necessità e un’opportunità che riguarda qualsiasi azienda, indipendentemente dal settore e dalle dimensioni. Rimanere indietro sarebbe un errore fatale, mentre rivolgersi a un partner navigato potrebbe essere l’opzione più sensata e proficua per evolvere il parco software in modo efficace e minimizzando i rischi.

Soluzioni IT innovative cloud transformation