Non tutte le applicazioni sono uguali: ci sono quelle che sono fondamentali per lo svolgimento quotidiano delle attività lavorative e poi ci sono quelle che possono fare la differenza, elevando l’organizzazione rispetto ai competitor.
Ecco perché è necessario che le applicazioni restino al passo con l’evoluzione aziendale, ma non solo.
Quando si decide di effettuare una modifica, si deve tenere in considerazione il fattore continuità, così da potenziare il core, aggiungendo funzionalità o sistemando eventuali bug, ma senza rallentare o bloccare il workflow quotidiano o la normale operatività dell’applicativo.
Come ne abbiamo già parlato in precedenza, l’application modernization non vuol dire solo migrare una soluzione in cloud, ma la migliora, la fa progredire con il business tramite i nuovi requisiti e le necessità sia degli stakeholder, dal punto di vista della strategia, ma anche rispetto al mercato esterno.
Non è quindi unicamente riconducibile alla risoluzione di bug, problematiche o criticità, ma è una vera e propria trasformazione con l’obiettivo di ottenere una maggiore efficienza e agilità nei processi e nell’infrastruttura stessa.
Esiste un percorso vincente per l’application modernization?
Perché parliamo di percorso? L’application modernization è un compito arduo, che richiede l’impiego di tempo e risorse. Di conseguenza, possiamo considerarla un percorso, un viaggio che si compie, piuttosto che un singolo step.
Ma facciamo una premessa. Prima di iniziare questo viaggio, è bene pensare ad architetture applicative che consentono modifiche più rapide, così da assicurarsi di poter scalare su richiesta, e affidarsi a un team che lavori seguendo un approccio DevOps.
Ma non ci possiamo fermare alla base.
Quando ci si affaccia a un progetto di application modernization, si possono valutare molte opzioni. Ciò che mi sento di consigliare è che si cerchi sempre di ottenere sì agilità, ma anche un giusto equilibrio con tempi e risorse necessarie, così da avere maggiori possibilità e impiegare le risorse man mano nell’evoluzione.
Possiamo individuare alcune best practice che possono essere utili per guidare il processo di modernizzazione.
In primo luogo, è importante condurre un’analisi completa dell’architettura esistente per identificare le aree che richiedono una modernizzazione. Ciò può includere l’identificazione di applicazioni obsolete, componenti non supportati o dipendenze obsolete o non più mantenute.
In secondo luogo, è importante sviluppare una strategia per la modernizzazione che tenga conto delle esigenze dell’organizzazione a lungo termine. Ciò può includere la definizione di obiettivi specifici e l’identificazione delle priorità di modernizzazione in base all’impatto commerciale e alla criticità dell’applicazione.
Ancora, è importante selezionare le tecnologie e le piattaforme moderne che consentono di soddisfare i requisiti di business dell’organizzazione e di sfruttare al meglio i vantaggi delle nuove tecnologie. Ciò può includere l’adozione di tecnologie cloud, la containerizzazione dei singoli layer applicativi, l’automazione dei processi di sviluppo (continuous integration and continuous delivery).
Infine, è importante adottare un approccio iterativo e agile alla modernizzazione delle applicazioni, che consenta di sperimentare rapidamente, di apportare le modifiche necessarie e di fixare i bug in modo tempestivo. Ciò può aiutare a garantire che l’organizzazione mantenga il passo con l’evoluzione delle tecnologie e delle esigenze del mercato.
Facciamo un esempio.
Lasciando perdere il discorso del re-hosting e ri-piattaforma in cloud di cui abbiamo già parlato in altri articoli e il fatto che il linguaggio utilizzato deve essere moderno e non obsoleto, partiamo dai container.
Containerizzando le applicazioni, ci si assicura che queste possano essere distribuite ovunque all’interno di un ambiente ibrido.
Infatti, unita ai microservizi, dà la possibilità di creare applicazioni cloud-native.
Anche se ci troviamo al cospetto di un’applicazione con un modelli di architettura rigidi, come un monolitico, potremmo optare per la creazione di livelli separati, così da garantire portabilità, flessibilità e scalabilità.
Inoltre si migliorerà la manutenibilità e favorirà l’innovazione.
Concludiamo con un’altra possibilità da valutare: il refactoring per arrivare a ottenere un’architettura cloud-native.
Esistono modelli di progettazione che rendono le applicazioni scalabili al punto di poter allocare e adottare le risorse in base alle esigenze, consentendo un’eventuale eliminazione e sostituzione delle istanze dei componenti.
Il refactoring possiede tutti i benefici del rehosting e del replatforming, e permette di adottare nuove tecnologie innovative per aumentare l’agilità e il valore aziendale.
L’application modernization è però molto più di una questione di “pura” tecnologia.
Per ottenere i vantaggi che essa offre, è necessario un approccio olistico, in grado di combinare tecnologia e piattaforme con cultura, processi e persone.