Sviluppatori software e ISV, come migrare le app in Cloud: una guida e un nuovo percorso di eventi streaming: il 30 marzo parte la Microsoft Paas Academy
I servizi cloud sono molto più di un semplice trend in ambito IT. Sono in grado di rivoluzionare il modo in cui si sviluppa e si distribuisce il software, ottimizzando in maniera decisiva sia i tempi che i costi di sviluppo e aggiornamento di un’applicazione.
Nonostante le criticità caratterizzate da un processo di trasferimento tecnologico, modernizzare il ciclo di vita del software costituisce una grande opportunità, sia per gli ISV che per le aziende che ne beneficiano.
Migrare il software in cloud (qui anche una guida su cosa fa uno sviluppatore e perchè il cloud è una buona opportunità) consente infatti di entrare in uno scenario di rinnovata efficienza che consente di sfruttare i molti vantaggi che la nuvola è in grado di offrire, grazie ad una grande varietà di opzioni cui è possibile far riferimento.
[Quando come e perchè conviene migrare software e app in cloud e in particolare su Microsoft Azure? Scoprilo al primo appuntamento con ma PaaS Academy di Microsoft il prossimo 30 marzo dalle 10:00. Una maratona digitale al servizio degli sviluppatori e della straordinaria opportunità delle nuvole. Qui tutti i dettagli per partecipare]
Tra i principali vantaggi alla base della migrazione del software in Cloud ritroviamo:
- Indipendenza da infrastrutture hardware e software proprietarie: i servizi cloud consentono di pagare le risorse allocate, senza doversi preoccupare dell’acquisto e della manutenzione dell’hardware e del software necessario per lo svolgimento delle funzioni aziendali;
- Scalabilità e provisioning rapido delle risorse: possibilità di ottenere in maniera immediata tutte le risorse IT necessarie con un semplice scale up del servizio;
- Maggior innovazione e facilità nel decision making: l’azione congiunta dei due vantaggi sopradescritti consente di sperimentare nuove soluzioni senza dover pianificare ed affrontare investimenti vincolanti in ambito IT, dal momento che l’onere infrastrutturale viene preso in carico dal provider cloud;
- Certezza dei costi: facilità di pianificazione del budget grazie alle condizioni scalabili a servizio dei provider cloud, che mette al riparo dagli imprevisti e delle incertezze derivanti dalle dotazioni on-premises.
- Sicurezza e conformità alle normative: protezione dei dati e backup ridonanti, oltre alla conformità alle policy sulla base di quanto previsto dalle normative in materia di protezione dei dati (es. GDPR)
Anche se il cloud non costituisce ancora la soluzione perfetta a tutti i problemi lato software, negli ultimi anni sono stati compiuti enormi progressi sotto tutti i punti di vista. La maggior agilità del cloud rispetto alle soluzioni on-premises diventa un fattore decisivo soprattutto quando un’azienda sceglie di innovare in maniera decisa la propria offerta riducendo al massimo i rischi di investimento iniziale.
Sul lungo periodo i costi del cloud potrebbero rivelarsi superiori rispetto all’equivalente di una dotazione hardware- software proprietaria ormai ammortizzata, ma tale gap viene solitamente ampiamente compensato da una serie di altri benefici che soltanto un’architettura cloud è in grado di garantire agli ISV e alle aziende (qui comunque anche una guida su Microsoft Azure).
Le possibilità migratorie: dal Lift-and-Shift al Rebuilding Cloud Native
Data la varietà delle applicazioni aziendali è possibile valutare un ampio range di possibilità migratorie, per portare le applicazioni sulle varie tipologie di servizi cloud di riferimento: IaaS (Infrastructure as a Service), PaaS (Platform as a Service) e SaaS (Software as a Service).
Le possibili strategie sono molte a seconda che si decida di portare in cloud l’applicazione legacy “as is” oppure riscriverla integralmente con logiche cloud native. Esistono naturalmente varie condizioni intermedie che vanno valutate caso per caso con l’obiettivo di ottimizzare i vantaggi derivanti dalla migrazione:
- Lift and Shift (IaaS): consiste nella replica dell’applicazione on-premises in un ambiente hardware su un cloud pubblico o privato, con il principale obiettivo di ridurre i costi di infrastruttura IT. Un altro caso è dato da applicazioni programmate con logiche poco congeniali a tecnologie cloud native come la containerizzazione dei pacchetti di codice software, quando il passaggio al cloud è comunque auspicabile a causa di altri fattori;
- Replatforming (PaaS): consente nella modernizzazione dell’applicazione legacy in PaaS, mantenendo le stesse funzioni. Se il software legacy è sufficientemente predisposto all’ambiente cloud il lavoro da effettuare sul codice può essere di lieve o media entità;
- Refactoring (PaaS): consente nell’eseguire le applicazioni legacy su un’infrastruttura IT cloud per sfruttarne i vantaggi, mantenendo però gli stessi framework e linguaggi di programmazione utilizzati in precedenza. Si sceglie di norma il cloud provider la cui piattaforma è in grado di garantire la migrazione con il minor lavoro sul codice del software originariamente sviluppato;
- Rebuilding (PaaS): avviene quando l’applicazione legacy viene totalmente riscritta, con il totale rinnovamento della sua architettura. Questo approccio consente di sfruttare le opzioni cloud più avanzate e moderne, come l’impiego dei servizi serverless. Se il primo passo può apparire più dispendioso rispetto alla modifica parziale, questo impegno viene largamente compensato sul medio e lungo termine dalla maggior efficienza generale dell’applicazione. Un caso particolare è costituito dal Replacing (Saas), la cui esigenza è di tipo prevalentemente commerciale, avendo quale principale obiettivo quello di passare da un modello di pricing a licenza permanente ad un modello a servizio “pay per use”, tipico dei software distribuiti in cloud (SaaS).
Migrare il software in Cloud: la modernizzazione tra IaaS, PaaS e Serverless
Dopo un’accurata valutazione strategica, è possibile individuare una crescente logica di modernizzazione del software nel caso di una sua implementazione, dal IaaS al Serverless, con il PaaS come condizione intermedia ideale per la fase di migrazione vera e propria.
Il percorso di modernizzazione di un’applicazione è solitamente caratterizzato tra tre fasi: Assess, Migrate e Innovate.
I principali provider cloud garantiscono agli ISV dei tool che consentono di facilitare il processo di migrazione (Migration Assistant Tool) a partire da una diagnostica automatizzata, che consente di valutare il software, ad esempio un sito internet, inserendo semplicemente il suo URL e rilevando le eventuali criticità da gestire.
Se la fase di migrazione vera e propria può consistere nel redeploy del codice del software o nella sua containerizzazione, in termini di innovazione, i servizi cloud consentono di avvalersi di molte funzioni agili da gestire, in un ambiente ideale per supportare le metodologie di sviluppo DevOps.
L’ipotesi di migrare verso un’architettura IaaS è la più gravosa e andrebbe valutata, con tutti i pro e i contro del caso, quando il software legacy on-premises non risulta direttamente portabile su un’architettura PaaS e non vi sia il modo di optare per una sua sostituzione cloud native. Il PaaS consente infatti di operare in un ambiente più agile da gestire, libero dall’onere di gestione dell’infrastruttura e con vari servizi / preset configurabili per rendere molto veloce ed efficiente lo sviluppo.
Un ulteriore livello di modernizzazione è caratterizzato dal serverless computing, un modello di sviluppo cloud native che consente di sviluppare, eseguire e monitorare le applicazioni senza doversi preoccupare della gestione dei server.
L’architettura Serverless non indica dunque, come il nome potrebbe indurre, l’assenza di un server alla base, ma la sua totale astrazione nei confronti dello sviluppatore, chiamato ad occuparsi in buona sostanza soltanto della parte che maggiormente gli compete, senza doversi preoccupare delle risorse necessarie, in quanto è il servizio in cloud a definire in maniera automatica come scalare le risorse ed effettuare il load balancing delle istanze in esecuzione.
Le applicazioni sono containerizzate ed è il sistema stesso ad occuparsi dello scaling in funzione delle risorse necessarie per eseguirle. La logica serverless, basata su eventi, è assolutamente “on demand” e questa logica si manifesta anche dal punto di vista del pricing, configurando uno scenario molto interessante per gli ISV e le aziende.
Di base una soluzione serverless non costa nulla quando non viene utilizzata, perché di fatto non consuma risorse. Affinché avvenga un dispendio è necessaria l’attivazione di un evento, in funzione del quale il servizio configura automaticamente le risorse necessarie per eseguirlo.
Nel caso di IaaS/PaaS generalmente si assiste sempre a modelli a consumo, ma con logiche differenti, in quanto un costo di base è giustificato dal fatto che nel momento in cui acquistiamo un servizio ci riserviamo delle risorse hardware che sono sempre a nostra disposizione, attive e funzionanti anche nel caso in cui noi decidessimo di non utilizzarle, ad esempio quando l’applicazione non è in uso.