Lift & shift o Refactoring: come individuare la strategia migliore
Il Cloud è sempre meno un'opzione e sempre più una necessità per le imprese che vogliono fare innovazione di business, ma rispetto al modo in cui deve avvenire la migrazione del parco applicativo sulla nuvola si fa sempre più assillante il dilemma della scelta tra l'approccio Lift & Shift e quello Refactoring.
Cosa conviene fare oggi? Bisogna migrare le applicazioni nel Cloud e poi sottoporle a un graduale processo di modifica per farne collimare la struttura con le nuove logiche distributive e funzionali, come prevede il Lift & Shift? Oppure, seguendo la logica del Refactoring, è meglio riscriverle ex novo, senza stravolgerne interfaccia, funzionalità e comportamento per adattarle da subito alla modalità “as-a-service”? Ciascuno dei due approcci, come sempre accade in questo genere di confronti, ha i suoi pro e i suoi contro: sta al CIO e al CTO di ciascuna impresa capire quale dei due meglio si attaglia alle esigenze dell'organizzazione e del business. Vediamo nel dettaglio come funzionano le metodologie e proviamo a fare chiarezza sulla scelta che, caso per caso, conviene fare.
Cos'è l'approccio Lift & Shift
Come accennato, la strategia Lift & shift consiste nello spostare un'applicazione o un'operazione da un ambiente all'altro senza bisogno di riprogettare il codice o di interrompere i workflow. Si provvederà in seguito ad apportare modifiche minori per risolvere eventuali disservizi. Agli albori del Cloud computing, l'approccio Lift and Shift era quello che andava per la maggiore, risultando più semplice, di minor impatto per la produttività aziendale e, nella maggior parte dei casi, anche più economico. Il problema è che, procedendo in questa maniera, col passare del tempo rischiano di verificarsi episodi gravi di incompatibilità dei software – specialmente quelli custom e legacy – con le funzionalità del Cloud. La diffusione sempre più massiccia della Nuvola non ha fatto altro che enfatizzare questa criticità, mettendo in risalto inefficienze di sistema che hanno finito per vanificare gli investimenti. Va però precisato che le applicazioni standard di mercato sono spesso state al centro di operazioni di Lift & Shift che si sono rivelate veri e propri successi. Come si sarà già intuito, è il grado di complessità di un'applicazione il fattore chiave da tenere in mente quando si deve decidere se un software, per esprimere il suo massimo potenziale nel Cloud, va riprogettato da zero o meno.
Cos'è il Refactoring?
Tra le pratiche di sviluppo software, il Refactoring invece è una tecnica che punta a migliorare la qualità del codice sorgente, rendendolo più leggibile, comprensibile, manutenibile ed efficiente, senza tuttavia alterare il comportamento esterno e le funzionalità dell’applicazione.
Attraverso il Refactoring, gli applicativi vengono ottimizzati prima di essere spostati in cloud perché possano funzionare al meglio nei nuovi ambienti sulla nuvola, restituendo performance, sicurezza, velocità di esecuzione, usabilità e così via.
In particolare, il Refactoring permette di raggiungere diversi obiettivi:
- Migliorare la leggibilità del codice perché sia più chiaro e comprensibile ai programmatori, semplificando le future operazioni di modifica.
- Semplificare la manutenzione poiché riducendo la complessità del codice, risulta più facile intervenire sui bug e riadattare l’applicazione secondo le esigenze future.
- Migliorare le performance dell’applicativo in termini di efficienza (minore richiesta di risorse computazionali sottostanti), efficacia e velocità di esecuzione, sicurezza, portabilità (il software funziona altrettanto bene indipendentemente dall’ambiente sottostante).
- Favorire il riuso del codice poiché il Refactoring punta a scomporre l’applicazione in moduli e unità funzionali che possono essere isolati e riutilizzati in altri progetti e contesti.
- Eliminare il codice duplicato, migliorando l'efficienza complessiva dell’applicazione e riducendo la possibilità di errori.
Differenze tra l'approccio Lift &Shift e Refactoring
Al netto di questo distinguo, oggi in genere l'approccio Lift and Shift tende a presentare più svantaggi (leggasi: costi) di quelli che si rischiano di affrontare ricorrendo al Refactoring. Anche perché non di rado capita che un software mission critical portato in Cloud in modalità Lift & Shift arrivi poi a un binario morto per troppa difformità col resto del parco applicativo o per requisiti non supportati dal nuovo ambiente, obbligando comunque l'impresa a ridisegnarlo ex novo.
Il Refactoring può rendersi inoltre necessario quando, nonostante gli upgrade effettuati, le prestazioni dell'applicazione portata in Cloud tramite Lift & Shift non soddisfano le aspettative di amministratori e utenti. Un'applicazione che è stata spostata nel Cloud può anche beneficiare del Refactoring quando i costi legati al consumo di risorse IT sono più alti del previsto, o quando insorgono vulnerabilità sul piano della cyber security: ancora una volta perché l'applicazione non riesce a integrarsi con i sistemi di sicurezza nativamente presenti nei managed services, a partire dagli strumenti di identity e access management.
In generale, dunque, in presenza di applicazioni legacy e custom, un progetto Lift and Shift avviato senza lo studio accurato della documentazione relativa ai requisiti del software può facilmente andare storto, mentre l'azione di Refactoring offre maggiori garanzie rispetto ai livelli di affidabilità e di performance non solo delle applicazioni in questione, ma dell'intero ecosistema IT dell'impresa.
Qual è la strategia migliore per la migrazione in cloud
A fronte di differenze tanto evidenti, qual è la strategia migliore per la migrazione delle applicazioni in cloud?
In assoluto, non esiste un’alternativa migliore, ma la scelta tra Lift & Shift e Refactoring dipende strettamente dalle specifiche esigenze dell'organizzazione.
Di seguito, vengono riportati alcuni fattori da considerare che potrebbero offrire un supporto decisionale.
Innanzitutto, bisogna considerare le finalità di business. Se l'obiettivo principale è spostare rapidamente l'applicazione nel cloud per beneficiare delle sue caratteristiche, il Lift & Shift può essere la scelta migliore. Se invece si desidera modernizzare e ottimizzare l'applicazione per sfruttare appieno le potenzialità del cloud, il refactoring può essere più appropriato.
Il secondo elemento da tenere in considerazione è la complessità dell'applicazione. Se il software è particolarmente articolato, ha molte dipendenze con altri sistemi e soffre di una pesante eredità legacy, la migrazione Lift & Shift può essere più semplice e meno rischiosa. Se l'applicazione è già ben strutturata e modulare, il Refactoring può portare a miglioramenti significativi.
Infine, bisogna chiaramente ragionare in termini di budget e risorse disponibili. Il Refactoring richiede un impegno maggiore in termini di tempo, investimenti e competenze. Se il budget e le risorse sono limitati, Lift & Shift può essere più fattibile.