Cloud nativo come nuova scuola di pensiero e di opportunità di sviluppo. Il termine è entrato a far parte della letteratura IT 5 anni fa, quando nell’estate del 2015 la Linux Foundation decise di dare vita alla Cloud Native Computing Foundation (CNCF). L’obiettivo del progetto? Promuovere lo stato dell’arte delle applicazioni e dei servizi creati nativamente cloud.
Cloud nativo cosa significa veramente?
Il lancio della CNCF non ha reso immediatamente chiaro e intuitivo il significato del cloud nativo. Anche perché a contorno sono stati citati tanti tech topic: software open source, container, microservizi, API e strumenti di orchestrazione. La conseguenza è stata che tutte queste tecnologie sono state associate al significato di cloud native, con pochi chiarimenti in merito a come queste tecnologie convergono per finalizzare un’app che si qualifica come nativamente cloud.
Per aiutare a pervenire a una definizione corretta, gli esperti hanno analizzato il modo in cui le diverse organizzazioni utilizzano il termine nel quotidiano.
Il cloud nativo secondo CNCF
La definizione più spesso citata è quella di CNCF (che, a detta degli esperti, rimane anche la più oscura). La fondazione enfatizza alcuni concetti non inclusi nel lancio dell’iniziativa come, ad esempio, automazione, osservabilità e resilienza. Ma non c’è un chiaro distinguo su cosa sia cloud native e cosa no. Il termine viene utilizzato per qualsiasi tipo di applicazione che fa uso di container e microservizi o si basa su conteggi di automazione o resilienza. Il fatto è che molte delle tecnologie che CNCF associa al cloud nativo non sono esclusive del cloud computing. È possibile eseguire container o utilizzare microservizi in locale o, ancora, automatizzare i processi ovunque lo si voglia. Secondo quest’ordine di ragionamento, il cloud non è una parte essenziale del cloud nativo.
Il cloud nativo secondo Richard Stallman
Il cloud nativo ricorda anche il termine software libero, coniato negli anni ’80 da Richard Stallman (programmatore, informatico e attivista statunitense tra i principali esponenti del movimento del software libero e promotore del progetto GNU) quando si riferiva a programmi di sviluppo con codici sorgente disponibili gratuitamente. La frase ha portato generazioni professionisti a confondere software libero con software gratuito. In modo analogo, il cloud nativo induce molte persone a ritenere di dover usare la nuvola quando si deve creare un’app nativa in cloud.
Il cloud nativo per Microsoft o New Stack
Anche molte altre organizzazioni hanno seguito l’esempio di CNCF nei propri tentativi di definire il cloud nativo. La spiegazione di Microsoft è l’emblema di una lunga dissertazione filosofica su come automazione, resilienza, container e microservizi convergano per abilitare il cloud nativo. Anche la definizione del cloud nativo ad opera di New Stack si basa sui principi di CNCF, ma aggiunge alcune nuove idee al mix tecnologico come, ad esempio, l’allocazione delle risorse guidata dalle politiche e la separazione dei servizi con stato da quella dei servizi senza stato.
Il cloud nativo secondo gli sviluppatori Agile
Altri sforzi per definire il cloud nativo prendono in prestito una parte dalla definizione di CNCF introducendo nel mix l’approccio DevOps. Da questo punto di vista, un’app cloud native è quella che viene sviluppata e distribuita secondo le linee guida Agile, utilizzando anche container e microservizi.
Cloud nativo come sinonimo di cloud
Ci sono anche molti altri casi in cui il cloud nativo viene sostanzialmente utilizzato per fare riferimento a tutto ciò che viene eseguito nel cloud. Ad esempio, se si cerca “cloud native” sul marketplace di AWS, troverai decine di app o servizi di terze parti che dichiarano di essere cloud native. Gli osservatori suggeriscono di prestare attenzione perché, in realtà, la maggior parte non soddisfa in modo univoco tutte le condizioni di automazione, containerizzazione, microservizi o altre tecnologie che corrispondono all’offerta nativamente in cloud.
Applicazioni cloud native: esempi e punti di attenzione
Per fare un esempio, Dynatrace si definisce cloud nativo e la sua piattaforma di monitoraggio può effettivamente essere utilizzata per osservare le applicazioni si potrebbero definire native nel cloud. Tuttavia, Dynatrace può essere utilizzato anche per monitorare altri tipi di applicazioni in quanto non funziona solo in caso di containerizzazione o con le app progettate per essere altamente resilienti o distribuite utilizzando i processi DevOps.
Un’altra istanza da considerare è Blu Genius, che si autodefinisce uno strumento per la “migrazione nativa del cloud“. Tuttavia, sarebbe probabilmente più preciso affermare che abilita la migrazione del cloud. Nulla del tipo di migrazione supportato da Blu Genius è nativo in cloud in modo esplicito o univoco (se si utilizza il cloud nativo nell’accezione di CNCF).
App native in cloud: come funzionano
Quindi, cosa significa effettivamente cloud native?
Il cloud nativo è un approccio allo sviluppo e all’esecuzione di applicazioni che sfruttano i vantaggi del modello di rilascio tipico della nuvola per velocizzare lo sviluppo della programmazione attraverso un particolare modello di creazione e di distribuzione che sfrutta varie tecniche che garantiscono scalabilità, agilità e velocità.
Il termine ha vari usi e consumi a seconda di chi lo usa e per cosa lo usa. Ad alto livello, alcune tecnologie, come container e microservizi, costituiscono una parte importante di ciò che molte persone considerano nativo in cloud. Tuttavia, non esiste praticamente alcuna guida specifica da parte di un’organizzazione su come queste tecnologie debbano essere utilizzate per far sì che un’app soddisfi tutti i requisiti espressi dal termine.
Molte app vengono distribuite utilizzando i contenitori, ma è semplicistico affermare che qualsiasi app containerizzata rientri nel novero delle applicazioni cloud native. A questo si aggiunge che molte app dipendono fortemente dall’automazione e quasi tutte le app di produzione professionali sono progettate per essere resilienti, il che non rende native tutte le app con queste funzionalità.
Attenzione a chi fa uso del termine
Come sottolineano gli esperti, nella letteratura IT ci sono stati altri termini soggetti a diverse interpretazioni (e altrettanti ce ne saranno). Ancora oggi non c’è un consenso su cosa significhi esattamente DevOps; ci possono essere alcuni temi comuni ma non esiste un’unica formula o set di strumenti che definisce ciò che valga come DevOps e cosa no. L’unico accorgimento è di discernere l’uso improprio che ne fanno molti professionisti del marketing che in realtà intendono semplicemente cloud quando parlano di cloud nativo…