In un mondo sempre più digitalizzato, le aziende basano buona parte della loro competitività sul software. Oggi, infatti, sono le applicazioni a supportare la produttività interna, la relazione con il cliente, i processi produttivi, le comunicazioni e la collaboration in contesti di lavoro sempre più diffusi e ibridi.
Alla base dell’ecosistema applicativo aziendale si posizionano i sistemi software che supportano i processi core, o mission-critical. Questi software, che a rigor di logica dovrebbero essere i più moderni, flessibili, performanti, aperti al futuro e scalabili, in realtà sono raramente al passo coi tempi e frenano la capacità innovativa e la competitività dell’intera struttura. Da qui nasce il concetto di legacy modernization.
Cos’è un sistema legacy, il pilastro dei processi mission critical
Cosa si intende, innanzitutto, per sistema legacy? Nel mondo del software, si tratta di un sistema ancora in uso nonostante sia obsoleto o superato rispetto agli standard tecnologici, metodologici e architetturali del momento. Come detto, i sistemi legacy sono spesso critici per i processi e per il business dell’organizzazione, e questo comporta un rischio significativo nella transizione verso nuovi sistemi.
L’interruzione di un’applicazione mission critical determina danni economici non indifferenti, può avere un impatto importante sulla conformità normativa e sulla reputazione del brand, che spesso rappresenta il danno più significativo. Per quanto concerne il costo del downtime a livello enterprise, tempo addietro Gartner lo quantificò in 5.600 dollari al minuto; studi più recenti arrivano a 9.000 dollari al minuto. In ogni caso, si tratta di cifre enormi.
Sistemi legacy: quanto sono diffusi e perché aggiornarli
Le aziende sono sempre state riluttanti a sostituire i propri sistemi tradizionali e hanno continuato ad aggiornarli progressivamente, spesso con notevoli difficoltà. Quantificare con precisione la presenza di software legacy in un determinato settore o mercato è molto complesso, ma secondo una ricerca recente due aziende su tre userebbero ancora sistemi mainframe o legacy per i processi core.
Di fatto, si tratta di un software funzionante che svolge il compito per cui è stato creato e che, come visto, è direttamente connesso alla mission e ai risultati dell’organizzazione. Essendo però basato su approcci architetturali, su tecnologie, linguaggi e metodologie obsolete, presenta non poche criticità.
- Costi molto elevati, sia a livello di gestione che, soprattutto, di manutenzione;
- Scarsa scalabilità, requisito essenziale di un software che supporta il business;
- Vulnerabilità di sicurezza, un problema non da poco in un mondo che vede crescere gli incidenti informatici anno dopo anno;
- Difficoltà nel reperire competenze dedicate. Spesso, gli applicativi legacy sono scritti in linguaggi del passato;
- Scarsa (o nulla) capacità innovativa. Oggi, ad esempio, le aziende hanno compreso il valore dell’intelligenza artificiale, ma integrarla con applicativi datati può essere molto complesso, costoso e non sostenibile.
- Mancanza di supporto. Gli applicativi legacy si basano spesso su tecnologie non più supportate dai vendor. Questo espone l’azienda a molti rischi e fa lievitare ulteriormente i costi di gestione.
In sostanza, un sistema legacy non è in grado di supportare l’evoluzione del business sottostante e può creare notevoli criticità competitive all’azienda, soprattutto quando questa si trova a competere con player agili e innovativi. La strada da percorrere è la legacy modernization.
Cosa si intende per legacy modernization
L’espressione legacy modernization si riferisce al processo di aggiornamento e di trasformazione dei sistemi software in essere verso soluzioni più moderne ed efficienti, basate su tecnologie, approcci architetturali, linguaggi e metodologie adeguate a supportare un business contemporaneo.
Nell’ultimo ventennio, complice la diffusione del cloud e delle sue tecnologie, il mondo dello sviluppo e della gestione del software è andato incontro a un progresso serrato e continuo. Sono cambiati i linguaggi di programmazione, ma soprattutto sono drasticamente evolute le architetture del software e le metodologie di sviluppo e di deployment degli applicativi.
Nell’ambito delle architetture, per esempio, si è passati da un approccio rigidamente monolitico, in cui tutte le componenti del sistema erano strettamente interconnesse e dipendenti, a paradigmi più flessibili e modulari, basati sulla continua comunicazione tra servizi e componenti indipendenti (Service Oriented Architecture, da cui l’attuale architettura a microservizi); per quanto concerne le metodologie di sviluppo e deployment, invece, il modello tradizionale waterfall ha lasciato il posto a paradigmi più agili e moderni come DevOps, fondati su un approccio iterativo, collaborativo e sul ruolo cardine dell’automazione.
La legacy modernization non ha dei binari predefiniti. A seconda del punto di partenza, dei requisiti, degli obiettivi, dei tempi e dei budget, l’azienda può perseguire diverse strategie di modernizzazione, anche graduali e progressive, il cui fine è adeguare o anche solo avvicinare i propri applicativi core all’attuale stato dell’arte dei sistemi software, sotto tutti i punti di vista.
Le principali strategie di modernizzazione delle applicazioni
Come detto, non esiste una sola strategia di legacy modernization. Ogni applicativo può, e andrebbe gestito in modo indipendente dagli altri, a seconda della sua centralità nell’ecosistema aziendale, dei requisiti di compliance, di eventuali dipendenze da altri software e, ovviamente, dal budget disponibile.
In fase di pianificazione, le aziende dovrebbero quindi valutare in modo approfondito il proprio ecosistema applicativo attraverso un assessment, identificare pro e contro di ogni strategia e poi scegliere quelle più adeguate in funzione degli obiettivi, dei costi e dei budget disponibili. Le opzioni sono molteplici, e in questa sede ci limitiamo a riportare le più comuni.
Lift and Shift
È un tipico approccio basato sul cloud che prevede la semplice migrazione dell’applicativo dall’infrastruttura on-premise a un ambiente cloud apportando modifiche minime al codice e senza alterarne l’architettura. Detto anche rehosting, stride un po’ con il concetto di modernizzazione visto nei paragrafi precedenti ma permette di sfruttare la resilienza, le performance e la sicurezza delle infrastrutture cloud a fronte di tempi rapidi di implementazione e costi contenuti.
Replatforming
In questo caso, il codice sorgente viene modificato ma non in modo radicale. L’obiettivo non è rivedere il core dell’applicativo, ma di modificare di codice per renderlo compatibile e per poter sfruttare i servizi della piattaforma (cloud) di destinazione. Rispetto al caso precedente, aumentano tempi e costi, ma anche i benefici in ottica di performance, resilienza e sicurezza.
Refactoring
È l’approccio più radicale e consiste nel trasformare l’applicazione rendendola Cloud Native in tutto e per tutto, ovvero il massimo della scalabilità, della sicurezza e della flessibilità; l’applicazione diventa nativamente modulare, basata su architetture moderne e gestibile con approcci agili come, appunto, DevOps. L’effort da allocare è, ovviamente, superiore rispetto a quello dei casi precedenti.
Replacing
È un approccio di modernizzazione diverso dai precedenti, che consiste nel dismettere l’applicazione esistente e sostituirla con una commerciale, solitamente erogata come servizio SaaS. Pro e contro vanno definiti caso per caso, ma di sicuro è un approccio piuttosto radicale in termini di discontinuità e richiede un’abile gestione del cambiamento.
Il perno della trasformazione digitale
La modernizzazione degli applicativi legacy è un passo imprescindibile nel contesto della trasformazione digitale. Aggiornare il proprio parco applicativo, infatti, non significa solo migliorare la produttività, la scalabilità, la sicurezza e l'efficienza, ma soprattutto accelerare e potenziare la capacità innovativa dell’azienda, da cui possono scaturire nuove opportunità di mercato, un vantaggio competitivo significativo e un miglioramento complessivo dell’esperienza dei clienti e dei dipendenti.