Magazine

Cosa sono le applicazioni cloud native e come favorire la loro implementazione

22/03/2023
Cosa sono le applicazioni cloud native e come favorire la loro implementazione
Enterprise
Negli ultimi anni si parla sempre più spesso di applicazioni cloud native. Il motivo? Il boom stesso del cloud ha permesso agli sviluppatori di beneficiare delle innovazioni della nuvola non solo per realizzare più velocemente le app, alimentate dalla potenza computazionale del cloud, ma anche per aggiornarle con maggiore semplicità, senza fermare i servizi a cui si riferiscono. Vale però la pena fare un passo indietro per capire come nascono e si affermano le applicazioni cloud native.

Un po’ di storia

Un'applicazione cloud native è un programma progettato per integrarsi al meglio in una piattaforma di cloud computing. Queste app vengono eseguite e ospitate nel cloud e sono progettate per sfruttare le caratteristiche intrinseche di un modello di distribuzione del software sulla nuvola. Un'app nativa del cloud è sviluppata seguendo la linea progettuale dei microservizi, ovvero allocare in modo efficiente le risorse per ciascun servizio utilizzato dall'applicazione, di fatto permettendo che un singolo modulo dell’app sia indipendente dagli altri, per continuare a funzionare anche in caso di criticità di una componente. Come detto, gli sviluppatori, soprattutto quelli inseriti nel trend dei DevOps, utilizzano applicazioni native del cloud per la loro capacità di promuovere l'agilità aziendale perché sono progettate, costruite e distribuite in modo diverso dalle tradizionali applicazioni monolitiche. Secondo la Cloud Native Computing Foundation, oggi abbiamo oltre 6,5 milioni di sviluppatori di app cloud native. Nel 2019 erano 4,7 milioni.

Come funzionano

Con sviluppo cloud native si intende proprio questo: un approccio alla realizzazione e all'aggiornamento rapido delle app, che al contempo migliora la qualità e riduce i rischi. È un modo per creare ed eseguire app reattive, scalabili e tolleranti agli errori, ovunque si trovino: nei cloud pubblici, privati o ibridi. Poiché non tutti i servizi si trovano sullo stesso server, gli sviluppatori di applicazioni native del cloud devono creare una rete tra le macchine, utilizzando architetture basate su software. I servizi risiedono su server diversi e vengono eseguiti in posizioni differenti. Questa architettura consente alle applicazioni di scalare e di essere progettate con ridondanza per continuare a funzionare anche dopo un guasto o un blocco dei servizi su cui si basa. 

I microservizi che fanno parte dell'architettura dell'app nativa del cloud sono inseriti in container che si connettono e comunicano tramite API. Ogni microservizio introduce una capacità aziendale, esegue i propri processi e comunica tramite un'interfaccia di programmazione delle applicazioni (API) o un sistema di messaggistica. Ma non sempre è necessario iniziare dai microservizi per accelerare la distribuzione delle applicazioni cloud native. Molte organizzazioni possono ad esempio ottimizzare le app esistenti con un'architettura basata sui servizi, approfittando dei flussi di lavoro DevOps come l'integrazione e il deployment continui (CI/CD), di operazioni di deployment totalmente automatizzate e di ambienti di sviluppo standardizzati.

Elementi essenziali

I fondamenti delle architetture cloud native si basano su alcuni pilastri. Quasi tutte le architetture cloud si fondano sui microservizi, ma il vantaggio principale che offrono è la componibilità, vale a dire la possibilità di suddividere un'applicazione in una raccolta di servizi più piccoli e leggeri, facilmente componibili e connessi tra loro tramite interfacce di programmazione di un'applicazione (API). Ad esempio, un'applicazione di e-commerce potrebbe essere composta da un servizio specifico per il carrello degli acquisti, un altro per il pagamento e un altro che comunica con il backend sulla gestione dell'inventario. La componibilità consente inoltre ai team di scambiare e riscrivere i componenti per soddisfare i nuovi requisiti aziendali senza interrompere un'altra parte dell'applicazione.
 
I container sono componenti eseguibili leggeri che contengono tutti gli elementi necessari, inclusi il codice sorgente e le dipendenze delle app, per eseguire il codice in qualsiasi ambiente. I container offrono la portabilità dei carichi di lavoro che consente di creare il codice una sola volta e di eseguirlo ovunque, semplificando notevolmente lo sviluppo e il deployment. Consentono inoltre di ridurre i possibili attriti tra linguaggi, librerie e framework perché è possibile eseguirne la distribuzione in modo indipendente. Questa portabilità e flessibilità rendono i container ideali per la creazione di architetture di microservizi.
  
Lo sviluppo di applicazioni cloud native richiede il passaggio a una metodologia di distribuzione agile come DevOps, in cui i team di sviluppatori e delle operazioni IT collaborano all'automazione dei processi di distribuzione del software e dell'infrastruttura. Il metodo DevOps consente ai team di sviluppo e operativi di comunicare in modo più stretto e di unirsi per uno scopo condiviso, creando una cultura e un ambiente in cui le applicazioni possono essere create, testate e rilasciate più rapidamente.
 
Integrazione e distribuzione continue (CI/CD - Continous Integration / Continous Delivery): l'automazione può riparare, scalare ed eseguire il deployment dei sistemi molto più velocemente rispetto alle persone. Le pipeline CI/CD aiutano ad automatizzare la creazione, i test e il deployment delle modifiche alle applicazioni senza dover pianificare il tempo di inattività o attendere un periodo di manutenzione. La distribuzione continua assicura che le release del software siano più affidabili e meno rischiose, consentendo ai team di fornire nuovi servizi e funzionalità in modo più rapido e frequente.

Vantaggi delle applicazioni native del cloud

Potendo essere ridimensionate in base alle esigenze, le app native del cloud eliminano la necessità di acquistare nuovo hardware e di bilanciare il carico di lavoro, in caso di picchi di utilizzo. Ma non si tratta solo di tecnologia: alla base del loro approccio c’è molta strategia, visto che tali app sono strettamente legate ad una metodologia di sviluppo come DevOps e consentono di rendere disponibile il software con una modalità CI/CD (Continous Integration / Continous Delivery) tipica del SaaS. Tale modello permette all’utente finale di concentrarsi esclusivamente sul proprio lavoro, senza preoccuparsi di dover continuamente aggiornare le applicazioni utilizzate o scaricare i continui aggiornamenti di sicurezza che interessano le applicazioni legacy.
 
A livello di sviluppo, quando suddivise in servizi più piccoli, le app native del cloud facilitano per un team di sviluppo di concentrarsi su un microservizio specifico, senza doversi preoccupare di come interagirà con altri microservizi. Ogni microservizio esegue infatti una funzione e può essere facilmente avviato all’interno di un singolo container, che integra tutto il necessario per la sua esecuzione (librerie, codice, file binari, config file, dipendenze, ecc.). L’elevata portabilità dei container favorisce la flessibilità, indispensabile quando si tratta di gestire team differenti, che operano con tecnologie e linguaggi di programmazione spesso diversi, all’interno dello stesso progetto DevOps.

Best practice per lo sviluppo di applicazioni native del cloud

Le best practice per la progettazione di applicazioni cloud native si basano sul principio DevOps dell'eccellenza operativa. L'architettura nativa del cloud non ha regole univoche quindi le organizzazioni possono affrontarne lo sviluppo in modo diverso in base al problema aziendale che stanno risolvendo e al software che stanno utilizzando.
 
Tutti i progetti di applicazioni cloud native dovrebbero considerare come verrà creata l'app, come vengono misurate le prestazioni e come i team promuovono il continuous improvement attraverso il ciclo di vita dell'app stessa. Ma ci sono dei punti critici che si ripetono. Ad esempio, l'automazione, che consente il provisioning coerente degli ambienti delle applicazioni cloud tra più fornitori di servizi. Con l'automazione, l'infrastruttura come codice (IaC) viene utilizzata per tenere traccia delle modifiche in un repository di codice sorgente. Ai team è richiesto solo di monitorare l'ambiente di sviluppo e il modo in cui verrà utilizzata l'applicazione. Definendo processi ripetibili, regole e framework, l'automazione può riguardare qualsiasi task o componente, dalle reti al provisioning delle risorse, fino alla distribuzione delle applicazioni e alle attività di configurazione.
 
È importante prendere in esame qualsiasi operazione o elemento che possa essere automatizzato ma si può agire gradualmente, cominciando da singoli aspetti (computing, archiviazione, comunicazioni di rete o provisioning) e proseguendo poi su questa base. Nel tempo, un'automazione integrata e su larga scala produrrà come risultati maggiore efficienza, velocità nel DevOps e nell’innovazione.
 
La tua organizzazione sta andando nella direzione dell’application modernization? Scopri l’offerta Aruba Enterprise per il cloud native