Il cloud native computing è un paradigma di sviluppo e distribuzione di applicazioni. Comprende diverse tecnologie e modelli architetturali, inclusi container Linux open source, Kubernetes e microservizi. Il cloud native computing enfatizza la scalabilità, l'automazione, l'efficienza e la semplicità in tutti i domini dello sviluppo delle applicazioni e del ciclo di vita della distribuzione, inclusa l'organizzazione del team. Con questo approccio, i professionisti IT creano applicazioni che possono essere implementate su richiesta nel cloud, in modo rapido e semplice; risparmiando sui costi delle risorse informatiche.
Lo stack di elaborazione nativo del cloud
Il cloud native computing richiede diversi pezzi modulari di codice, tecnologia e sistemi per funzionare insieme. L'infografica Cloud Native Landscape di TheCloud Native Computing Foundation mostra, per categoria, tutti i servizi e le tecnologie disponibili per l'uso.
Sebbene ci siano molti componenti nello stack di cloud native computing, non è così complesso come potrebbe sembrare. Cloud native utilizza uno stack software open source per distribuire le applicazioni come microservizi; imballare ogni parte nel proprio contenitore; e orchestra dinamicamente quei contenitori per ottimizzare l'utilizzo delle risorse.
Il cloud native computing utilizza contenitori che vengono eseguiti su cloud dinamici. Senza i container o il cloud elastico, il cloud-native non esiste. Questo approccio on-demand consente agli amministratori di sistema e agli sviluppatori di eseguire in modo dinamico le applicazioni da componenti che si attivano e si abbassano come richiesto dai servizi dell'applicazione.
I programmi cloud-native sono legati liberamente . I componenti del sistema sono interconnessi in modo tale da dipendere l'uno dall'altro nella misura minima possibile; gli elementi richiedono poca conoscenza diretta l'uno dell'altro. Il codice non è cablato su una determinata infrastruttura. Nel caso del software cloud-native, gli elementi sono collegati tramite API, service mesh e reti.
Anche i programmi cloud-native sono senza stato . Memorizzano i loro dati e lo stato in database esterni. Un programma nativo per il cloud non "sa" dove risiedono i suoi dati. I dati potrebbero essere archiviati ovunque; importa solo che sia possibile accedervi quando è necessario.
Come suggerisce il nome, i programmi nativi del cloud vivono e muoiono sulle nuvole. Sono sviluppati lì; messo in scena e testato lì; protetto e sottoposto a debug lì; schierato lì; e costantemente migliorato tramite CI e CD.
Gestione delle applicazioni cloud-native
Per gestire i sistemi di cloud computing, gli amministratori orchestrano i container con Kubernetes. Alcuni sosterrebbero che Kubernetes è essenziale per il cloud native computing.
Le applicazioni vengono eseguite all'interno di contenitori basati su Linux. Raramente usano linguaggi di sviluppo della vecchia scuola come C++ o Java. Invece, le applicazioni cloud-native vengono solitamente scritte utilizzando linguaggi incentrati sul Web, come Go, Node.js, Rust e Ruby. Non c'è niente di sbagliato nei vecchi linguaggi, ma la programmazione cloud-native enfatizza la flessibilità e l'interoperabilità.
Per promuovere questi obiettivi, il cloud native computing utilizza anche altri due concetti:elaborazione serverless e microservizi.
Nell'elaborazione serverless, le applicazioni non hanno bisogno di conoscere l'hardware su cui è in esecuzione o come è gestito. Il software richiama le funzioni fornite dalla piattaforma serverless senza che sia necessaria una maggiore conoscenza di nient'altro. Ciò significa che gli sviluppatori possono concentrarsi sulla logica aziendale di un'applicazione, piuttosto che sui problemi dell'architettura (ad esempio, se il server dispone di RAM sufficiente).
I microservizi forniscono servizi leggeri e liberamente accoppiati tramite un endpoint API. Questi sono collegati da protocolli leggeri come Representational State Transfer (REST) orgRPC. Nel cloud native computing, i dati tendono a essere rappresentati da JavaScript Object Notation (JSON) o Protobuf. Forniscono servizi modulari e di base. Può essere utile pensare a questi come simili ai programmi shell di Linux, che forniscono servizi singoli fatti bene, ma per il cloud.