Che cosa significa effettivamente Cloud Native?

0
165
Nadya C/Shutterstock.com< /figura>

Le applicazioni cloud native sfruttano i vantaggi dei moderni componenti dell'infrastruttura cloud per facilitare implementazioni scalabili rapide. Un “cloud nativo” sistema è creato dalla combinazione di diversi attributi indipendenti. Avrà alti livelli di automazione e disaccoppiamento delle dipendenze, con conseguente maggiore resilienza al cambiamento grazie ai rilasci del codice e agli aggiornamenti dell'ambiente.

Oltre alle semplici qualità tecniche, la maggior parte dei commentatori legherà anche il cloud native all'organizzazione di implementazione 8217; pratiche di lavoro e mentalità di s. Le organizzazioni cloud native abbracceranno attivamente il cloud per il loro intero stack, considerandolo come una caratteristica distintiva della loro offerta. Ciò è in contrasto con i fornitori che vedono il cloud semplicemente come un datacenter che gestisce i propri servizi.

Definizioni variabili

Come con molte parole d'ordine comuni sul cloud, otterrai risposte diverse su ciò che costituisce il cloud nativo a seconda di chi chiedi.

Microsoft afferma che il termine descrive i sistemi che “abbracciano il cambiamento rapido, su larga scala e resilienza.” Per VMWare, è ’un approccio alla creazione e all'esecuzione di applicazioni che sfrutta i vantaggi del modello di distribuzione del cloud computing.” Oracle mette in evidenza come il cloud native si basi sul “calcolo distribuito.”

RedHat è più specifico, affermando che le app cloud-native sono “una raccolta di servizi piccoli, indipendenti e debolmente accoppiati” che forniscono “valore aziendale ben riconosciuto.” L'ultima parte riconosce che il cloud native è qualcosa di più del software. Un sistema cloud nativo di successo dovrebbe fornire risultati tangibili per la tua azienda, che si tratti di una maggiore soddisfazione del cliente o di tempi ridotti per il lancio.

Pubblicità

Lo statuto della Cloud Native Computing Foundation definisce il concetto come un paradigma di “sistemi debolmente accoppiati che sono resilienti, gestibili e osservabili”. Facilitano “cambiamenti ad alto impatto [effettuati] frequentemente e in modo prevedibile con il minimo sforzo.”

Tratti nativi delle nuvole

Non esiste un unico percorso per diventare cloud native. La terminologia è flessibile e si basa su caratteristiche qualitative. I sistemi cloud nativi di solito si basano su microservizi distribuiti con un orchestratore di container, utilizzando flussi di distribuzione automatizzati per spostare il codice attraverso la pipeline. Spetta a ciascuna organizzazione decidere l'effettiva implementazione.

Questo modello consente di avviare rapidamente nuovi cambiamenti senza perdita di controllo. Gli sviluppatori eseguono il commit delle modifiche, le inviano a un repository e lasciano che la loro pipeline CI distribuisca una nuova versione in produzione. L'automazione riduce il rischio di errori e offre agli sviluppatori maggiori opportunità di concentrarsi sulla scrittura di nuovo codice.

La conseguente accelerazione del ciclo di sviluppo aumenta la produttività complessiva, offrendo più funzionalità agli utenti in un lasso di tempo più breve. Ciò favorisce la soddisfazione e il coinvolgimento del cliente, proiettando un'immagine di una base di codice in continua evoluzione in cui i bug vengono corretti subito dopo la scoperta.

Il cloud native non è abbastanza “lascia che la macchina faccia il lavoro” benchè. Un altro principio fondamentale è l'osservabilità, l'idea che i sistemi debbano far emergere il loro stato interno in un modo che sia facilmente accessibile ai team operativi.

Monitoraggio, tracciamento e registrazione efficaci ti danno visibilità quando si verificano problemi . Un sistema osservabile fa emergere le informazioni necessarie per risolvere i problemi. Utilizzi le capacità introspettive della tua infrastruttura per scoprire il ciclo di vita delle richieste, dalla tua rete ai singoli servizi e viceversa.

Separazione delle preoccupazioni

Una caratteristica fondamentale dei sistemi nativi cloud è il forte disaccoppiamento. Questo va di pari passo con il modello di microservizi. I servizi devono essere in grado di essere autonomi senza dipendenze reali l'uno dall'altro. Ciò aumenta la resilienza e rende più facile scambiare parti del tuo stack in futuro.

Pubblicità

Ogni unità funzionale diventa il proprio microservizio che comunica con le altre tramite API ben definite. Ti consente di separare le singole parti del tuo sistema, aiutando gli sviluppatori a concentrarsi sulla loro area specifica e permettendoti di mettere in sicurezza i servizi critici in produzione. Il tuo servizio di autenticazione potrebbe trarre vantaggio da un maggiore grado di isolamento rispetto ai tuoi contenitori web generici.

I servizi di disaccoppiamento li rendono più scalabili in modo che il tuo sistema sia meglio attrezzato per rispondere ai cambiamenti nella domanda degli utenti. Se la copertura mediatica provoca un aumento dei numeri di registrazione degli utenti, puoi aggiungere rapidamente più istanze del backend del servizio di registrazione per gestire il traffico extra. Un approccio convenzionale con un'app monolitica su una VM o un server bare metal non potrebbe adattarsi in questo modo.

I vantaggi aziendali

Diventare cloud native spesso ha un impatto significativo sull'intera organizzazione. Una migliore scalabilità può ridurre i costi, aumentare i tempi di attività del servizio e mantenere l'infrastruttura un passo avanti rispetto agli utenti. Tutto ciò porta a una piattaforma più competitiva che è sufficientemente agile da rispondere ai cambiamenti del mercato.

I sistemi legacy potrebbero non avere procedure di implementazione stabilite, ma si basano invece su un roll-up periodico delle recenti modifiche alla produzione. Ciò rende impossibile una risposta rapida alle preoccupazioni dei clienti. In un sistema nativo del cloud, puoi reagire ai ticket non appena arrivano. Il codice di solito viene spedito subito dopo un'unione, consentendoti di apportare miglioramenti in pochi minuti anziché in giorni.

I sistemi cloud nativi possono essere più attraenti anche per gli sviluppatori, rendendo più facile assumere i migliori talenti. L'utilizzo di tecnologie come Docker e Kubernetes in produzione dimostra un impegno nei confronti dei flussi di lavoro moderni che rendono lo sviluppo quotidiano meno impegnativo. La possibilità di accedere a ingegneri altamente qualificati di solito si traduce in prodotti migliori realizzati in meno tempo, creando un ciclo autosufficiente che avvia una ripresa nella crescita dell'organizzazione.

Cloud Native e DevOps

I sistemi cloud nativi sono spesso il risultato di buone pratiche DevOps. Mentre DevOps descrive l'interazione tra i team di sviluppo e quelli operativi, il cloud native si concentra sul risultato di tale interazione e sul suo impatto sull'azienda in generale.

Pubblicità

Il ciclo DevOps mantiene uno stretto ciclo tra pianificazione, costruzione , test, rilascio e monitoraggio. Aumenta la velocità di sviluppo definendo chiaramente la sequenza di eventi nel ciclo di vita di una nuova funzionalità. Il rispetto dei principi DevOps aumenta la probabilità che un sistema diventi un cittadino cloud efficace.

I due hanno la tendenza a nascere l'uno dall'altro. Se stai praticando consapevolmente uno dei termini, probabilmente stai già sfruttando anche i benefici dell'altro. I sistemi nativi del cloud vengono distribuiti automaticamente a cadenza regolare; l'uso efficace degli strumenti DevOps come le pipeline CI/CD è il modo logico per implementare flussi di sviluppo rapidi.

Che dire di “Cloud Enabled?&# 8221;

Potresti imbatterti in sistemi descritti come “abilitati per il cloud” invece del cloud nativo. Questo termine di solito si riferisce ad applicazioni che stanno passando dai modelli di sviluppo e distribuzione tradizionali alle alternative cloud.

Un sistema abilitato per il cloud verrà eseguito utilizzando l'infrastruttura cloud ma potrebbe non essere completamente disaccoppiato e modulare. Se disponi di un monolite legacy, di solito è relativamente semplice impacchettarlo come contenitore Docker e lanciarlo nel cloud. Ciò fornisce alcuni vantaggi immediati, tra cui la prospettiva di implementazioni automatizzate e un certo grado di scalabilità.

Tuttavia, il livello dell'applicazione è ancora un monolite. Sarà necessario un periodo di refactoring per suddividere lo stack in microservizi disaccoppiati in grado di ridimensionarsi singolarmente l'uno dall'altro. Un monolite containerizzato non può offrire lo stesso grado di resilienza di un sistema progettato e realizzato per il cloud.

Pubblicità

L'abilitazione di un sistema al cloud è il primo passo per trasformarlo in un cittadino cloud nativo. Può essere seguito da un “cloud based” approccio, in cui l'applicazione viene eseguita prevalentemente nel cloud con un alto grado di separazione dei servizi. Potrebbero essere ancora presenti alcuni collegamenti obbligatori tra i componenti o collegamenti all'infrastruttura legacy. L'architettura può essere chiamata “nativa del cloud” una volta che questi sono stati eliminati.

Riepilogo

Un sistema nativo cloud è un sistema che utilizza tutto ciò che il cloud può offrire per accelerare lo sviluppo, automatizzare le implementazioni e aumentare la resilienza e osservabilità. È il risultato di un investimento organizzativo in strumenti e procedure moderne, che consentono ai team di distribuire il codice più velocemente e apportare ulteriore valore all'azienda.

Diventare cloud native non avviene dall'oggi al domani. A seconda delle dimensioni del tuo sistema, potrebbe essere accettabile puntare a un “cloud abilitato” o “basato su cloud” avvicinarsi per primo. L'evoluzione graduale della tua architettura ti consente di raccogliere frutti a basso costo e di monitorare l'impatto dei singoli cambiamenti, per capire se i tuoi sforzi stanno dando i loro frutti.