Alan Zeichick | Senior Writer | 8 ottobre 2025
Il cloud native computing è un modo per progettare, creare, distribuire ed eseguire applicazioni che traggono tutti i vantaggi possibili dalle funzionalità di una piattaforma cloud. Sebbene il software tradizionale, a volte chiamato software monolitico, possa essere eseguito in un data center o in un cloud pubblico, non può sfruttare la scalabilità e l'efficienza dei costi dell'ambiente cloud.
È qui che entra in gioco il cloud native computing. Anziché essere creato come una singola applicazione installata su un server, il software cloud native viene compilato da decine, centinaia o addirittura migliaia di piccoli componenti di software. Questi componenti, chiamati microservizi, vengono collocati in container installati su server cloud. I microservizi comunicano quindi su reti sicure ad alta velocità, funzionando in modo integrato per risolvere i problemi aziendali.
Quali sono i vantaggi di questo approccio modulare? Ce ne sono molti, che esploreremo in questo documento. Ecco quattro dei vantaggi più significativi.
Ora passeremo ad approfondire i concetti e presenteremo la terminologia utilizzata per descrivere le specifiche del cloud native computing.
Il termine "cloud native" si riferisce alle attività di creazione, progettazione, creazione, distribuzione, esecuzione e gestione di applicazioni che traggono vantaggio dalla funzione di calcolo distribuito disponibile nel cloud. Le applicazioni cloud native sono progettate per sfruttare la scalabilità, l'elasticità, la resilienza e la flessibilità offerte dal cloud.
La Cloud Native Computing Foundation (CNCF), l'organizzazione indipendente che gestisce molti degli standard aperti che consentono il funzionamento del cloud nativo, definisce il concetto nel modo seguente.
Le tecnologie cloud native aiutano le organizzazioni a creare ed eseguire applicazioni scalabili in ambienti moderni e dinamici quali cloud pubblici, privati e ibridi. Questo approccio include i container, i mesh di servizio, i microservizi, l'infrastruttura immutabile e le API dichiarative.
Grazie a queste tecniche, è possibile ottenere sistemi resilienti, gestibili e osservabili ad accoppiamento disperso. In combinazione con una solida automazione, consentono agli ingegneri di apportare modifiche ad alto impatto in modo frequente e prevedibile con uno sforzo minimo.
Prendiamoci un momento per spiegare questa definizione.
Le applicazioni scalabili sono in grado di gestire un maggior numero di carichi di lavoro senza la necessità di riscrivere o riprogettare il software. Gli ambienti dinamici a cui fa riferimento la definizione sono piattaforme di cloud computing, come Oracle Cloud Infrastructure (OCI), ma anche altri cloud pubblici, privati e ibridi di tutti i principali fornitori di servizi.
Le tecnologie a cui fa riferimento la definizione sono i container che includono i singoli microservizi e l'infrastruttura mesh di servizio che collega tali container tramite reti ad alta velocità che supportano la sicurezza, l'osservabilità, l'applicazione dei criteri e la ricerca automatica dei servizi. In presenza di un'infrastruttura immutabile, i container non vengono mai modificati dopo la distribuzione; al contrario, vengono sostituiti in modo attento e scrupoloso. Ciò consente di rendere un'applicazione distribuita sia prevedibile che replicabile, in modo che tutte le copie di un container o di un microservizio siano esattamente le stesse.
Un concetto finale molto importante è "ad accoppiamento disperso". Ciò significa che, quando i microservizi funzionano in modo integrato con altri microservizi, sanno come comunicare mediante protocolli ben definiti, chiamati API dichiarative, che descrivono meticolosamente quali attività svolge il microservizio, quali dati richiede e quali dati restituisce dopo aver completato l'operazione. I meccanismi interni del microservizio sono nascosti e possono essere modificati in qualsiasi momento senza influire su altre parti dell'applicazione, rendendo l'intera applicazione resiliente, scalabile e più facile da aggiornare.
Le applicazioni cloud native possono essere eseguite in qualsiasi architettura cloud: pubblica, privata, ibrida o multicloud. Un cloud pubblico trasmette i dati tra l'applicazione cloud e l'utente finale o un data center aziendale via Internet. Un cloud privato trasmette i i dati interamente all'interno di reti sicure, come un servizio cloud configurato in un data center. Un cloud ibrido utilizza una combinazione di cloud pubblici, cloud privati e data center aziendali. Inoltre, una distribuzione multicloud coinvolge più fornitori di servizi cloud commerciali; una parte dell'applicazione potrebbe essere OCI e un'altra parte potrebbe essere in esecuzione su Microsoft Azure, ad esempio.
Concetti chiave
Le applicazioni cloud native sono progettate come microservizi indipendenti e raggruppate in container leggeri e autonomi. Questi container si contraddistinguono per l'elevata portabilità e possono essere sottoposti rapidamente a scale-up e scale-down in base alla domanda. Racchiudendo i microservizi nei container, il cloud nativo consente una distribuzione efficace in una vasta gamma di ambienti operativi, inclusi data center e servizi cloud commerciali, in esecuzione su diversi tipi di server, come Linux o Windows.
Nei modelli di cloud nativo più comuni, un'applicazione è progettata per ripartire le sue funzionalità in decine, centinaia o addirittura migliaia di microservizi, ciascuno sviluppato per svolgere un processo specifico. Una volta scritto, ogni microservizio viene installato in un'immagine del container, ovvero una soluzione di distrbuzione che può essere caricata su un servizio e successivamente eseguita. Lo standard più comune per i container è Docker, un formato open source della CNCF supportato da quasi tutti i fornitori di servizi cloud.
Un'applicazione enterprise completa può avere migliaia di container Docker. Come si fa a distribuire tutti questi container su un servizio cloud, collegarli con le risorse di sicurezza e le reti ad alta velocità appropriate, garantire che i messaggi di un microservizio vengano inoltrati ai destinatari corretti e gestire la scalabilità e gli occasionali errori del servizio? È qui che entra in gioco la piattaforma Kubernetes open source. Come Docker, Kubernetes è supportato dalla CNCF ed è diventato lo standard del settore. Senza scendere nei dettagli, basti solo dire che Kubernetes gestisce e automatizza tutti i complessi collegamenti necessari per eseguire, gestire e ridimensionare una grande applicazione cloud native.
L'inserimento dei microservizi in container Docker e la distribuzione di questi ultimi nei servizi cloud per mezzo di Kubernetes consentono di ottenere un'applicazione cloud native completa, scalabile e resiliente.
L'opposto di un'applicazione cloud native potrebbe essere un'applicazione tradizionale o monolitica progettata come un unico codebase, in genere da un singolo team di sviluppo. Il software è scritto e testato da tale team e successivamente consegnato a un team operativo per la distribuzione su un server. Se il software ha un difetto, il team di sviluppo individua il problema, esegue le opportune verifiche e fornisce una nuova versione al team operativo. A quel punto, il team operativo arresta il software originale, installa quello sostitutivo e procede al riavvio. Questo stesso processo viene applicato anche durante l'aggiunta di nuove funzioni, richiedendo la sostituzione e l'installazione dell'intera applicazione.
Al contrario, un'applicazione cloud native è scritta come una raccolta di molti microservizi, ciascuno dei quali funge da software separato. Questi componenti di software sono progettati, codificati, testati e distribuiti in modo indipendente, senza influire sul resto dell'applicazione, garantendo così un processo di revisione più veloce e aggiornamenti più fluidi. Gli sviluppatori possono scegliere gli strumenti migliori, inclusi i linguaggi di programmazione, per il microservizio specifico che stanno creando.
Per usare un'analogia, immagina che il rubinetto del bagno degli ospiti di casa tua inizi a perdere. Per risolvere il problema, ti viene detto che devi lasciare la tua Casa 4.1, sostituirla con una Casa 4.2 dove il rubinetto fosse perfettamente funzionante e andare a vivere lì. E se volessi sostituire un lavello a una vasca con uno a due vasche? Dovresti andare via e installare una Casa 4.3. Così è come funziona il modello software monolitico o tradizionale. Seguiresti questo approccio? Ovviamente no. Un idraulico sostituirebbe il rubinetto oppure un'impresa appaltatrice potrebbe rimodellare il bagno degli ospiti senza mettere mano su altre parti della casa. Così è come funziona il modello cloud native.
Lo sviluppo del cloud native computing ha anche introdotto una serie di nuovi concetti e termini importanti per comprendere i vantaggi del modello. Tra questi ci sono i seguenti:
Kubernetes è progettato per garantire una disponibilità elevata (HA) Le sue funzioni automatiche consentono di correggere eventuali malfunzionamenti, sfruttando i container come base del cloud nativo. Questi pacchetti leggeri e autonomi, spesso creati con Docker, includono tutte le dipendenze necessarie per un'esecuzione coerente delle applicazioni in diversi ambienti di elaborazione. La containerizzazione assicura la portabilità delle applicazioni e rende più rapida la distribuzione.
I container offrono un ambiente isolato e standardizzato, consentendo l'esecuzione delle applicazioni in modo indipendente e riducendo il rischio di conflitti tra dipendenze. Questo isolamento migliora la sicurezza limitando le potenziali vulnerabilità all'interno dei singoli container. Il design leggero dei container contribuisce anche a un utilizzo efficiente delle risorse.
I microservizi prevedono la suddivisione delle applicazioni complesse in servizi più piccoli e indipendenti. Ogni servizio si concentra su una funzione specifica, consentendo uno sviluppo più rapido mediante operazioni parallele su diversi servizi.
L'architettura di microservizi favorisce l'agilità e la flessibilità. Ogni microservizio può essere sviluppato, distribuito e ridimensionato in modo indipendente, consentendo aggiornamenti rapidi e nuove release di funzioni. Questa modularità migliora anche l'isolamento degli errori, in modo che i problemi di un servizio non influiscano sull'intera applicazione.
L'infrastruttura immutabile è un principio in base al quale le risorse distribuite non vengono mai modificate direttamente. Le modifiche vengono implementate creando nuove istanze con configurazioni aggiornate, offrendo coerenza e semplificando le procedure di rollback. Gli strumenti Infrastructure-as-code (IaC) automatizzano il provisioning dell'infrastruttura, migliorando l'efficienza e la ripetibilità.
IaC consente di definire l'infrastruttura sotto forma di codice per garantire un migliore controllo delle versioni, l'automatizzazione dei test e una distribuzione coerente tra gli ambienti. Questo approccio considera l'infrastruttura come un componente fondamentale dell'applicazione, soggetto agli stessi rigorosi criteri di gestione e controllo del codebase.
L'automazione è un aspetto fondamentale del cloud nativo che punta a supportare distribuzioni su larga scala che sarebbero difficili da gestire manualmente. Gli strumenti di orchestrazione dei container, come Kubernetes, automatizzano la gestione e la distribuzione delle applicazioni containerizzate. Questi strumenti garantiscono una disponibilità elevata, un'allocazione efficiente delle risorse e una scalabilità semplificata, rendendo più gestibili i sistemi distribuiti complessi.
L'automazione e l'orchestrazione sono essenziali per ottenere la scalabilità, la tolleranza degli errori e le funzioni di autoriparazione che definiscono i sistemi cloud native. I servizi cloud Kubernetes consentono l'allocazione dinamica delle risorse, in modo che le applicazioni possano ridimensionarsi in base alla domanda e facilitare il recupero automatico dagli errori.
Le applicazioni cloud native sono progettate tenendo conto dell'osservabilità, in modo che gli sviluppatori possano comprendere meglio il funzionamento interno dei sistemi. In particolare, la raccolta e l'analisi di metriche, log e trace consentono di ottenere insight sulle prestazioni, sull'uso delle risorse e sui potenziali problemi.
Gli strumenti di monitoraggio avanzati garantiscono una visibilità in tempo reale sullo stato e sulle prestazioni delle applicazioni. Questi strumenti consentono di affrontare i problemi in modo proattivo, aiutando gli sviluppatori a identificarli e risolverli prima che abbiano un impatto sugli utenti. I servizi di osservabilità e gestione sono fondamentali per ottimizzare le prestazioni delle applicazioni e l'allocazione delle risorse.
La resilienza è una caratteristica chiave dei sistemi cloud native, in grado di favorire il recupero dagli errori e il mantenimento della stabilità. Tutto ciò è possibile grazie a strategie come la replica, il bilanciamento del carico e i meccanismi di recupero automatico. Le cosiddette funzionalità di autoriparazione rilevano e correggono i problemi senza alcun intervento manuale, garantendo continuamente una disponibilità elevata.
Le applicazioni cloud native sono progettate per gestire agilmente gli errori, con tempi di inattività minimi. I meccanismi di autoriparazione rilevano e risolvono automaticamente i problemi, garantendo la regolare esecuzione delle applicazioni. Questa resilienza è fondamentale per le business operations critiche e offre un'esperienza utente affidabile.
L'approccio cloud native offre alle organizzazioni il potenziale per ottenere vantaggi significativi rispetto all'esecuzione di applicazioni monolitiche tradizionali. Questi vantaggi includono quanto segue:
Di seguito sono riportati alcuni esempi di caratteristiche e vantaggi principali del cloud native computing.
| Funzionalità | Vantaggi |
|---|---|
| Architettura dei microservizi | Quando un'applicazione enterprise viene scritta sotto forma di piccoli frammenti di codice, ciascuno destinato a una funzione aziendale specifica, chiamata microservizio, tale applicazione diventa più veloce da creare, più facile da gestire, più scalabile, più resiliente e molto più semplice da aggiornare e migliorare. |
| Container e containerizzazione | I microservizi sono spesso raggruppati in container facilmente distribuibili sui server cloud. Poiché un container viene creato e definito con cura, può essere eseguito su qualsiasi server compatibile su un servizio cloud. È anche possibile distribuire più copie di un container, se necessario per gestire un carico di lavoro elevato, e sostituire semplicemente un vecchio container con una versione aggiornata senza influire sul resto dell'applicazione. |
| Integrazione continua e distribuzione continua (CI/CD) | Il processo CI/CD consente ai team di sviluppo di utilizzare un approccio basato su pipeline per progettare, creare, testare e distribuire microservizi in container che vengono successivamente distribuiti su server cloud. Le attività CI/CD si traducono in cicli di rilascio più rapidi, migliorano la produttività degli sviluppatori e garantiscono flussi di lavoro automatizzati per distribuire il software in tempi più rapidi. |
| Infrastruttura immutabile | I componenti immutabili, come i container, non vengono mai modificati dopo la distribuzione. In caso di revisione, il container viene sostituito. I vantaggi sono la coerenza del software, la semplificazione dei rollout e la possibilità di replicare facilmente un'applicazione in un nuovo data center cloud o persino tramite un nuovo fornitore di servizi. |
| Pratiche DevOps | Per DevOps si intende la combinazione dei team di sviluppo e operativi tradizionali in un'unica unità. I team DevOps scrivono, testano e distribuiscono il software, quindi si occupano delle relative attività di gestione successive alla distribuzione. Integrando gli strumenti CI/CD e di automazione, possono implementare il nuovo software in tempi rapidi e risolvere all'istante eventuali problemi, senza addossarsi colpe a vicenda. |
| Osservabilità e monitoraggio | L'osservabilità aiuta i team DevOps a comprendere cosa sta succedendo in un'applicazione durante l'esecuzione. Il monitoraggio è la pratica che consente di esaminare i file di log e studiare le metriche delle prestazioni. Insieme, queste attività aiutano i team a individuare e risolvere i problemi in tempi più rapidi, a ottimizzare le prestazioni e a soddisfare i requisiti a livello di servizio per mantenere la promessa di applicazioni reattive e disponibili. |
| Piattaforme cloud | Le piattaforme cloud, come OCI, in genere forniscono tutte le funzioni necessarie per eseguire applicazioni cloud native, inclusi server in grado di ospitare container Docker, reti sicure ad alta velocità, motori Kubernetes preinstallati e strumenti per facilitare l'osservabilità e il monitoraggio. La scalabilità delle applicazioni cloud native consente di migliorare l'efficienza e ridurre i costi operativi del software cloud native. |
Il cloud native computing può sembrare complicato. Ciò è vero soprattutto per le organizzazioni che ancora non conoscono il cloud e che da anni o decenni sviluppano ambienti software monolitici tradizionali. Di seguito sono riportate alcune delle sfide che le organizzazioni devono affrontare quando adottano il cloud native computing per la prima volta.
Il percorso verso il cloud native computing è specifico per ogni organizzazione. La maggior parte, però, si affida a queste sette best practice.
Oracle offre tutte le funzioni necessarie per creare e distribuire applicazioni cloud native, tra cui strumenti, servizi e automazione, in modo che i team di sviluppo possano creare in tempi rapidi riducendo al contempo il numero di task operativi.
I servizi cloud native di Oracle vengono eseguiti su OCI, che offre una piattaforma basata su standard con prestazioni più elevate e costi inferiori rispetto ad altri fornitori di servizi cloud. Sfruttando i vantaggi di servizi basati su standard open source e aperti, OCI consente agli sviluppatori di eseguire applicazioni su qualsiasi ambiente on-premise o cloud senza la necessità di refactoring. Questa flessibilità permette di concentrarsi sulla creazione e sull'innovazione, ad esempio mediante una potente AI generativa e persino servizi AI/ML predefiniti, per integrare nuove funzionalità e intelligence nelle applicazioni esistenti.
Le applicazioni cloud native sono davvero di gran lunga superiori a quelle sviluppate tradizionalmente? Sì. I vantaggi sono chiari: le applicazioni cloud native sono scalabili perché le loro funzioni sono suddivise in microservizi che possono essere gestiti separatamente. Inoltre, le applicazioni cloud native possono essere eseguite in modo altamente distribuito, garantendo l'indipendenza e allocando le risorse in base alle esigenze dell'applicazione.
Le applicazioni cloud native possono contribuire a rafforzare la strategia e il valore di business, fornendo un'esperienza coerente su cloud privati, pubblici e ibridi. Consentono alla tua organizzazione di sfruttare appieno il cloud computing eseguendo applicazioni scalabili, reattive e affidabili.
Vuoi scavare a fondo nelle architetture cloud native? Scarica il nostro e-book gratuito per scoprire in che modo qualsiasi organizzazione può adottare immediatamente strategie di sviluppo cloud native.
In che modo l'architettura cloud native differisce dalle architetture delle applicazioni tradizionali?
L'architettura cloud native suddivide le applicazioni aziendali complesse e di grandi dimensioni in molti microservizi, ciascuno destinato a una funzione aziendale. L'applicazione funziona quando i microservizi comunicano tra loro tramite una rete ad alta velocità per collaborare a un task. Ogni microservizio è definito, progettato, creato, testato, distribuito, gestito e aggiornato separatamente, permettendo distribuzioni più rapide e una scalabilità molto più efficiente. Ad esempio, quando un microservizio rileva un carico di lavoro elevato, un'applicazione cloud native può creare automaticamente una copia di tale microservizio su un server diverso e dividere il carico di lavoro tra entrambi. Al contrario, un'architettura tradizionale delle applicazioni è costituita da un unico codebase di software monolitico, progettato, creato, testato e distribuito come un'unica unità. Le correzioni di bug o gli aggiornamenti comportano modifiche al monolito, che deve quindi essere ridistribuito. Per questo motivo, i rollout del software risultano spesso lenti. La scalabilità può costituire un problema e spesso richiede la riprogettazione (e la riscrittura) del software o l'installazione su un server più veloce e costoso.
In che modo le aziende possono trasferire efficacemente le applicazioni esistenti per diventare cloud native?
Le applicazioni monolitiche esistenti possono essere riprogettate in applicazioni cloud native. Il processo consiste nell'identificare le parti del codice che possono essere suddivise in microservizi, spesso a partire dalle sezioni di codice più facili da separare o che determinano punti critici relativi alle prestazioni. Gestendo queste sezioni una alla volta, un'applicazione monolitica può sfruttare molti dei vantaggi dell'approccio cloud native.
Che cos'è la CNCF?
La Cloud Native Computing Foundation (CNCF) è un'organizzazione open source indipendente dal fornitore ospitata dalla Linux Foundation. L'obiettivo della CNCF consiste nel promuovere le tecnologie cloud native e fornire un supporto essenziale per molti standard di progetto e settore, come il formato di container Docker e la piattaforma di automazione e orchestrazione dei container Kubernetes. Molti fornitori di servizi cloud, come Oracle, contribuiscono alle attività della CNCF e hanno adottato i suoi standard per promuovere l'interoperabilità tra gli ecosistemi cloud.
Qual è la differenza tra cloud e cloud nativo?
Il cloud fa riferimento ai servizi di computing ospitati da fornitori di servizi commerciali, come Oracle. Questi servizi di computing includono server di diversi tipi, reti ad alta velocità, sistemi di storage, librerie di funzioni di computing avanzate (come per AI e sicurezza) e persino applicazioni aziendali. Quasi ogni sito web o applicazione a cui si accede tramite un browser web si trova interamente o parzialmente nel cloud; tutto il resto risiede in data center aziendali. Anche molte app per dispositivo mobile si affidano al cloud per fornire funzionalità fondamentali.
Il cloud nativo è un approccio alla creazione di applicazioni aziendali che suddivide tale applicazione in decine o centinaia di microservizi. Ogni microservizio racchiude una funzionalità aziendale chiave. L'applicazione entra in funzione per risolvere i problemi aziendali quando tali microservizi collaborano tra loro su reti sicure ad alta velocità, eseguendo la rispettiva parte del carico di lavoro. Le applicazioni cloud native sfruttano le risorse di un fornitore di servizi cloud per rendere l'applicazione scalabile, efficiente e resiliente.