Per quanto concerne le applicazioni, la digital transformation è sempre più spesso sinonimo di cloud transoformation, in quanto la nuvola è in grado di offrire una serie di vantaggi sia lato sviluppatore che lato cliente. Ciò è tanto più vero laddove le tradizionali applicazioni legacy faticano a garantire, soprattutto se parliamo di software funzionale al lavoro ibrido, un’adeguata flessibilità di accesso da parte degli utenti.

Tra i principali obiettivi della trasformazione in cloud ritroviamo quindi quella che viene definita la modernizzazione delle applicazioni, che consiste nella migrazione in cloud del software utilizzato in azienda, oltre alle eventuali nuove implementazioni previste all’interno della pipeline operativa. Esistono tuttavia vari metodi di migrazione delle applicazioni. In questa sede ci occuperemo nello specifico del replatforming.

Serverless CTA

Cos’è il replatforming

Il replatforming consiste nella migrazione di un’applicazione legacy effettuando il minor numero di operazioni necessarie per mantenere le funzionalità che si intende trasferire in cloud. Ciò avviene ad esempio passando da tecnologie verticali come gli application server e i database relazionali a sistemi orizzontali, più facilmente scalabili, come i datastore-as-a-service e i server OSS (open source software), oltre a ricontestualizzare nei servizi in cloud il maggior numero di funzioni attive on-premise.

L’obiettivo del replatforming consiste nel garantire almeno i vantaggi basilari del cloud computing, in un’ottica di massima resa e minimo sforzo, per ottimizzare l’investimento di risorse necessario per migrare l’applicazione legacy. Per valutare se ciò abbia un senso dal punto di vista tecnologico e un’effettiva convenienza strategica è fondamentale eseguire una valutazione molto mirata, come vedremo nel corso dei successivi paragrafi.

Dando per scontato che un’applicazione possa essere modernizzata in maniera efficace attraverso il replatforming, gli sviluppatori procedono individuando nel catalogo cloud dei vari vendor il servizio PaaS (Platform-as-a-service) che ritengono più idoneo per migrare il software, tenendo conto di tutto ciò che comporta nell’arco dell’intero ciclo di vita, che comprende ovviamente anche la successiva manutenzione.

I vantaggi

Se eseguito in maniera strategicamente consapevole e corretto dal punto di vista tecnico, il replatforming di una applicazione consente di raggiungere importanti vantaggi. Analizziamo i più ricorrenti.

Riduzione di CapEX e OpEx

Il vantaggio più evidente nella migrazione in cloud è dato dalla rinuncia del tradizionale application server nel data center in locale, a favore di tecnologie molto più leggere come i container, che mettono a disposizione soltanto l’ambiente di runtime delle applicazioni, grazie ad una virtualizzazione effettuata al livello del sistema operativo, del tutto trasparente rispetto alla componente hardware del server.

Serverless CTA

Incremento della scalabilità e della portabilità delle applicazioni

Il passaggio da un’infrastruttura verticale all’orizzontalità dei servizi in cloud consente di scalare in maniera molto più semplice le risorse necessarie per eseguire le applicazioni. Le tecnologie attuali consentono alle piattaforme open source disponibili in cloud di eseguire centinaia di migliaia di container su un singolo cluster con la possibilità di spostarli liberamente su altri cluster, superando virtualmente i confini fisici delle infrastrutture a cui siamo stati abituati per moltissimi anni. Con pochi click è possibile configurare ciò che in precedenza avrebbe richiesto molte ore di lavoro, con il risultato di risultare poco flessibile a fronte di qualsiasi modifica necessaria.

Riduzione dei costi

La sensibile riduzione dell’infrastruttura fisica libera le aziende da ingenti investimenti per l’acquisto e il mantenimento delle risorse hardware che costituiscono i data center. Tali risorse vengono utilizzate in cloud, laddove ogni onere di gestione e manutenzione rimane in capo al CSP (cloud service provider). Che si tratti di utilizzare un IaaS o un PaaS, la scalabilità innata del cloud si traduce in un risparmio anche importante in termini di costi, a patto di saper valutare bene le conseguenze per ogni business. Nel caso delle piccole imprese, se i vantaggi del cloud si limitassero all’aspetto infrastrutturale, è facile che i costi di un IaaS superino quelli di un’infrastruttura on-premise equivalente già nel medio termine, vanificando lo sforzo effettuato.

Funzionalità DevOps e semplicità nel project management

Uno degli aspetti più utili dei servizi PaaS è dato dalle funzioni di monitoring delle applicazioni. Attraverso una semplice dashboard è possibile ottenere la visibilità di tutti i componenti attivi, riepilogando quelli in esecuzione, quelli inattivi, anche in funzione della loro posizione. Ciò costituisce un aspetto fondamentale quando si ha a che fare con applicazioni cloud native, ma anche nel caso di un replatforming, dove si presume che il numero dei processi sia più limitato, i vantaggi appaiono decisamente evidenti.

Il cloud consente anche nel caso delle applicazioni migrate di sfruttare i vantaggi chiave della metodologia di sviluppo DevOps, per gestire i progetti in maniera puntuale e consapevole. Le funzioni di business intelligence, tipiche degli ambienti di sviluppo in cloud, consentono inoltre di ottenere in tempo reale le metriche e i report di utilizzo, per monitorare continuamente la rispondenza con gli obiettivi aziendali.

Quando attuare il replatforming

La prima cosa da considerare è che il software può essere migrato in cloud tramite replatforming soltanto se è stato sviluppato internamente. Per inciso, un software commerciale non può essere oggetto di un replatforming se non dal vendor che lo sviluppa e lo distribuisce, in quanto deve avere totale accesso alle modifiche sulla base delle tecnologie impiegate per la versione legacy. Tale considerazione effettua una notevole scrematura della casistica, ancor prima di entrare nel merito dell’opportunità in funzione degli obiettivi di business.

Applicazioni legacy - le varie opzioni di modernizzazione e replatforming
Applicazioni legacy – le varie opzioni di modernizzazione e replatforming

Per il resto, il replatforming costituisce la soluzione ideale per tutte quelle applicazioni che non sono propriamente business critical, ma che potrebbero generare valore nel caso in cui venissero rese disponibili in cloud. Anche se il cloud rappresenta il futuro designato per lo sviluppo e la fruizione delle applicazioni, non è assolutamente necessario strutturare un nuovo progetto cloud native per tutto il software presente in azienda. Il replatforming rappresenta quel giusto compromesso funzionale che consente di risparmiare tempo e denaro senza tuttavia rinunciare ai vantaggi generici offerti dal cloud, soprattutto per quanto concerne l’automatizzazione delle funzioni stesse e la scalabilità delle risorse.

Tra gli elementi da considerare quando si valuta se effettuare o meno la migrazione di un software e, ancor più nello specifico, quando si tratta di scegliere il metodo di migrazione, è bene affrontare la questione da vari punti di vista, considerando almeno i seguenti aspetti:

  • Business: definire il livello di criticità dell’applicazione custom in funzione del business, anche in funzione della frequenza con cui vengono effettuate modifiche sulla stessa e al tipo di funzioni che consente di assolvere;
  • Tecnologia: valutare se il software in questione è facilmente utilizzabile in un contesto di replatforming, anche in funzione del PaaS che si intende scegliere per effettuare l’operazione. Qualora il replatforming richiedesse più impegno e risorse rispetto allo sviluppo di una nuova applicazione cloud native, le domande da porsi sarebbero necessariamente altre;
  • Budget: valutare bene i costi relativi alle risorse hardware e software che l’esecuzione della app richiede, per capire se ne vale la pena in una prospettiva anche di medio e lungo termine, onde evitare di ritrovarsi dopo qualche tempo con il rimpianto di non aver avviato un nuovo progetto cloud native sin dall’inizio o, peggio, aver dato seguito ad un progetto di sviluppo troppo costoso, a prescindere dalla tecnologia utilizzata;
  • Change making: la transizione dall’impiego di software installato in locale al software distribuito in cloud comporta un cambiamento a livello di organizzazione, altrimenti si rischia soltanto di riproporre in cloud i medesimi silos che rendono inefficiente l’operatività dei metodi tradizionali, con tutte le aggravanti del caso, a partire dall’utilizzo improprio dell’applicazione stessa. È dunque necessario capire se in azienda ci sono le condizioni ideali per affrontare il cambiamento. I contesti più favorevoli sono quelle situazioni, pur ibride e certamente migliorabili sotto vari aspetti, in cui i dipendenti dell’azienda hanno già preso coscienza dei concetti e delle logiche del cloud grazie ai progetti avviati in precedenza. Risulta decisamente improbabile ipotizzare un replatforming di una applicazione del tutto trasparente rispetto a chi dovrà utilizzare ogni giorno l’applicazione stessa, pertanto il fattore umano continuerà a costituire una fattore di valutazione fondamentale ancora per diverso tempo.

Replatforming vs rehosting vs refactoring

Nel contesto della cloud migration delle applicazioni, il replatforming si pone nella condizione intermedia tra il rehosting, altrimenti noto come metodo di migrazione lift-and-shift, e il refactoring. Vediamo una rapida sintesi di cosa si intende quando ci ritroviamo al cospetto di questi termini.

Rehosting

Il reshosting (lift-and-shift) consiste nella migrazione “dov’era, com’era” dell’applicazione da un’infrastruttura on-premise ad una infrastruttura in cloud pubblico o privato (IaaS) che conserva le medesime caratteristiche. Si tratta sostanzialmente di un trasloco, che porta l’azienda a ridurre l’impatto sulle dotazioni IT interne. Dal momento che il software non subisce sostanziali modifiche, rimane essenzialmente lo stesso e viene fruito da remoto anziché in locale.

Refactoring

Ben differente è il contesto del refactoring, che consiste nella parziale o totale riprogettazione dell’applicazione prima di eseguire la migrazione in ambiente cloud (IaaS / PaaS). L’applicazione originale viene ridefinita nell’architettura logica, con modifiche sostanziali a livello di codice sorgente. Si tratta di una condizione frequente quando si decompone una tradizionale applicazione monolitica, trasformandola in una più moderna architettura a microservizi.

Repurchasing

Oltre al refactoring viene spesso identificato un altro metodo: il repurchasing, che consiste nella totale dismissione dell’applicazione legacy a favore di un nuovo progetto cloud native. Dal punto di vista tecnologico non ha quindi senso parlare di una vera e propria migrazione, in quanto del vecchio software non rimane sostanzialmente traccia. È tuttavia molto importante considerare anche una nuova applicazione nel contesto della cloud migration in quanto la dismissione dell’applicazione legacy correlata può comportare una modifica sostanziale dell’assetto IT dell’azienda.

Come avviene l’operazione di replatforming

Quando si valuta la migrazione di un software è auspicabile che un’azienda richieda il supporto di consulenti esperti nell’effettuare valutazioni multidisciplinari, che oltre agli aspetti tecnologici dello sviluppo e delle metodologie ricorrenti, possieda un comprovato know-how nella migrazione dei sistemi e soprattutto conosca in maniera approfondita l’architettura del cloud. La prima fase, l’assessment, costituisce molto spesso il momento più importante di tutta l’attività migratoria, in quanto capire se migrare o meno rimane la domanda fondamentale a cui dare una risposta, ancor prima di entrare nel merito di qualsiasi valutazione tecnologica.

Assessment delle applicazioni aziendali

La prima cosa da fare è una bella analisi dello stato di fatto. Si prende l’intera pipeline e ci sofferma sulle applicazioni che la strutturano, per capire su quali tecnologie si basano, quali abbia senso mantenere nell’attuale condizione e quali invece conviene in qualche modo trasformare, nell’ottica di una modernizzazione complessiva.

Tale fase si conclude solitamente con la redazione di un report utile a spiegare sia alle figure IT che alle figure decisionali non tecniche quale sia la situazione del comparto applicativo, in modo da iniziare ad entrare nel merito del punto successivo: l’analisi degli obiettivi di business.

Analisi degli obiettivi di business

Una volta definito il quadro esistente, sul fronte applicativo diventa necessario verificare la rispondenza dello stato di fatto con le esigenze di business dell’azienda, entrando soprattutto nel merito dei business plan e della programmazione nel breve e medio termine. Soltanto sapendo cosa sia opportuno fare, ossia la natura del problema, diventa possibile individuare la soluzione più idonea per riorganizzare un’azienda a livello IT.

Anche in questo caso, diventa fondamentale il dialogo costante con i responsabili IT e i decisori non tecnici, in modo da conoscere il sentimento e, in generale, tutti quegli aspetti che difficilmente emergono dalla semplice lettura di un business plan. Sulla base della valutazione analitica e delle precedenti esperienze sviluppate in situazioni simili, il consulente procede con la proposta di una strategia di cloud migration.

Definizione della strategia di cloud migration

Una volta che si è ottenuta una visione lucida e consapevole di quanto presente in azienda, ha finalmente senso ragionare nell’ottica di una strategia migliorativa, con uno studio di fattibilità finalizzato a definire, in sede preventiva, le operazioni da svolgere, il budget necessario e soprattutto stabilire una cronologia di intervento che risulti coerente con la continuità di business dell’azienda.

La definizione di una strategia consiste nel valutare cosa abbia senso mantenere, eliminare e modificare rispetto al quadro applicativo esistente, in funzione delle priorità in termini di esigenze e del budget effettivamente a disposizione. La strategia deve necessariamente tenere conto anche degli aspetti organizzativi dell’azienda, in modo da consentire la migrazione del software senza costringere all’interruzione dei processi fondamentali per il business, soprattutto quando si interviene sulle applicazioni che vengono utilizzate dai clienti finali, per cui si prevede un’elevata disponibilità (high availability).

Progetto di modernizzazione dell’applicazione

Le applicazioni per cui è stata prevista la migrazione in cloud sono rivalutate in modo da capire se procedere con un rehosting, un replatforming, un refactoring o affrontare un nuovo progetto cloud native. Nel caso di un replatforming, gli sviluppatori si concentrano sull’architettura esistente per capire come renderla funzionale in un ambiente cloud, che corrisponde solitamente con il PaaS (Platform-as-a-Service) dove i principali vendor rendono disponibili tutte le tecnologie necessarie per modernizzare l’applicazione. Per il resto, a livello di project management non vi sono sostanziali differenze rispetto agli altri progetti di sviluppo, per cui diventa fondamentale mantenere alta la linea di attenzione nei confronti del corretto funzionamento dei vari elementi che compongono l’applicazione, oltre al rispetto delle ore-persona dedicate al progetto.

Serverless CTA