Che cos'è un deployment di container?
I container rappresentano un metodo per creare, pacchettizzare e distribuire il software. Un container include codice completo, runtime, librerie e tutto ciò che è necessario per l'esecuzione del carico di lavoro containerizzato.
Il deployment di container consiste nell'eseguire il push dei container (o distribuirli) nel loro ambiente di destinazione, ad esempio un cloud o un server on-premise. Anche se un container potrebbe contenere un'intera applicazione, in realtà la maggior parte di questi deployment è di tipo multi-container, con il push di più container nell'ambiente di destinazione. Per sistemi più dinamici e su larga scala, si potrebbero distribuire centinaia o addirittura migliaia di container al giorno.
Sono progettati per essere attivati e disattivati rapidamente a seconda dell'applicazione. Ciò è dovuto al fatto che i container vengono spesso utilizzati come metodo per creare, pacchettizzare e distribuire microservizi. I microservizi descrivono un'architettura software che scompone una soluzione di grandi dimensioni, a volte definita monolito o applicazione monolitica, in unità logiche di dimensioni ridotte. Ciascuno di questi microservizi viene quindi eseguito in modo indipendente nel proprio container. Questa moderna pratica di sviluppo software offre una miriade di vantaggi, tra cui la capacità di accelerare i deployment e le successive modifiche al codice.

Stato di Kubernetes

Sette modi per migliorare l'esperienza degli sviluppatori e accelerare la distribuzione del software su Kubernetes
Quali sono i vantaggi di un deployment di container?
I container e le tecnologie correlate, come gli strumenti di orchestrazione, si rivolgono ai moderni team di sviluppo software, poiché offrono molteplici vantaggi, in particolare per i team che lavorano a obiettivi di digital transformation o che hanno semplicemente bisogno di distribuire prodotti software più velocemente e con maggiore frequenza rispetto al passato. I vantaggi dei deployment di container includono:
Velocità. I container possono gettare le basi per uno sviluppo più rapido e deployment più frequenti, soprattutto se utilizzati in pipeline CI/CD. Insieme all'orchestrazione dei container e all'uso sempre più diffuso dell'automazione con CI/CD, i container tendono a semplificare le attività operative necessarie per inviare codice in produzione, anche in aree come il provisioning e il test dell'infrastruttura.
Agilità e flessibilità. I container sono progettati per essere attivati e successivamente dismessi rapidamente in base alle esigenze. Ciò significa che possono supportare obiettivi e condizioni di business fluidi e in evoluzione. La loro natura isolata, soprattutto in combinazione con un'architettura di microservizi, può apportare anche altri vantaggi, tra cui il controllo avanzato della sicurezza e la capacità di aggiornare un carico di lavoro containerizzato senza dover ridistribuire l'intera applicazione.
Utilizzo e ottimizzazione delle risorse. I container vengono astratti dal sistema operativo e dall'infrastruttura sottostanti. In questo modo risultano più leggeri e richiedono un numero inferiore di risorse di sistema: una differenza significativa rispetto alle macchine virtuali, in cui ogni applicazione deve avere un proprio sistema operativo guest. Con i container, più applicazioni possono condividere lo stesso sistema operativo e, di conseguenza, più applicazioni possono essere eseguite su risorse condivise sullo stesso computer. Questo aspetto è a volte indicato come densità, a significare che sullo stesso host possono essere eseguiti numerosi container.
Esecuzione ovunque. I container vengono astratti dal sistema operativo e dall'infrastruttura sottostanti, il che significa che possono essere eseguiti in modo coerente in qualsiasi ambiente. Il codice (e tutto ciò che richiede per l'esecuzione) viene eseguito nello stesso modo, indipendentemente dalla posizione in cui è distribuito il container. Può trattarsi di un public cloud o di un private cloud, un server on-premise o in hosting, un laptop di uno sviluppatore: i container sono progettati per l'esecuzione coerente, ovunque.
Perché utilizzare i deployment di container?
I deployment di container sono adatti a una varietà di strategie software e infrastrutturali moderne, incluso il suddetto approccio basato sui microservizi. Possono accelerare lo sviluppo delle applicazioni e ridurre il budget per i team delle operation IT, in quanto sono astratti dagli ambienti in cui vengono eseguiti.
Pertanto, le applicazioni containerizzate rappresentano ormai una scelta diffusa tra i team di DevOps e altre organizzazioni che hanno abbandonato i tradizionali approcci monolitici (o "legacy") allo sviluppo software. I deployment di container sono perfettamente compatibili anche con processi e strumenti di integrazione continua (CI) e distribuzione continua (CD). Il campo correlato ma distinto del deployment continuo (un altro acronimo di CD) sviluppa ulteriormente il concetto di distribuzione continua e automatizza completamente il deployment di codice in produzione, senza richiedere l'approvazione manuale.
La tecnologia containerizzata e i deployment di container rappresentano anche una valida combinazione per ambienti di infrastruttura distribuiti o eterogenei, tra cui quelli multi-cloud e hybrid cloud.
Come vengono distribuiti i container?
Sono disponibili diversi strumenti per il deployment di container. Docker, ad esempio, è una piattaforma di container e un runtime molto diffusa, impiegata da utenti e team per creare e distribuire container. Il punto di partenza per l'utilizzo di Docker per un deployment di container consiste nel creare un'immagine Docker per il container. È inoltre possibile reperire un'immagine Docker esistente dal repository Docker Hub, in cui gli utenti condividono immagini preintegrate per servizi ed esigenze applicative particolarmente diffusi. La documentazione di Docker contiene istruzioni tecniche dettagliate per iniziare.
Diversi strumenti per la gestione della configurazione o per il modello Infrastructure-as-Code consentono di creare script che automatizzano completamente o parzialmente i deployment di container, spesso in combinazione con una piattaforma di container, come Docker. Ciascuno di questi strumenti è caratterizzato da specifici metodi e istruzioni tecniche per automatizzare il deployment di un container o la configurazione dell'applicazione. È possibile utilizzare strumenti di gestione della configurazione o Infrastructure-as-Code per scrivere script (con nomi diversi su piattaforme diverse) al fine di automatizzare determinate attività nel deployment e nella gestione dei container in base a best practice di configurazione.
Soluzioni e prodotti correlati
VMware Tanzu for Kubernetes Operations
La base per un'infrastruttura di container multi-cloud moderna
VMware Tanzu Application Platform
Un'esperienza di sviluppo multi-cloud superiore su Kubernetes
VMware Tanzu Community Edition
Prova VMware Tanzu