Sentiamo sempre più spesso parlare di applicazioni cloud e tutti i giorni abbiamo a che fare con app come Gmail, Netflix, calendari condivisi, spazi di lavoro come Office365, e potremmo continuare per ore con altri esempi di applicazioni ingegnerizzate con tecnologia cloud native.
Nonostante ciò, c’è ancora un po’ di confusione in merito al mondo cloud: cosa significa adottare un approccio Cloud Native? Proviamo a fare un po’ di chiarezza su questo concetto e sul perché la transizione verso architetture Cloud Native è importante per l’IT e per il business.
Che cos’è il cloud
Con il termine cloud si intendono tutte le risorse, i server, il software, le applicazioni e i database a cui si accede tramite internet.
Cloud Native è quindi un approccio allo sviluppo software nel quale vengono create, eseguite e messe in funzionamento le applicazioni sul cloud che “vivono” su internet e non su server locali.
Una caratteristica fondamentale è la possibilità di utilizzare qualsiasi device connesso per accedere a queste applicazioni, dato che l’esecuzione è fatta off site – cioè fuori della “rete aziendale” – e il cloud si configura come una infrastruttura on demand, senza la necessità di scaricare programmi complessi.
Le tipologie di cloud possibili sono almeno tre: Public Cloud in cui le infrastrutture e i servizi sono gestiti dai service provider, come ad esempio Amazon AWS, Google o Azure e attraverso questi vengono configurati i sistemi e le applicazioni aziendali; Private Cloud, in cui – diversamente dal primo – le infrastrutture e i servizi sono ad uso esclusivo dell’azienda; Hybrid Cloud, in cui l’architettura finale prevede componenti di Private Cloud e una o più componenti di Public Cloud.
Sebbene possa sembrare intuitivo, bisogna specificare che il mondo dietro il cloud è composto da complesse tecnologie di virtualizzazione e da moderne architetture a container, utilizzate dai data center per gestire l’operatività: questo permette all’ecosistema di cloud computing di eseguire i servizi e le applicazioni anche nel caso in cui alcuni server non dovessero essere disponibili.
In generale, i servizi dei cloud provider dovrebbero essere sempre online e disponibili e avere il back-up su molteplici macchine e in diverse regioni.
Qual è la differenza tra applicazioni Cloud Native e Cloud Ready?
Per costruire, sviluppare, rilasciare e operare una applicazione in cloud viene utilizzato il cosiddetto approccio “Cloud Native”, che la CNCF (Cloud Native Computing Foundation) definisce nel seguente modo:
“Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.”
Le applicazioni Cloud Native sono sviluppate, distribuite e gestite utilizzando – in tutte le fasi – tecnologie Cloud Native come ad esempio microservizi, service mesh, container, e metodologie come API Driven, DevOps e Agile development. Attraverso queste è possibile velocizzare lo sviluppo di nuove applicazioni, aggiornare quelle esistenti e interconnetterle in modo standardizzato.
Tuttavia, rilasciare un’applicazione nel cloud non significa renderla automaticamente un’applicazione Cloud Native. Infatti, bisogna distinguere le applicazioni “Cloud Native” dalle applicazioni “Cloud Ready” (o “Cloud Enabled”): mentre le prime sono costruite dalle fondamenta con tecnologie cloud in modo da sfruttare al massimo le caratteristiche del cloud computing, le applicazioni Cloud Ready sono costruite con architetture classiche, e al limite con un’architettura monolitica, per poi essere spostate su public o private cloud, non permettendo di ottenere tutti i vantaggi di un’architettura Cloud Native.
Adottare tecnologie Cloud Native: i vantaggi per l’IT e per il business
Le caratteristiche appena presentate sono solo un assaggio dei benefici che l’adozione di un’architettura Cloud Native può portare al sistema IT di un’azienda, ma non solo: la portata delle tecnologie cloud native è essenziale per tutte le aziende che vogliono innovare il proprio business in un contesto sfidante come quello attuale. Proviamo a fare una sintesi dei principali vantaggi per l’IT e per il business.
1. Time to Market veloce
Le tecnologie Cloud Native permettono di ottenere architetture flessibili che permettono di rispondere alle necessità di mercato sempre più velocemente.
2. Miglioramento della customer experience con paradigma continuous integration/continuous delivery
È possibile applicare pratiche DevOps che permettono di rilasciare in modo continuo e testato le applicazioni.
3. Ridurre i costi di sviluppo e incrementare la riusabilità
Strutturare le applicazioni con microservizi e utilizzare infrastrutture a container fa sì che questi “pezzi di software” possano essere utilizzati come “mattoncini Lego” per lo sviluppo di futuri progetti.
4. Costruire applicazioni affidabili e scalabili by design per garantire la business continuity
Le architetture a microservizi sono per loro natura resilienti: al verificarsi di un problema tecnico è possibile prevedere un meccanismo di auto-ridondanza, facendo spostare l’esecuzione degli applicativi in modo automatico sulla infrastruttura.
5. Semplificare la gestione delle infrastrutture utilizzando in maniera più efficiente il budget IT
Utilizzare le risorse dei public cloud oppure le nuove piattaforme serverless – come Azure o AWS Lambda – riduce drasticamente la necessità di investimenti importanti per l’acquisto e la gestione di server e l’aggiornamento dei software di base o il rinnovo di licenze.
6. Evitare il vendor lock-in
Il problema del vendor lock-in delle licenze software – ovvero la difficoltà di cambiare le attuali tecnologie poco attrattive – viene mitigato dall’utilizzo di software open source e della standardizzazione delle interfacce nello scambio dati: in questo modo una applicazione può funzionare su qualunque piattaforma pubblica o privata.
7. Promuovere la cultura della comunicazione e delle applicazioni seamless
Processi legacy e sistemi legacy hanno una pessima caratteristica: possono bloccare la spinta del business nei momenti critici. Rilasciare applicazioni Cloud Native per le funzioni core di business elimina questo collo di bottiglia perché si costruisce e si utilizza una piattaforma seamless orizzontale mantenendo le applicazioni e i servizi ben organizzati.
Oggi, migrare al cloud per ridurre i costi IT è la normalità: ma la migrazione è solo l’inizio. Le organizzazioni dovrebbero affrontare il Cloud come un percorso di miglioramento continuo non solo dal punto di vista tecnologico ma anche culturale.
Perché è anche un cambiamento culturale?
Le tecnologie Cloud Native non portano vantaggi solo all’IT, ma a tutto il business: per questo motivo, la transizione verso architetture Cloud Native non costituisce un cambio radicale solo per l’area tecnica, ma coinvolge tutta l’azienda nel suo complesso.
Tuttavia, per passare a una metodologia cloud l’azienda deve farsi trovare pronta: adottare sempre nuove tecnologie in modo sicuro, consapevole e reattivo alle richieste di mercato, significa adoperarsi non solo nell’acquisizione di nuove infrastrutture e architetture IT, o di nuove professionalità e know-how, ma alla base bisogna avere dei valori e delle best practice che non rifiutino il cambiamento, bensì che siano pronte ad accoglierlo in casa.
Alla luce di queste considerazioni possiamo concordare che il passaggio all’architettura Cloud Native è un’esperienza trasversale che abbraccia processi, infrastrutture, tecnologia e cultura aziendale.