Cloud-native non si riferisce tanto al luogo in cui risiede un'applicazione, ma più al modo in cui viene creata e implementata. Un'applicazione cloud-native è costituita da componenti discreti e riutilizzabili noti come microservizi, progettati per integrarsi in qualsiasi ambiente cloud.
I microservizi (chiamati anche architettura di microservizi) sono un approccio architettonico in cui una singola applicazione è composta da molti componenti più piccoli, accoppiati liberamente e distribuibili indipendentemente come servizi o microservizi. Questi servizi (chiamati anche microservizi) in genere dispongono di un proprio stack, comprensivo di database e modello di dati. Comunicano tra loro tramite una combinazione di API REST, event streaming e broker di messaggi.
Perché i microservizi possono essere implementati e reimplementati indipendentemente, senza influire l'uno sull'altro o interrompere l'esperienza dell'utente finale. Sono la soluzione perfetta per metodologie di distribuzione automatizzate e iterative come integrazione continua/distribuzione continua (CI/CD) o DevOps.
In aggiunta all'essere utilizzati per creare nuove applicazioni cloud-native, i microservizi possono essere utilizzati per modernizzare le tradizionali applicazioni monolitiche.
In una ricerca IBM® tra dirigenti IT, dirigenti degli sviluppatori e sviluppatori, l'87% degli utenti di microservizi ha concordato che l'adozione di microservizi vale la spesa e l'impegno.
Gli sviluppatori spesso implementano microservizi all'interno di container, ovvero componenti applicativi leggeri ed eseguibili che combinano il codice sorgente dell'applicazione (in questo caso, il codice dei microservizi) con tutte le librerie e le dipendenze del sistema operativo (OS) necessarie per eseguire il codice in qualsiasi ambiente. Più piccoli, più efficienti in termini di risorse e più portatili delle macchine virtuali (VM), i container sono di fatto le unità di elaborazione delle moderne applicazioni cloud-native.
I container amplificano i vantaggi dei microservizi consentendo un'esperienza di implementazione e gestione coerente in un ambiente multicloud ibrido: cloud pubblico, cloud privato e infrastrutture on-premise. Ma man mano che le applicazioni cloud-native si moltiplicano, aumentano anche i container e la complessità della loro gestione. La maggior parte delle organizzazioni che utilizzano microservizi containerizzati utilizza anche una piattaforma di orchestrazione dei container, come Kubernetes, per automatizzare la distribuzione e la gestione dei container su larga scala.
I clienti IBM si trovano sempre più spesso a dover migliorare le applicazioni esistenti, creare nuove applicazioni e migliorare l'esperienza utente. Le applicazioni cloud-native soddisfano queste esigenze migliorando le prestazioni, la flessibilità e l'estensibilità dell'app.
Le applicazioni cloud-native hanno spesso funzioni specifiche. Considera come potrebbero essere utilizzate le applicazioni cloud-native su un sito web di viaggio. Ogni argomento trattato dal sito (voli, hotel, auto, offerte speciali) è un microservizio a sé stante. Ogni microservizio può implementare nuove caratteristiche indipendentemente dagli altri microservizi. Le offerte speciali e gli sconti possono essere applicati anche in modo indipendente. Sebbene il sito di viaggi sia presentato ai clienti nel suo insieme, ogni microservizio rimane indipendente e può essere ridimensionato o aggiornato secondo necessità senza influire sugli altri servizi.
IBM Cloud Garage fornisce ai clienti IBM competenze di consulenza per creare rapidamente app cloud-native scalabili e innovative. Offre un hub di innovazione in cui le aziende di tutte le dimensioni possono progettare e creare app che risolvono esigenze aziendali reali.
Che si tratti di creare una nuova applicazione cloud-native o di modernizzare un'applicazione, gli sviluppatori aderiscono a una serie di principi coerenti:
Le applicazioni cloud-native si basano spesso su container. Il vantaggio dei container risiede nel fatto che sono flessibili, leggeri e portatili. L'uso iniziale dei container tendeva a concentrarsi su applicazioni stateless che non avevano bisogno di salvare i dati utente da una sessione utente all'altra.
Tuttavia, man mano che sempre più funzioni core business si spostano sul cloud, il problema dello storage persistente deve essere risolto in un ambiente cloud-native. Ciò richiede agli sviluppatori di prendere in considerazione nuovi modi di affrontare il cloud storage.
Proprio come lo sviluppo di applicazioni cloud native adotta un approccio modulare e basato sui microservizi, così deve fare l'archiviazione cloud-native. I dati cloud-native possono risiedere in qualsiasi numero di luoghi, come registri di eventi o di sistema, database relazionali e archivi di documenti o oggetti.
La posizione dei dati, le richieste di conservazione, la portabilità, la compatibilità della piattaforma e la sicurezza sono solo alcuni degli aspetti che gli sviluppatori devono considerare quando pianificano lo storage cloud-native.
Un'applicazione abilitata al cloud è un'applicazione sviluppata per la distribuzione in un data center tradizionale, ma successivamente modificata in modo da poter funzionare anche in un ambiente cloud. Tuttavia, le applicazioni cloud-native sono progettate per funzionare solo nel cloud. Gli sviluppatori progettano applicazioni cloud-native in modo che siano scalabili, indipendenti dalla piattaforma e composte da microservizi.
Nella breve storia del cloud computing, il significato di "cloud ready" è cambiato più volte. Inizialmente il termine si applicava ai servizi o ai software progettati per funzionare tramite internet. Oggi, il termine è usato più spesso per descrivere un'applicazione che funziona in un ambiente cloud o un'app tradizionale che è stata riconfigurata per un ambiente cloud. Il termine "cloud native" ha una storia più breve e si riferisce a un'applicazione sviluppata fin dall'inizio per funzionare solo nel cloud. Oltre a sfruttare le caratteristiche dell'architettura cloud o di un'app esistente che è stata rifattorizzata e riconfigurata con principi cloud-native.
Un servizio o un'applicazione basata sul cloud viene fornito su internet. È un termine generico che viene applicato liberamente a qualsiasi offerta cloud. Cloud-native, invece, è un termine più specifico che descrive le applicazioni progettate per funzionare in ambienti cloud. Il termine indica le applicazioni che si basano su microservizi, integrazione continua e distribuzione continua (CI/CD) e possono essere utilizzate tramite qualsiasi piattaforma cloud.
Cloud first descrive una strategia aziendale in cui le organizzazioni si impegnano a utilizzare prima le risorse cloud quando avviano nuovi servizi IT, aggiornano servizi esistenti o sostituiscono tecnologie legacy. I risparmi sui costi e l'efficienza operativa sono alla base di questa strategia. Le applicazioni cloud-native si integrano perfettamente con una strategia cloud-first perché utilizzano solo risorse cloud e sono progettate per utilizzare al meglio le caratteristiche vantaggiose dell'architettura cloud.
Un servizio single-tenant completamente gestito per lo sviluppo e la distribuzione di applicazioni Java.
Utilizza il software e gli strumenti DevOps per creare, distribuire e gestire app cloud-native su più dispositivi e ambienti.
Lo sviluppo di applicazioni cloud significa programmare una volta, iterare rapidamente e distribuire ovunque.