Come accelerare il processo di application modernization grazie ad Azure

Diverse sono le realtà aziendali che intraprendono un processo di trasformazione digitale incentrato sul cloud pubblico con l’obiettivo di aumentare l’innovazione, l’agilità e l’efficienza operativa. Nell’ambito di questo percorso, la modernizzazione delle applicazioni sta diventando rapidamente una pietra miliare che consente di ottenere importanti benefici. In questo articolo viene approfondito come è possibile intraprendere ed accelerare il processo di modernizzazione delle applicazioni con le soluzioni disponibili in Microsoft Azure e quali opportunità è possibile cogliere.

Microsoft Azure offre la flessibilità di scegliere tra un’ampia gamma di opzioni per ospitare le proprie applicazioni, coprendo lo spettro di Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), Container-as-a-Service (CaaS) e serverless.

La tendenza a sviluppare applicazioni moderne, che necessitano di architetture basate su microservizi, rendono i container la soluzione ideale per eseguire il deployment del software in modo efficiente ed operare su larga scala. Oltra alla possibilità di effettuare deployment consistenti, affidabili e ripetibili in tutti gli ambienti si può ottenere un migliore utilizzo dell’infrastruttura ed una standardizzazione delle pratiche di gestione.

Inoltre, i clienti possono utilizzare sempre più i container anche per le applicazioni non appositamente progettate per utilizzare architetture basate su microservizi. In questi casi è possibile attuare una strategia di migrazione delle applicazioni esistenti che prevede solo modifiche minimali del codice dell’applicazione oppure modifiche alle configurazioni. Si tratta di modifiche strettamente necessarie per ottimizzare l’applicazione al fine di essere ospitata su soluzioni PaaS e CaaS.

Questa tecnica di migrazione viene solitamente utilizzata quando:

  • Si vuole sfruttare una base di codice esistente
  • La portabilità del codice è importante
  • L’applicazione può essere facilmente pacchettizzata per essere eseguita in ambiente Azure
  • L’applicazione deve essere più scalabile e deve esserci la possibilità di essere distribuita più velocemente
  • Si vuole promuovere l’agilità aziendale mediante un’innovazione continua adottando tecniche DevOps

Application repackage con Azure Migrate: App Containerization

Per facilitare questo processo di migrazione è possibile utilizzare la soluzione Azure Migrate che include molti strumenti e funzionalità, tra i quali il tool App Containerization. Tale strumento offre un approccio definito “point-and-containerize” per effettuare il “repackage” delle applicazioni utilizzando i container e apportando, solo se necessario, delle modifiche minimali al codice. Lo strumento attualmente supporta la containerizzazione di applicazioni ASP.NET e applicazioni Web Java in esecuzione su Apache Tomcat.

Figura 1 – Funzionalità di modernizzazione delle applicazioni adottando Azure Migrate: App Containerization

Lo strumento App Containerization consente di effettuare le seguenti attività:

  • Connettersi remotamente agli application server per rilevare le applicazioni e le relative configurazioni.
  • Parametrizzare le configurazioni e le dipendenze applicative, come ad esempio le stringhe di connessione ai database, per consentire di effettuare deployment consistenti e ripetibili.
  • Esternalizzare eventuali contenuti statici e gli stati archiviati sul file system, spostandoli su storage persistente.
  • Creare e pubblicare le immagini dei container usando Azure Container Registry.
  • Personalizzare e riutilizzare gli artefatti generati dagli strumenti come Dockerfile, le immagini dei container e i file di definizione delle risorse Kubernetes. Questo permette di integrali direttamente nella pipeline di continuous integration e continuous delivery (CI/CD).

Inoltre, in Azure Migrate: App Containerization è previsto l’utilizzo di Azure Key Vault per gestire i secret e l’integrazione automatica per effettuare il monitor delle applicazioni Java con Azure Application Insights.

Azure App Service vs Azure Kubernetes Service (AKS): quale scegliere?

App Containerization consente di migrare le applicazioni in container utilizzando Azure App Service oppure Azure Kubernetes Service (AKS). Nei paragrafi seguenti vengono riportate alcune considerazioni per valutare quale servizio è più idoneo per ospitare le proprie applicazioni.

Azure App Service: Azure Web App for Containers

Per carichi di lavoro web-based esiste la possibilità di far eseguire i container dagli Azure App Service, la piattaforma Azure di web hosting, utilizzando il servizio Azure Web App for Containers, con il vantaggio di poter sfruttare le metodologie di distribuzione, scalabilità e monitor intrinseche nella soluzione.

I task di automazione e gestione di un numero elevato di container e le modalità con le quali questi interagiscono applicativamente tra di loro è noto come orchestrazione. Nel caso quindi ci sia la necessità di orchestrare più containers è necessario adottare soluzioni più sofisticate come Azure Kubernetes Service (AKS).

Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) è il servizio Azure completamente gestito che permette l’attivazione di un cluster Kubernetes.

Kubernetes, conosciuto anche come “k8s”, provvede all’orchestrazione automatizzata dei container, migliorandone l’affidabilità e riducendo il tempo e le risorse necessarie in ambito DevOps. Kubernetes tende a semplificare i deployment, permettendo di eseguire automaticamente le implementazioni ed i rollback. Inoltre, permette di migliorare la gestione delle applicazioni e di monitorare lo stato dei servizi per evitare errori in fase di implementazione. Tra le varie funzionalità sono previsti controlli di integrità dei servizi, con la possibilità di riavviare i container che non sono in esecuzione oppure che risultano bloccati, permettendo di annunciare ai client solo i servizi correttamente avviati. Kubernetes permette inoltre di scalare automaticamente in base all’utilizzo ed esattamente come i container, permette di gestire in maniera dichiarativa l’ambiente cluster, consentendo una configurazione controllata a livello di versione e facilmente replicabile.

Figura 2 – Esempio di architettura a microservizi basata su Azure Kubernetes Service (AKS)

Passaggio successivo: innovare utilizzando soluzioni moderne per le applicazioni

La tecnica di migrazione descritta nei paragrafi precedenti spesso risulta anche il primo passo per intraprendere un’ulteriore modernizzazione dell’applicazione che comporta una riprogettazione. Infatti, lo step successivo consiste nel modificare oppure estendere l’architettura e la base di codice dell’applicazione esistente, andandola ad ottimizzare per la piattaforma cloud. Quando si integrano le moderne piattaforme applicative nella strategia di adozione del cloud, l’innovazione non si limita ai container. Questa integrazione offre una importante innovazione che comporta anche l’adozione di strategie ibride e multicloud.

Figura 3 – Innovazione data dalle piatteforme applicative moderne

Conclusioni

Esiste una tendenza chiara e in continua crescita che vede una modernizzazione degli applicativi rivolta a garantire una maggiore flessibilità, una riduzione del footprint dell’infrastruttura e la possibilità di beneficiare dell’innovazione data dal cloud. Questa modernizzazione non necessariamente deve passare fin da subito da una strategia di rebuild dell’applicazione da zero prevedendo l’utilizzo di tecnologie cloud-native, ma può avvenire in modo graduale. Grazie allo strumento App Containerization di Azure Migrate è possibile intraprendere il percorso di modernizzazione con un approccio semplice che consente di beneficare rapidamente delle potenzialità offerte dalle soluzioni cloud. Inoltre, la consapevolezza che Azure mette a disposizione diverse soluzioni di infrastruttura per ospitare le applicazioni moderne facilita il viaggio di modernizzazione degli applicativi.