Vai a

Che significa cloud-native?

Diventare "cloud-native" è spesso menzionato come l'obiettivo finale della migrazione o della creazione di applicazioni. Tuttavia, a seconda di chi chiedi, è probabile che tu riceva molte definizioni diverse di cosa significa esattamente. Nel complesso, la maggior parte si basa su questo concetto: cloud-native è un approccio alla creazione e all'esecuzione di applicazioni scalabili per sfruttare appieno i servizi e i modelli di distribuzione basati su cloud.

Definizione di cloud-native

Cloud-native significa adattarsi alle numerose nuove possibilità, ma a un insieme molto diverso di vincoli architetturali, offerti dal cloud rispetto alla tradizionale infrastruttura on-premise. 

A differenza delle applicazioni monolitiche, che devono essere create, testate e se ne deve eseguire il deployment come una singola unità, le architetture cloud-native dividono i componenti in servizi a basso accoppiamento per aiutare a gestire la complessità e migliorare velocità, agilità e scalabilità della distribuzione del software.  

Ti stai chiedendo come si rapportano le prestazioni di distribuzione del software della tua organizzazione rispetto ad altre nel settore? Per scoprirlo, esegui il controllo rapido DevOps di DORA

Che cos'è un'applicazione cloud-native?

Un'applicazione cloud-native è progettata specificamente da zero per sfruttare l'elasticità e la natura distribuita del cloud. Per comprendere meglio cos'è un'applicazione cloud-native, è meglio iniziare con cosa non è: un'applicazione monolitica tradizionale. 

Le applicazioni monolitiche funzionano come una singola unità, spesso con sistemi operativi, middleware e stack del linguaggio personalizzati per ogni applicazione. Inoltre, la maggior parte degli script e dei processi è creata appositamente per la build, il test e il deployment. Nel complesso, questa architettura di applicazioni crea dipendenze strette, rendendo più difficile la modifica, il test, il deployment e il funzionamento dei sistemi man mano che crescono nel tempo. Quello per cui all'inizio è facile fare la progettazione ed eseguire il deployment diventa presto complesso, difficile da sviluppare e impegnativo da gestire. 

Invece, le applicazioni cloud-native sfruttano al meglio la natura dinamica e distribuita dell'infrastruttura moderna per ottenere velocità, agilità, scalabilità, affidabilità ed efficienza economica maggiori. 

Le applicazioni cloud-native sono in genere suddivise in più servizi autonomi tramite l'uso di tecnologie e metodologie, ovvero DevOps, distribuzione e integrazione continua, container, microservizi e API dichiarative. Questo consente ai team di eseguire il deployment e scalare i componenti in modo indipendente, per poter apportare aggiornamenti, risolvere problemi e offrire nuove funzionalità senza interruzioni del servizio.

Pilastri dell'approccio cloud-native

Esistono diversi modi per creare un'architettura cloud-native, ma l'obiettivo è sempre quello di aumentare la velocità di distribuzione del software, migliorare l'affidabilità dei servizi e creare una proprietà condivisa tra le parti interessate nel software.

Tuttavia, i fondamenti delle architetture cloud-native si basano su cinque pilastri: 

Microservizi: quasi tutte le architetture cloud si basano 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. 

Container e orchestrazione: 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 il deployment in modo indipendente. Questa portabilità e flessibilità rendono i container ideali per la creazione di architetture di microservizi.   

L'orchestrazione dei container è inoltre fondamentale, dato che il numero di microservizi aumenta per contribuire a gestire i container in modo che possano essere eseguiti senza problemi come un applicazione. Una piattaforma di orchestrazione dei container come Kubernetes consente di controllare dove e come vengono eseguiti i container, correggere eventuali errori e bilanciare il carico tra i container.

DevOps: 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. 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): 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. 

Servizi cloud-native

I servizi e le tecnologie cloud-native ti aiutano a creare ed eseguire applicazioni scalabili e a eseguirne il deployment in qualsiasi ambiente. Sebbene i clienti e gli utenti aziendali usufruiscano di un'applicazione standard, i servizi cloud-native operano in background per garantire un funzionamento ottimale. 

Ad esempio, i servizi cloud-native potrebbero descrivere le offerte "as a Service" dei provider di servizi cloud (ad esempio: IaaS, PaaS e modelli di servizio SaaS), i microservizi di un'applicazione e le API che collegano e abilitano la comunicazione tra i servizi. 

Qual è la differenza tra cloud e cloud-native?

Esiste effettivamente una differenza tra cloud e cloud-native. Cloud si riferisce al cloud computing, dove aziende o privati pagano per accedere alle risorse di computing come servizio on demand. 

Sebbene venga spesso utilizzata come descrizione generica per gli strumenti e le tecniche utilizzati per sviluppare software nel cloud, il termine "cloud-native" non si riferisce esclusivamente all'adozione del cloud. Si riferisce invece alla modalità di creazione e distribuzione delle applicazioni e non solo alla modalità di deployment. In alcuni casi, un'applicazione potrebbe non essere eseguita nel cloud. È possibile creare applicazioni con principi cloud-native ed eseguirle on-premise o in ambienti ibridi. 

Vantaggi dell'approccio cloud-native

Innovazione più rapida

I servizi più piccoli e a basso accoppiamento consentono ai team di lavorare e sviluppare in modo autonomo. Gli approcci cloud-native aumentano la velocità e la produttività degli sviluppatori, facilitando l'innovazione. 

Release affidabili

Le architetture cloud-native consentono agli sviluppatori di creare, testare ed eseguire il deployment di servizi nuovi ed esistenti. Questo consente di portare sul mercato prodotti e servizi più rapidamente e ridurre i rischi legati al deployment. 

Scalabilità

Le architetture cloud-native utilizzano l'automazione dell'infrastruttura, contribuendo a eliminare i tempi di inattività dovuti a errore umano. Puoi bilanciare il carico in base alla domanda, per ottimizzare meglio costi e prestazioni. 

Riduzione dei costi

Un processo di distribuzione del software semplificato riduce i costi associati alla distribuzione di nuovi aggiornamenti e funzionalità. Le applicazioni cloud-native consentono inoltre la condivisione di risorse e il consumo on demand, riducendo notevolmente i costi operativi. 

Maggiore disponibilità

Le architetture cloud-native offrono alti livelli di disponibilità e affidabilità in quanto riducono la complessità operativa, semplificano le modifiche alla configurazione e offrono scalabilità e riparazione automatica. 

Portabilità

Le app cloud-native sono progettate per essere eseguite quasi ovunque, consentendo di spostarle facilmente da un ambiente all'altro senza apportare modifiche all'intera applicazione. 

Maggiore sicurezza

Le applicazioni cloud-native ti aiutano a ridurre la superficie di attacco e semplificano il rilevamento e la risposta ad attacchi o a nuove vulnerabilità. Inoltre, è molto più facile applicare patch e aggiornamenti alle applicazioni seguendo il deployment e la gestione standardizzati. 

Conformità migliorata 

È molto più semplice ed economico implementare e dimostrare la conformità delle applicazioni cloud-native dato che la maggior parte dei controlli di sicurezza dei dati viene implementata a livello di piattaforma. I cloud provider mantengono inoltre la conformità con i framework di gestione dei rischi, aiutandoti a soddisfare gli standard di conformità con controlli residui. 

Sfide dell'approccio cloud-native

Nonostante i numerosi vantaggi dell'approccio cloud-native, questo modello prevede alcuni compromessi da tenere presente. Il computing cloud-native non è sempre facile da implementare perché, oltre ad adottare nuovi strumenti e tecnologie, richiede anche cambiamenti culturali per garantirne l'utilizzo.

Ecco alcune delle più comuni sfide dell'approccio cloud-native: 

  • Gestione di sistemi distribuiti e di molte parti mobili potenzialmente impegnativa se non si dispone di strumenti o processi per gestire sviluppo, test e deployment
  • Aumento dei costi operativi e tecnologici senza l'ottimizzazione dei costi e la supervisione appropriate per controllare l'uso delle risorse negli ambienti cloud 
  • Mancanza delle competenze tecnologiche esistenti con cui lavorare e integrare uno stack tecnologico più complesso
  • Resistenza ai cambiamenti culturali necessari per implementare tecnologie cloud-native e best practice DevOps
  • Difficoltà a comunicare concetti cloud-native per ottenere assistenza e dare il contributo da dirigenti non tecnici

Tuttavia, nessuna delle soluzioni sopra elencate è ingestibile con la strategia e l'esperienza giuste. Ad esempio, l'adozione di un semplice approccio di tipo "lift and shift" alla migrazione verso il cloud è un buon punto di partenza, ma non offre molti dei vantaggi dell'approccio cloud-native elencati sopra. Molte organizzazioni finiscono in questa fase perché non hanno previsto le spese e la complessità della riprogettazione di un'architettura cloud-native. 

Consigliamo di non pensare all'approccio cloud-native come a uno sconvolgente progetto pluriennale. Deve essere visto invece come un percorso continuo di costante iterazione per apprendere e migliorare man mano che si procede.

Risolvi le tue sfide aziendali con Google Cloud

I nuovi clienti ricevono 300 $ di crediti gratuiti da spendere su Google Cloud.
Inizia
Parla con un esperto del team di vendita di Google Cloud per discutere della tua sfida unica in modo più dettagliato.
Contattaci