Umberto Galtarossa, Partner Technical Manager di Pure Storage: perché i container sono così importanti i processi aziendali e per le App self-contained, scalabili e portabili.
Il settore IT si trova nel bel mezzo di un cambiamento senza precedenti. Pressoché tutto ciò che nelle aziende ruota attorno alle modalità di creazione e distribuzione delle applicazioni si sta infatti evolvendo grazie alla trasformazione digitale che può essere descritta da tre elementi chiave. Il primo è l’enablement digitale dei processi sia all’interno che all’esterno dell’azienda, verso i clienti e i partner. Il secondo è l’influenza del cloud, attraverso l’uso di risorse cloud o di modelli operativi cloud-like.
Il terzo, infine, riguarda il modo in cui sta cambiando anche lo sviluppo applicativo in direzione di un modello continuo di integrazione e deployment che consente frequenti modifiche iterative. Al vertice di questi tre elementi si trova la containerizzazione, che riunisce la capacità di creare, attraverso un modello di sviluppo continuo, applicazioni estremamente self-contained, altamente scalabili e portabili, e granulari in termini di componenti di servizio in esse incapsulati.
Al centro la containerizzazione
Non si esagera nel sostenere che le applicazioni containerizzate – implementate e gestite attraverso piattaforme di orchestrazione come Kubernetes – siano destinate a svolgere un ruolo centrale nell’evoluzione IT del prossimo decennio. Secondo Gartner, entro il 2025 i container si troveranno in produzione all’interno dell’85% delle aziende, contro il 35% del 2019. I container possono essere fatti girare a una densità notevolmente maggiore rispetto a quella dei workload tradizionali, il che significa che occorrono meno server. Ciò ha l’effetto di ridurre i costi delle licenze e, soprattutto, i consumi di energia. Per queste ragioni stiamo iniziando a osservare come la containerizzazione si trovi alla base delle iniziative di riduzione dei costi e dei business case di più ampio respiro. Con un punto di avvio comune di questi progetti costituito dal 25-40% delle app aziendali.
Agilità del deployment di app containerizzate
E per quanto riguarda storage, protezione dati, backup, snapshot, replica, alta disponibilità e disaster recovery? Sono tutti elementi essenziali di un’infrastruttura applicativa aziendale, ma possono rappresentare un problema in un contesto containerizzato. Prima di vedere come poterlo risolvere, cerchiamo di capire come funzionano i container e perché sono così importanti.
Processi aziendali – picchi di vendita
Facciamo l’esempio di un’azienda il cui core business sia fondato sul rilascio frequente di molti nuovi prodotti associati a picchi di domanda, con la relativa necessità di ricorrere agli analytics. Potrebbe trattarsi di un servizio di biglietteria, con numerosi picchi di vendita improvvisi. Le applicazioni tradizionali costruite su un’architettura a tre tier (client-server-database) sarebbero lente da implementare, poco scalabili e poco resistenti a elevati livelli di domanda. I container sono ideati proprio per affrontare una situazione del genere.
L’esigenza di avere scalabilità
Questo perché incapsulano tutta la miriade di componenti di un’applicazione. Il che significa che molti di questi microservizi sono riutilizzabili per lo sviluppo di nuove applicazioni. Inoltre possono moltiplicarsi rapidamente per soddisfare le esigenze di scalabilità. I container dispongono inoltre di tutta la connettività API verso le risorse da cui dipendono, e possono essere portati su numerosi ambienti operativi. Ecco, quindi, che l’improvviso picco di richieste di biglietti per un evento potrebbe essere gestito attraverso una rapida riproduzione in molteplici data center – compreso il cloud pubblico – di istanze interconnesse di servizi containerizzati.
I container e i processi aziendali
Le fondamenta tecniche dei container, semplificando parecchio, sono una forma di virtualizzazione. A differenza dei server virtuali, tuttavia, i container girano direttamente sul sistema operativo host e senza bisogno di un hypervisor. Ciò significa che i container sono macchine virtuali molto più granulari e leggere, che mettono solitamente a disposizione i componenti dell’intera applicazione connessi tra di loro mediante codice (ovvero API).
Nei processi aziendali cresce l’importanza dei container
Pur in assenza di un hypervisor e del conseguente appesantimento, i container traggono vantaggio dalla presenza di un layer di orchestrazione, fornito da tool come Kubernetes. Questo organizza all’interno dei cosiddetti pod il funzionamento di uno o più container, ciascuno con il proprio codice, le proprie dipendenze e le proprie chiamate alle risorse. L’intelligenza necessaria a far girare i pod si trova al di sopra di essi, in uno o più cluster Kubernetes.
Kubernetes e la sfida dei container
Una delle sfide più importanti che riguardano Kubernetes è quella riguardante storage e protezione dei dati. La radice del problema risale alle origini dei container, inizialmente pensati per girare sui laptop degli sviluppatori come istanze effimere il cui storage doveva persistere solo fintanto che i container si trovavano in esecuzione. Da quando i container sono diventati un approccio mainstream allo sviluppo di applicazioni enterprise, tuttavia, questo non è più sufficiente. La maggior parte delle applicazioni enterprise di un’azienda è stateful, il che significa poter creare, interagire e memorizzare dati.
In crescita l’importanza dei container
Così, i clienti che vogliono implementare container dotati di storage e protezione dati di livello enterprise devono rivolgersi a una generazione emergente di nuovi prodotti. Si tratta delle piattaforme per la gestione dello storage per container. Da qui è possibile far girare Kubernetes ed effettuare provisioning e gestione delle relative necessità di storage e protezione dei dati. Un elemento essenziale a cui prestare attenzione è che qualsiasi prodotto per lo storage di Kubernetes dovrebbe essere di tipo container-native.
Importanza dei container
Questo significa che i requisiti storage di un’applicazione vengono implementati sotto forma di microservizi containerizzati nei quali le necessità di provisioning, connettività e prestazioni sono scritte sotto forma di codice con tutto il dinamismo e l’agilità che questo implica. Ciò è in contrasto con altri metodi – come CSI o Container Storage Interface – che si affidano a driver rigidamente definiti per raggiungere lo storage allocato per i container.
Come gestire i container
Una piattaforma storage per Kubernetes di tipo software-defined e container-native dovrebbe poter offrire accesso allo storage a blocchi, a file e a oggetti. Inoltre dovrebbe essere in grado di sfruttare anche il cloud storage. Nel far questo, dovrebbe emulare i vantaggi e le caratteristiche chiave della containerizzazione e di Kubernetes.
Proteggere i dati
Ciò significa che i dati dovrebbero essere portabili tanto quanto la app containerizzata, dovrebbero essere gestiti attraverso un control plane comune, e dovrebbero poter scalare e ripristinarsi autonomamente. Quando si tratta di protezione dei dati, un prodotto del genere dovrebbe fornire tutti i principali metodi di salvaguardia dei dati. Come ad esempio funzionalità per backup e snapshot, replica sincrona e asincrona, e migrazione. Anche qui, il cloud dovrebbe essere compreso come possibile sorgente o target di queste operazioni.
La capacità storage dei container
Per gestire la scalabilità degli ambienti Kubernetes, il prodotto dovrebbe essere in grado di lavorare con centinaia di cluster, migliaia di nodi e centinaia di migliaia di container con una capacità storage gestibile di decine di petabyte. Infine, il prodotto dovrebbe essere intelligente e dotato di funzioni di gestione automatizzata basata su regole. Regole che, per esempio, possano creare, replicare e cancellare i container come determinato da trigger di monitoraggio predefiniti. Inoltre che possono erogare e ridimensionare lo storage secondo necessità. Una volta trovata e implementata una soluzione che soddisfi tutti i requisiti, apparirà chiaro il motivo per cui l’85% delle aziende intende avvalersi di container entro il 2025. Ci si meraviglierà anzi di non aver intrapreso questa strada già prima.