"Nativo del cloud" fa meno riferimento all'ubicazione in cui risiede un'applicazione e più al modo in cui viene creata e implementata.
Nel video "What is Cloud Native?", Andrea Crawford fornisce una panoramica di questi e altri concetti chiave:
I microservizi (indicati anche come architettura di microservizi) rappresentano un approccio architetturale in cui una singola applicazione è formata da molti servizi o componenti più piccoli, accoppiati debolmente e implementabili in modo indipendente. Questi servizi (chiamati anche microservizi) in genere hanno il proprio stack di tecnologia, che include database e modello di dati e comunicano reciprocamente attraverso una combinazione di API REST, flusso di eventi e broker di messaggi.
Poiché i microservizi possono essere implementati e reimplementati in modo indipendente, senza alcun impatto reciproco o interruzione dell'esperienza dell'utente finale, essi rappresentano un abbinamento perfetto con metodologie di distribuzione iterative e automatizzate, quali ad esempio integrazione continua/distribuzione continua (CI/CD) o DevOps.
Oltre ad essere utilizzati per creare applicazioni native del cloud completamente nuove, i microservizi possono essere utilizzati per modernizzare applicazioni monolitiche tradizionali.
In un recente sondaggio IBM rivolto a dirigenti IT, dirigenti del reparto sviluppo e sviluppatori, l'87% degli utenti di microservizi concorda sul fatto che l'adozione dei microservizi valga la spesa e l'impegno richiesti.
Gli sviluppatori spesso implementano i microservizi all'interno di container - componenti dell'applicazione leggeri ed eseguibili che combinano il codice sorgente dell'applicazione (in questo caso il codice dei microservizi) con tutte le librerie e dipendenze del sistema operativo (SO) necessarie per l'esecuzione del codice in qualsiasi ambiente. Più piccoli, più efficienti in termini di risorse e più portabili rispetto alle VM (Virtual Machine), i container sono le unità di calcolo de facto delle moderne applicazioni native del cloud.
I container amplificano i vantaggi dei microservizi consentendo un'esperienza di implementazione e gestione coerente in un ambiente di cloud ibrido - cloud pubblici, cloud privato e infrastruttura on-premise. Col moltiplicarsi però delle applicazioni native del cloud, anche i container e la complessità della loro gestione si moltiplicano. La maggior parte delle organizzazioni che utilizza i microservizi containerizzati utilizza anche una piattaforma di orchestrazione dei container, come ad esempio Kubernetes, per automatizzare l'implementazione e la gestione dei container su vasta scala.
I clienti IBM sono sempre più spesso incaricati del miglioramento delle applicazioni esistenti, della creazione di nuove applicazioni e dell'ottimizzazione dell'esperienza dell'utente. Le applicazioni native del cloud soddisfano queste esigenze migliorando le prestazioni, la flessibilità e l'estendibilità delle applicazioni.
Vantaggi
Svantaggi
Le applicazioni native del cloud spesso hanno funzioni piuttosto specifiche. Considera in che modo le applicazioni native del cloud potrebbero essere utilizzate su un sito web di viaggi. Ogni argomento trattato dal sito - voli, alberghi, auto, offerte speciali - è un microservizio a sé stante. Ogni microservizio può implementare nuove funzioni in modo indipendente dagli altri microservizi. Le offerte speciali e gli sconti possono eseguire anche la scalabilità orizzontale in modo indipendente. Sebbene il sito di viaggi venga presentato ai clienti come un tutt'uno, ogni microservizio resta indipendente e può essere scalato oppure aggiornato come necessario senza alcuna ripercussione sugli altri servizi. Di seguito sono riportati alcuni esempi di altre applicazioni native del cloud.
IBM Cloud Garage fornisce ai clienti IBM competenze di consulenza per creare rapidamente applicazioni native del cloud scalabili e innovative. Offre un hub di innovazione in cui le aziende di tutte le dimensioni possono progettare e creare applicazioni che risolvono esigenze di business del mondo reale.
Che stiano creando una nuova applicazione nativa del cloud oppure modernizzando un'applicazione esistente, gli sviluppatori rispettano una serie coerente di principi:
Le applicazioni native del cloud fanno spesso affidamento sui container. I container attirano l'interesse perché sono flessibili, leggeri e portabili. All'inizio, l'uso dei container tendeva a concentrarsi sulle applicazioni stateless, che non avevano bisogno di salvare i dati dell'utente da una sessione utente alla successiva.
Tuttavia, lo spostamento sul cloud di un numero crescente di funzioni di business di base ha reso necessario occuparsi del problema dello storage persistente in un ambiente nativo del cloud. Questo richiede agli sviluppatori di prendere in considerazione nuovi modi per avvicinarsi allo storage su cloud.
Proprio come lo sviluppo di applicazioni nativo del cloud adotta un approccio basato su microservizi e modulare, lo stesso deve fare lo storage nativo del cloud. I dati nativi del cloud possono risiedere ovunque, ad esempio in log di eventi o di sistema, database relazionali e archivi di documenti o oggetti.
L'ubicazione dei dati, le esigenze di conservazione, la portabilità, la compatibilità della piattaforma e la sicurezza sono solo alcuni degli aspetti che gli sviluppatori devono prendere in considerazione quando pianificano lo storage nativo del cloud.
Un'applicazione abilitata per il cloud è un'applicazione che è stata sviluppata per l'implementazione in un data center tradizionale ma che è stata successivamente modificata in modo da poter essere eseguita anche in un ambiente cloud. Le applicazioni native del cloud, però, sono realizzate per essere utilizzate solo nel cloud. Gli sviluppatori progettano le applicazioni native del cloud perché siano scalabili, indipendenti dalla piattaforma e composte di microservizi.
Nella breve storia del cloud computing, il significato di "pronto per il cloud" è cambiato diverse volte. Inizialmente, il termine veniva usato per i servizi o il software progettati per funzionare su internet. Oggi il termine viene utilizzato con maggiore frequenza per descrivere un'applicazione che funziona in un ambiente cloud oppure per un'applicazione tradizionale che è stata riconfigurata per un ambiente cloud. Il termine "nativo del cloud" ha una storia molto più breve e si riferisce a un'applicazione sviluppata fin dall'inizio per lavorare solo nel cloud e per avvalersi delle caratteristiche dell'architettura cloud oppure a un'applicazione esistente che è stata sottoposta a refactoring e riconfigurata con principi nativi del cloud.
Un servizio o un'applicazione basati sul cloud sono distribuiti su internet. È un termine generico largamente applicato a tantissime offerte cloud. Nativo del cloud è un termine più specifico. Nativo del cloud descrive le applicazioni progettate per funzionare negli ambienti cloud. Il termine denota le applicazioni che si basano su microservizi, integrazione continua e distribuzione continua (CI/CD, continuous integration/continuous delivery) e possono essere utilizzate tramite qualsiasi piattaforma cloud.
"Priorità al cloud" (o cloud first) descrive una strategia di business in cui le organizzazioni si impegnano a utilizzare in modo prioritario le risorse cloud quando lanciano nuovi servizi IT, aggiornano i servizi esistenti oppure sostituiscono la tecnologia legacy. I risparmi sui costi e le efficienze operative promuovono questa strategia. Le applicazioni native del cloud si abbinano bene a una strategia che dà la priorità al cloud, perché utilizzano solo le risorse cloud e sono progettate per usufruire delle caratteristiche vantaggiose dell'architettura cloud.
IBM Cloud è un leader nello sviluppo di applicazioni native del cloud e un partner affidabile per creare rapidamente le tue applicazioni aziendali, su una piattaforma sicura, integrata e aperta.
Implementa cluster Kubernetes completamente gestiti e altamente disponibili per le tue applicazioni containerizzate con un singolo clic
Esegui immagini di container, processi batch o codice sorgente come carichi di lavoro serverless, senza necessità di dimensionamento, implementazione, gestione di rete o scalabilità
In un'architettura di microservizi, ogni applicazione è composta da diversi servizi più piccoli, debolmente accoppiati e implementabili in modo indipendente.
I container sono unità eseguibili di software che impacchettano il codice dell'applicazione insieme alle dipendenze delle sue librerie e possono essere eseguiti ovunque, sia sul desktop che sull'IT tradizionale o sul cloud.
Kubernetes è una piattaforma di orchestrazione dei container open source che automatizza l'implementazione, la gestione e la scalabilità delle applicazioni containerizzate.