Che cos'è il cloud nativo?

Il cloud native è un approccio allo sviluppo di applicazioni che utilizza tecnologie come microservizi, container, orchestratori di container e infrastrutture immutabili per costruire, distribuire, eseguire e gestire applicazioni software reattive, scalabili e con tolleranza ai guasti in un ambiente cloud computing.

 

Spiegazione del cloud nativo

Nativo del cloud descrive il design e il funzionamento delle applicazioni software costruite per operare nel cloud. Il cloud native accelera la trasformazione digitale perché massimizza la flessibilità, la scalabilità e la resilienza dei servizi basati su cloud per fornire in modo efficiente applicazioni facili da gestire e mantenere.

Applicazioni monolitiche vs. applicazioni native del cloud: Un esempio

Immaginiamo che una banca debba creare una nuova applicazione. Prima del cloud computing, la banca assumeva degli sviluppatori per costruire l'applicazione, acquistava l'infrastruttura fisica necessaria per eseguire l'applicazione in locale e la manteneva per tutta la durata dell'applicazione. Per accedere all'app, gli utenti dovevano connettersi ai server della banca e, poiché questi server ospitavano ogni singolo servizio fornito dall'app (ricerca di numeri di conto, trasferimento di fondi, ecc.), l'aggiornamento e la manutenzione di ogni singolo servizio richiedeva la chiusura dell'intero sistema.

Quando gli sviluppatori hanno iniziato ad ospitare le app nell'ambiente cloud, hanno "sollevato e spostato" le loro applicazioni dagli ambienti locali, preservando l'architettura generale delle loro app e le loro limitazioni. Invece di acquistare e gestire i server per ospitare le loro applicazioni, hanno affittato risorse di calcolo da un provider di servizi cloud (CSP). Ma i nuovi servizi, come la piattaforma come servizio, i container come servizio e l'infrastruttura serverless, hanno aperto nuove opportunità per costruire, distribuire e gestire le applicazioni a un ritmo serrato - relativamente parlando.

 

Storia del cloud nativo

La pratica di creare applicazioni in locale ha iniziato a cambiare nei primi anni 2000 con l'avvento della virtualizzazione e l'emergere di fornitori di infrastrutture come servizio (IaaS) , come Amazon Web Services (AWS), che hanno permesso agli sviluppatori di provisioning e gestione di macchine virtuali nel cloud. Questo ha aperto la strada allo sviluppo di offerte platform as a service (PaaS) , come Google App Engine e Heroku, che hanno fornito un livello di astrazione superiore per costruire e distribuire applicazioni basate sul cloud.

Ma le prime piattaforme mancavano di flessibilità e gli sviluppatori erano bloccati, dovendo utilizzare API e strumenti proprietari. In risposta, è emerso un nuovo approccio incentrato sulla costruzione di applicazioni progettate per il cloud e sull'utilizzo di tecnologie open-source.

Un primo esempio di questo approccio è stata la metodologia Twelve-Factor App, che consiste in una serie di principi per la costruzione di applicazioni cloud-native progettate per la portabilità, la scalabilità e la resilienza. Questi principi includono l'utilizzo di formati dichiarativi per la configurazione, l'affidamento a processi stateless e il trattamento dei servizi di supporto come risorse collegate.

Nello stesso periodo, la tecnologia di containerizzazione Docker è emersa come elemento chiave per le applicazioni cloud-native. Docker ha permesso agli sviluppatori di pacchettizzare le loro applicazioni e dipendenze in contenitori leggeri che potevano essere facilmente distribuiti in diversi ambienti cloud, risolvendo il problema della portabilità delle applicazioni.

Nel 2014, Google ha rilasciato Kubernetes, una piattaforma di orchestrazione di container open-source. Kubernetes - che offre un potente insieme di strumenti per automatizzare la distribuzione, la scalabilità e la gestione delle applicazioni containerizzate - è diventato lo standard per la gestione delle applicazioni containerizzate nel cloud.

Negli anni successivi, l'approccio cloud-nativo per la creazione di applicazioni è stato abbracciato da organizzazioni di tutti i settori, dalle startup alle grandi imprese, e ha portato allo sviluppo di un ecosistema di tecnologie, strumenti e piattaforme open-source.

Video: Il cloud nativo si sta muovendo rapidamente e sta aumentando la sua complessità. Scopra le tendenze relative agli ecosistemi tech, DevOps e cloud-native.

 

Cosa sono le applicazioni Native del cloud?

A livello di base, le applicazioni cloud-native sono programmi software in cui la funzionalità è suddivisa in microservizi, ovvero piccoli servizi liberamente accoppiati che operano indipendentemente l'uno dall'altro. Grazie a questa struttura modulare, le applicazioni cloud-native sono più facili da costruire e modificare rispetto alle applicazioni monolitiche tradizionali. Gli sviluppatori possono distribuire nuove funzionalità e aggiornamenti a un'applicazione senza interrompere il sistema.

In confronto, le applicazioni monolitiche sono costruite come un'unica base di codice, con tutti i componenti strettamente accoppiati ed eseguiti su un unico server o macchina. Ciò significa che le modifiche o gli aggiornamenti dell'applicazione richiedono la ricompilazione e la distribuzione dell'intera applicazione.

Altre tecnologie e metodologie caratteristiche delle applicazioni cloud-native includono:

  • Infrastruttura basata su container, in genere container Linux con orchestrazione basata su Kubernetes
  • Architettura costruita intorno a microservizi ad accoppiamento lasco
  • Sviluppo agile in stile DevOps
  • Utilizzo di integrazione continua e consegna continua (CI/CD)
  • Utilizzo di codice e librerie open-source
  • Funzioni serverless e PaaS

 

Che cos'è l'architettura Nativo del cloud?

L'architettura cloud-native è una metodologia di progettazione che supporta tecniche di sviluppo di applicazioni veloci e agili per costruire applicazioni cloud-native come insiemi di pezzi più piccoli e componibili, facili da mantenere, modificare, scalare e migrare. Seguono i componenti dell'architettura cloud-nativa.

L'architettura a microservizi è alla base dei vantaggi associati alle moderne applicazioni basate su container.
Figura 1: L'architettura a microservizi è alla base dei vantaggi associati alle moderne applicazioni basate su container.

Infrastruttura immutabile

L'infrastruttura immutabile è un paradigma in cui i server e le macchine virtuali (VM) vengono sostituiti piuttosto che cambiati quando è necessario aggiornare, riparare o modificare qualcosa. Se è necessario apportare un cambiamento, i nuovi componenti che incorporano tali modifiche vengono costruiti da un'immagine comune e quelli vecchi vengono tolti dalla produzione. Questo approccio crea un processo prevedibile per la distribuzione cloud-native.

Architettura a microservizi

L'ascesa del cloud native è stata guidata dall'architettura a microservizi, un modello di progettazione software che enfatizza l'uso di servizi distribuiti in modo indipendente, ciascuno con una funzione aziendale specifica, che lavorano insieme nell'applicazione cloud-native. I microservizi consentono agli sviluppatori di costruire applicazioni complesse componendo componenti più piccoli e più gestibili, che possono essere scalati e aggiornati in modo indipendente.

API

Le API sono uno strumento di comunicazione utilizzato nelle applicazioni native del cloud. Facilitano un trasferimento standard ed efficace di informazioni tra microservizi indipendenti, consentendo loro di condividere le informazioni in modo che possano funzionare come un insieme coeso.

Rete di servizio

Una rete di servizi è un livello dell'architettura cloud-nativa che gestisce la comunicazione tra i microservizi. Le maglie dei servizi consentono anche di aggiungere la gestione del traffico, la sicurezza e altre funzioni ai servizi senza dover aggiungere nuovo codice.

Contenitori

I contenitori consentono ai microservizi di essere pacchettizzati in ambienti autonomi con le loro dipendenze - codice, file di risorse, strumenti di sistema e librerie di sistema - in modo che funzionino in modo coerente in qualsiasi circostanza. Questo permette agli sviluppatori di riprodurre o analizzare e isolare facilmente un servizio. Poiché contengono tutto ciò di cui un'applicazione ha bisogno per funzionare, i container consentono alle applicazioni cloud-native di essere distribuite ovunque, sia in locale che nel cloud.

Con ogni microservizio distribuito in un contenitore, i gruppi di contenitori lavorano insieme come un sistema, o "stack", per formare l'app nativa completa. Un sistema di orchestrazione dinamica monitora automaticamente ogni container, avviandoli e spegnendoli in base alle esigenze dell'utente, con conseguente maggiore scalabilità ed efficienza.

 

Che cos'è lo sviluppo di applicazioni cloud-native?

Lo sviluppo di applicazioni cloud-native è il processo di costruzione di applicazioni stabili e scalabili da utilizzare in un cloud privato, pubblico o ibrido. Le pratiche comuni di sviluppo Nativo del cloud includono:

Integrazione continua

L'integrazione continua (CI) è una pratica che prevede la costruzione, il test e l'integrazione automatica delle modifiche al codice in un repository di codice centrale. Questo aiuta a garantire che le modifiche al codice siano accuratamente testate e integrate con il resto della base di codice dell'applicazione. Nello sviluppo nativo del cloud, il CI è spesso utilizzato insieme alla containerizzazione, che consente agli sviluppatori di pacchettizzare il codice, le dipendenze e la configurazione in un'unica unità autonoma.

Consegna continua

La consegna continua (CD) è il processo di consegna delle applicazioni create nel processo CI ad un ambiente simile a quello di produzione, dove vengono sottoposte a test automatici supplementari per eliminare problemi di prestazioni inattesi. Consentendo un maggior numero di aggiornamenti incrementali alle applicazioni in produzione, la CD aiuta a ridurre i costi, i tempi e i rischi della consegna delle modifiche e permette agli sviluppatori di costruire, testare e rilasciare software di alta qualità con maggiore velocità e frequenza. Nello sviluppo Nativo del cloud, la CD viene spesso utilizzata insieme alle pratiche di automazione e DevOps, che aiutano a snellire il processo di sviluppo e distribuzione del software.

DevOps

DevOps è un approccio che combina lo sviluppo del software e le operazioni IT per aumentare l'efficienza, la velocità, la qualità e la sicurezza dello sviluppo e della consegna del software.

Nello sviluppo cloud-nativo, DevOps è spesso utilizzato per automatizzare molti aspetti del processo di sviluppo e distribuzione del software. Il focus su un approccio rapido e iterativo si allinea al modello cloud-nativo e aiuta le organizzazioni a fornire applicazioni e servizi a velocità. Ciò consente alle aziende di fornire un servizio migliore ai loro clienti e di competere in modo più efficace nel loro settore.

Senza server

Il cloud computing senza server, utilizzato insieme ai microservizi, è un modello di sviluppo cloud-nativo che consente agli sviluppatori di scrivere e distribuire codice senza dover gestire l'infrastruttura cloud sottostante. Poiché le risorse vengono assegnate dinamicamente in base alla domanda, l'informatica senza server può ridurre i costi e migliorare la scalabilità.

 

Vantaggi dello sviluppo di applicazioni nativo del cloud

Le pratiche Native del cloud offrono le migliori opportunità per guidare la trasformazione digitale e la crescita aziendale. Lo sviluppo di applicazioni native è efficiente dal punto di vista dei costi e consente di aggiornare e mantenere facilmente le applicazioni attraverso l'integrazione continua/consegna continua (CI/CD). Inoltre, aiuta le organizzazioni ad abbattere i silos tra sviluppo, operazioni e sicurezza, per offrire un'esperienza coerente in tutto il ciclo di vita dello sviluppo dell'applicazione.

Altri vantaggi dello sviluppo di applicazioni cloud-native includono:

Aumento della velocità

Le applicazioni native del cloud sono sviluppate con un processo di sviluppo agile, con i singoli servizi sviluppati e distribuiti in modo indipendente, il che consente un'iterazione e una distribuzione più rapida di nuove funzionalità o aggiornamenti.

Qualità e affidabilità migliorate

Con lo sviluppo di applicazioni cloud-native, gli sviluppatori possono concentrarsi sulla creazione di valore nell'applicazione, perché il provider cloud gestisce l'infrastruttura sottostante. Questo migliora anche la coerenza e l'affidabilità dell'ambiente operativo.

Operazioni efficienti dal punto di vista dei costi

Le applicazioni cloud-native sono progettate per essere scalabili orizzontalmente, dove le risorse possono essere aggiunte o rimosse dinamicamente in base alla domanda. Al contrario, le applicazioni monolitiche sono tipicamente scalate verticalmente, il che significa che vengono aggiunte ulteriori risorse al server o alla macchina per gestire l'aumento della domanda. Questo approccio può essere costoso e inefficiente, in quanto spesso richiede un provisioning eccessivo di risorse per gestire i picchi di domanda.

Migliore adattabilità e scalabilità

Lo sviluppo di applicazioni cloud-native facilita la capacità di stare al passo con le mutevoli esigenze dei clienti e dell'azienda, perché offre applicazioni composte da microservizi liberamente accoppiati, facili da aggiornare, modificare e scalare in tempo reale.

Aumento della resilienza

Lo sviluppo di applicazioni cloud-native migliora la resilienza perché utilizza microservizi che possono essere isolati. Se un componente di un'applicazione monolitica si guasta, può causare il blocco dell'intero sistema. Ma le applicazioni fault-tolerant, cloud-native, sono progettate per continuare a funzionare anche se i singoli servizi si guastano.

Rischio ridotto di blocco del fornitore

Poiché lo sviluppo di applicazioni native del cloud utilizza i container per trasferire i microservizi tra le infrastrutture di diversi fornitori, le organizzazioni non sono legate a un particolare fornitore. Possono utilizzare i servizi di più fornitori di cloud e selezionare le opzioni più adatte alla loro attività.

Risoluzione dei problemi semplificata

Lo sviluppo di applicazioni cloud-native semplifica la risoluzione dei problemi, perché la sua architettura a microservizi rende facile rintracciare i problemi fino al servizio di origine e risolvere il problema senza tempi di inattività del server.

Superficie di attacco ridotta.

Le applicazioni native del cloud sono progettate per la sicurezza, con i singoli servizi tipicamente isolati l'uno dall'altro. Questo riduce la superficie di attacco delle applicazioni monolitiche tradizionali, costruite con componenti strettamente accoppiati che rendono più facile per gli aggressori l'accesso ai dati sensibili.

 

Che cos'è uno stack Nativo del cloud?

Lo stack Nativo del cloud si riferisce ai livelli di strumenti e tecnologie che gli sviluppatori utilizzano per costruire, gestire ed eseguire applicazioni cloud-native. I livelli dello stack Nativo del cloud includono:

Livello dell'infrastruttura

Il livello dell'infrastruttura costituisce la base dello stack Nativo del cloud. È costituito dai componenti di supporto dello sviluppo di applicazioni cloud-native, tra cui i sistemi operativi, lo storage, la rete e altre risorse di computing. Il livello dell'infrastruttura è gestito da fornitori di cloud di terze parti.

Livello di provisioning

Il livello di provisioning nello stack cloud-native è costituito dagli strumenti utilizzati per creare e proteggere l'infrastruttura. Questo include strumenti per la scansione e l'archiviazione delle immagini container e per l'impostazione e l'applicazione dei criteri.

Livello di runtime

Il livello di runtime comprende tutto ciò di cui un container ha bisogno per funzionare in un ambiente cloud-nativo. Questo include il codice utilizzato per avviare un container e gli strumenti che rendono disponibile l'archiviazione persistente ai container.

Livello di orchestrazione e gestione

Il livello di orchestrazione e gestione è simile a un sistema operativo, responsabile di mettere insieme i componenti del cloud in modo che possano lavorare insieme come un'unica unità coesa. Strumenti di orchestrazione come Kubernetes, Docker e OpenShift consentono agli sviluppatori di distribuire, gestire e scalare applicazioni containerizzate.

Livello di definizione e sviluppo dell'applicazione

Il livello di definizione e sviluppo dell'applicazione è costituito da tutte le tecnologie che gli sviluppatori utilizzano per costruire le applicazioni, tra cui database, sistemi di messaggistica, immagini container e pipe CI/CD.

Osservabilità e strumenti di analisi

Gli strumenti di osservabilità e di analisi osservano tutti i livelli dello stack cloud-nativo per monitorare e valutare lo stato di salute delle applicazioni cloud, per assicurarsi che non ci siano interruzioni nella qualità del servizio dell'app. Sono suddivisi nelle categorie di registrazione, monitoraggio e tracciamento e vengono utilizzati per monitorare metriche come l'utilizzo della CPU, la latenza e la memoria.

 

Sfide della sicurezza cloud-nativa del cloud

Poiché gli ambienti cloud e cloud-native hanno architetture diverse che si basano su tecnologie diverse, la sicurezza cloud e la sicurezza cloud-native differiscono. La sicurezza del cloud richiede un approccio ampio e olistico alla sicurezza, poiché copre una serie di beni e applicazioni. La sicurezza cloud-nativa, invece, richiede un approccio specializzato che tenga conto dei problemi di sicurezza unici delle applicazioni e delle infrastrutture cloud-native.

Le sfide comuni della sicurezza Nativo del cloud includono:

Mancanza di visibilità: La complessità dell'ambiente cloud rende difficile ottenere una visibilità completa, creando punti ciechi in cui i rischi per la sicurezza possono incancrenirsi.

Minacce diverse: Gli attori di minacce nel cloud trovano percorsi d'attacco creativi e soluzioni per la sicurezza con la stessa velocità con cui vengono create.

Incapacità di applicare politiche coerenti: L'infrastruttura nativa del cloud di un'organizzazione comporta in genere più fornitori di servizi cloud e strumenti di sicurezza diversi, rendendo difficile la centralizzazione delle politiche di sicurezza e la loro applicazione coerente.

Configurazioni errate: La storica mancanza di sicurezza integrata nel processo di sviluppo delle applicazioni lascia spazio a configurazioni errate e a vulnerabilità del codice open-source che possono causare l'esposizione dei dati e l'accesso non autorizzato al carico di lavoro .

Processi di sicurezza lenti: Il mantenimento della conformità e della sicurezza richieste dalle pipeline CI/CD ad alta velocità rallenta la flessibilità, l'agilità e la velocità intrinseche del cloud computing.

Default insicuri: Molti strumenti cloud-native forniti dai CSP offrono impostazioni flessibili, comprese impostazioni predefinite insicure che possono portare a violazioni della sicurezza.

Vulnerabilità della catena di fornitura del software: Le vulnerabilità senza patch nel software open-source aumentano la fragilità della catena di fornitura del software.

Con gli strumenti giusti, i team addetti alla sicurezza possono affrontare le sfide della sicurezza cloud-native. Una piattaforma di protezione delle applicazioni cloud-native (CNAPP) fornirà una visibilità continua in un'unica dashboard, nonché un'applicazione coerente delle politiche di sicurezza nell'intero ambiente cloud.

 

Domande frequenti su Nativo del cloud

La sicurezza del cloud si riferisce alla protezione delle risorse e dei dati basati sul cloud, indipendentemente dal luogo in cui sono stati originariamente creati o distribuiti. La sicurezza cloud-nativa si concentra sulla sicurezza delle applicazioni e delle infrastrutture costruite specificamente per l'ambiente cloud.
La Cloud Nativo Computing Foundation (CNCF) è l'hub open source e neutrale rispetto ai fornitori del cloud computing. Con la missione di rendere il cloud computing universale e sostenibile, il CNCF sostiene l'adozione del cloud-native e aiuta la comunità open-source a sviluppare le tecnologie cloud-native emergenti.
Sia il cloud native che il lift and shift sono metodi per creare un servizio o un'applicazione nel cloud. Nel caso del cloud native, il codice della nuova app viene sviluppato insieme alla pipeline CI/CD e all'infrastruttura immutabile come codice necessaria per supportarla. Il Lift and Shift è un processo relativamente veloce, mentre il cloud native richiede uno sviluppo più anticipato. Alla fine, il costo complessivo dell'approccio cloud-native è inferiore al costo del lift and shift.
Un'applicazione abilitata al cloud è un'applicazione legacy che funzionava in un data center locale ed è stata modificata per essere eseguita nel cloud. Poiché le applicazioni cloud-enabled sono costruite con tecnologie monolitiche, non hanno la flessibilità e la scalabilità delle applicazioni cloud-native.