L’application modernization è un percorso di trasformazione ormai necessario per rispondere alle esigenze di agilità del business. Nell’era digitale, infatti, c’è una connessione diretta tra la qualità delle applicazioni aziendali e la competitività d’impresa. La relazione tra la struttura, i suoi servizi, i clienti, i dipendenti e i fornitori passa infatti attraverso l’ecosistema applicativo aziendale. Per questo, è ormai fondamentale intraprendere un percorso, sia pur graduale e progressivo, di application modernization.
Il software legacy e la sua incapacità di evolvere
Secondo una ricerca recente, oltre il 60% delle applicazioni customer-facing, ovvero quelle indirizzate direttamente ai clienti, si basa su tecnologie e approcci legacy.
Ciò non significa che gli applicativi non funzionino o che presentino criticità chiaramente avvertibili dall’utente finale, ma il fatto di essere basate su tecnologie, linguaggi e approcci architetturali obsoleti crea una serie di sfide che si ripercuotono sui costi di gestione e, soprattutto, sulla capacità innovativa dell’azienda.
Il limite più grande degli applicativi legacy è infatti l’incapacità di evolvere con la velocità richiesta dal business. In larga parte, questo dipende dall’impiego di approcci architetturali superati, tra cui quello monolitico che impone un certo periodo di downtime di tutta l’applicazione ad ogni aggiornamento della stessa. Un software moderno viene aggiornato anche decine di volte al giorno, e questo è del tutto inattuabile con un applicativo legacy. Il fatto poi di basarsi su linguaggi e framework non più supportati, rende difficile anche solo disporre di specialisti competenti.
L’impiego di software legacy comporta, inoltre, molteplici altre criticità, tra cui:
- Difficoltà, costi elevati e tempi lunghi di manutenzione;
- Limiti di sicurezza dovuti all’end of life (fine del supporto) di componenti chiave;
- Scalabilità limitata, e contestuale incapacità di gestire carichi di lavoro elevati in modo flessibile;
- Scarsa interoperabilità. È un tema fondamentale, data la necessità del software moderno di interfacciarsi con altri sistemi, tecnologie, applicazioni o componenti moderni. Ciò ostacola la capacità dell’azienda di innovare, impedendole di adottare (quanto meno con tempi e costi accettabili) le tecnologie più moderne.
Perché intraprendere la strada della modernizzazione applicativa
Molte imprese sono consapevoli della necessità di far evolvere i propri applicativi, ma rinviano i progetti perché il software legacy funziona, non crea particolari problemi e perché la sua evoluzione è considerata non solo un onere importante, ma anche un rischio non da poco.
Molti applicativi obsoleti, inoltre, supportano processi di business core come le transazioni, l’apertura e la gestione di pratiche e documenti o la comunicazione con il cliente; questo determina un’ulteriore impennata del rischio percepito, che di fatto dirotta i budget verso altri progetti.
Tuttavia, ci sono diversi aspetti che sfuggono a molte imprese. In particolare:
- La modernizzazione delle applicazioni non significa crearne uno da zero, con connessi tempi e costi;
- Un applicativo moderno abbatte i costi di aggiornamento e manutenzione, con benefici economici avvertibili fin da subito;
- Se eseguita da mani esperte, la modernizzazione è un processo sicuro;
- Esistono diversi approcci alla modernizzazione applicativa, che può essere graduale, limitata e progressiva.
Inoltre, valgono tutte le considerazioni precedenti, e in particolare il fatto che un software legacy ha un impatto negativo sulla competitività d’impresa.
Application Modernization: cos’è e i suoi benefici
Cosa significa, dunque, application modernization? Viene in soccorso, tra le dozzine di definizioni esistenti, quella di Microsoft, secondo cui si tratta del:
“processo di aggiornamento delle applicazioni e dei dati a un modello cloud-first per allinearsi alle esigenze aziendali”.
Si nota chiaramente il collegamento tra il processo evolutivo dell’applicazione e le tecnologie cloud native. In tal senso, application modernization significa adattare (con diversi approcci) l’applicazione on-premise per consentirle di sfruttare le caratteristiche e i vantaggi degli ambienti cloud. Tra questi:
- Scalabilità nativa e automatica;
- Automazione su task fondamentali come il disaster recovery, l’high availability e il monitoraggio delle performance;
- Massima resilienza data dall’infrastruttura;
- Adozione delle best practice di sicurezza;
- Innovazione accelerata, ovvero capacità di adottare le tecnologie più innovative in modo veloce e sicuro.
Application modernization è certamente un’evoluzione importante, perché se da un lato non si tratta di ripartire da zero, è pur sempre un cambio di paradigma verso nuove architetture, modelli, tecnologie e piattaforme, un percorso che l’azienda può intraprendere gradualmente con un cloud native service provider di fiducia, a garanzia di tempi e costi adeguati ai budget, nonché di abbattimento di tutti i rischi connessi.
Ma quali sarebbero i benefici dal punto di vista del business? Del primo, e più importante, si è già detto: le applicazioni moderne offrono agilità e flessibilità, ovvero possono essere adattate rapidamente ai continui cambiamenti del mercato e anche all’evoluzione tecnologica sottostante (si pensi, ad esempio, al trend dell’AI generativa). Inoltre, le applicazioni moderne rendono le aziende più produttive e capaci di garantire Customer Experience di altissimo profilo, su cui si gioca la capacità di acquisire e fidelizzare i clienti.
BUSINESS CASE
Infrastruttura applicativa per una Banca con Kubernetes e GitSecOps
Application modernization: i 4 approcci principali
L’application modernization parte sempre dalla stesura di una strategia che consideri non soltanto quali applicativi e asset digitali modernizzare, ma anche quale approccio adottare per intraprendere il percorso in modo efficace e in linea con gli obiettivi aziendali.
Come detto, l’ecosistema applicativo può comprendere centinaia di applicazioni, e per ognuna di esse può essere definita una modalità e un obiettivo di modernizzazione specifico, a seconda del livello di criticità dell’app per il business aziendale, di eventuali normative cui è soggetta e anche dal suo livello di obsolescenza tecnologica.
Rehosting
Anche noto come lift-and-shift, è l’approccio più semplice. Consiste infatti nel migrare l’applicazione esistente e i suoi dati in un nuovo ambiente cloud senza apportare modifiche al codice sorgente. I server e le macchine virtuali presenti on-prem vengono migrate in cloud attraverso servizi IaaS (Infrastructure as a Service) dei provider. Questo approccio è facile e veloce da eseguire, ma non consente di sfruttare buona parte dei benefici del cloud.
Replatforming
In questo caso, l’applicativo viene trasferito in cloud con minime modifiche. Il fine è permettere all’applicativo di sfruttare alcuni servizi PaaS (es, Identity Management, networking…) e ottenere buoni livelli di automazione e scalabilità. È un approccio più complesso del precedente ma non implica una ristrutturazione profonda del codice, risultando così in molti casi un ottimo bilanciamento tra costi, tempi e performance.
Refactoring
Il refactoring prevede una revisione dell’architettura e spesso una ricodifica dell’applicazione, al fine di adottare pienamente le tecnologie, i framework, gli approcci e le funzionalità native del cloud (Cloud Native). Benché sia il metodo più impegnativo in termini di tempo e di risorse, permette di elevare le applicazioni verso altissimi standard di sicurezza, scalabilità, resilienza e performance.
Replacing
Questo approccio implica l’abbandono dell’applicazione e la sua sostituzione con una nuova soluzione software, solitamente un SaaS (Software as a service) disponibile sul mercato. È una soluzione rapida e di per sé relativamente onerosa, ma implica costi di licenza, perdita di personalizzazioni e un certo grado di discontinuità con la situazione precedente, che va gestita con cura.
Architettura, infrastruttura e processi: i pilastri del software moderno
Nel caso del refactoring, la trasformazione coinvolge l’intero ecosistema applicativo e mira a incorporare tutti i principi del software moderno, che, come visto, sono strettamente interconnessi con i servizi e le tecnologie del cloud.
In particolare, i tre pilastri sono:
L’architettura del software
L’applicazione viene analizzata e riprogettata con un approccio a microservizi, un’architettura nativamente modulare in cui ogni componente è autonomo e indipendente.
L’evoluzione infrastrutturale
L’evoluzione infrastrutturale è guidata da concetti come la containerizzazione e l’orchestrazione dei container via Kubernetes (K8s). La containerizzazione ha rivoluzionato, e rivoluziona, il modo in cui le applicazioni vengono distribuite e gestite, poiché consente agli sviluppatori di incapsulare le applicazioni e le dipendenze in container che sono indipendenti dall’ambiente di esecuzione. Kubernetes, dal canto suo, offre un’infrastruttura scalabile e automatizzata per orchestrare i container in ambienti di produzione. La combinazione di container e orchestrazione è un pilastro del software moderno ed è alla base della sua resilienza, della scalabilità e dell’affidabilità delle applicazioni.
L’approccio DevOps
La modernizzazione applicativa comporta anche un’evoluzione nell’approccio in cui il software viene sviluppato, distribuito e gestito. Il paradigma DevOps si è ormai affermato abbattendo la tradizionale separazione tra sviluppo (Dev) e operations (Ops) e promuovendo una collaborazione stretta lungo l’intero ciclo di vita del software, che favorisce agilità, rilasci frequenti, stabilità e affidabilità.
APPLICATION MODERNIZATION
Diventa più competitivo con applicazioni moderne che ottimizzano prestazioni e riducono i costi.