Container e virtualizzazione: dalla teoria alla pratica

Feb 19

Scritto da Ivana Basaric

I container sono sulla bocca di tutti da tempo e l’interesse e la loro implementazione, soprattutto nelle grandi aziende,  è destinata ad esplodere nei prossimi anni. Con risorse di elaborazione minime e tempi di avvio rapidi, questa tecnologia è tra le più competitive per la gestione di applicazioni molto complesse. Ma come funzionano i container?

 

Cinque anni fa Google introduceva Kubernetes, un sistema open-source per l'orchestrazione e la gestione di container che di fatto sancisce l’evoluzione delle tecnologie di virtualizzazione e che, ad ogg, è la tecnologia più diffusa, assieme a Docker.

Quella dei container è un'innovazione, che ha visto tra i suoi promotori soprattutto i team di sviluppatori, DevOps e quanti sono responsabili delle IT operations e sta di fatto trasformando il modo in cui vengono create, implementate e gestite le applicazioni sui sistemi aziendali.

 


Cerchi spunti concreti per portare la metodologia DevOps in azienda? Scarica orA LA GUIDA REALIZZATA CON NUTANIX

 

I container sono molto diffusi soprattutto nel Nord America, già nel 2019 si posizionano nei primi posti anche in Europa con una percentuale di interesse in crescita anche negli anni successivi.

statistic_id544806_technology-trend-adoption-na-europe-2019

 

Nel 2019, inoltre, una survey di Statista, che ha coinvolto 500 IT, ha dimostrato che, se nel 2018 l’interesse per i container era al 17%, nel 2019 è passato al 35% così come sono aumentati gli investimenti da parte dalle aziende in questa tecnologia.

 

Che cos’è un container e come funziona?

 

 

Per spiegarvi come funzionano i container informatici, immaginate i classici container che trasportano merci in tutto il mondo via nave.

Immaginate cosa accade con questi "blocchi" che si spostano come e dove si vuole: da una nave a un camion o da un camion a un deposito.

La stessa cosa avviene in informatica. Potrete "prendere" un’applicazione, impacchettarla con tutto ciò che occorre per farla funzionare ed estrapolarla dall’ambiente in cui è eseguita. Ecco a voi un container!

20200217_Immagine_Container_3-01
 
 

Se con la virtualizzazione classica è possibile virtualizzare un’intera macchina, nel caso dei container è possibile virtualizzare anche solo una piccola componente della stessa.

Le virtual machine tradizionali condividono le risorse hardware, ma il sistema operativo e le applicazioni sono a bordo dell’host. Questo si traduce in tempi di avvio lunghi (ci vogliono minuti) e in un impiego notevole di risorse (parliamo di diversi Gigabyte).

I container, invece, condividono oltre all’infrastruttura, anche il sistema operativo. Il che significa che i tempi di avvio sono brevi (pochi secondi) e le dimensioni sensibilmente ridotte (anche pochi kb).

 

Quali sono i vantaggi nell’utilizzo dei container?

 

Poter “pacchettizzare” le applicazioni e distribuirle in qualsiasi ambiente, porta a una serie di vantaggi in termini di: prestazioni, tempo, costi e integrazione. Infatti i container possono essere un interessante mezzo per semplificare la complessità dell'infrastruttura, fornire le massime prestazioni e ottimizzare i costi eliminando le licenze delle virtual machine. Ma vediamo nel dettaglio alcuni dei vantaggi di questa tecnologia

 

20200217_Immagine_Container_2-01

 

Sviluppo, test e deploy semplificato

Il disaccoppiamento tra le applicazioni e gli ambienti in cui vengono eseguite consente di effettuare il deploy di un container ovunque: su un cloud pubblico, in un data center privato oppure su un PC. Qualunque sia l’ambiente scelto il container rimarrà sempre lo stesso. Questo significa che anche le versioni aggiornate delle applicazioni potranno essere rilasciate in modo semplice, senza coinvolgere il sistema operativo dell’host che ospita il container o tutti gli altri container presenti. In poche parole, se devo aggiornare un’applicazione non sarà necessario riavviare l’intera macchina.

 

Control version

Ipotizziamo che il deploy di un aggiornamento non sia andato a buon fine. Con i container è più semplice effettuare il rollback ed avere la versione precedente nuovamente funzionante in pochi istanti.

 

Isolamento e sicurezza

Nei container le applicazioni e le risorse sono isolate. Questo significa che se volessi eliminare un’applicazione sarà sufficiente rimuovere il suo container e l’operazione eliminerà tutto ciò che la riguarda come per esempio i file temporanei o quelli di configurazione. Allo stesso tempo, essendo isolati, i container “vedono” solo i processi eseguiti da loro stessi, mentre gli altri rimarranno sconosciuti. Security first!

 

Granularità

È possibile containerizzare non solo un’intera applicazione, ma anche un singolo componente. In questo modo si possono ridurre le risorse in micro-servizi garantendo maggiore controllo e miglioramento delle performance.

 

Configuration Management e Orchestration

Se all’utilizzo della tecnologia container uniamo quelle di configuration management ed orchestrazione sarà possibile eseguire in modo automatico e massivo una serie di azioni come la configurazione, il ripristino o l’installazione di nuovi pacchetti sugli item gestiti.

Il carico di lavoro infatti, viene gestito con l’autoscaling orizzontale tra i vari container. Questo permette ottime prestazioni e applicazioni pronte all’uso in pochi secondi, senza dover ricorrere all’installazione costante di nuove virtual machine.

 

Virtualizzazione e container: un esempio pratico

Un esempio pratico in cui la tecnologia container può portare vantaggi rilevanti è quella delle virtual machine che eseguono diversi script per effettuare operazioni come ad esempio: il monitoraggio degli host gestiti o la raccolta, l’elaborazione e la copia di dati da una source all’altra.

In uno scenario classico per aggiornare gli script occorre agire direttamente sui server verificando successivamente che tutto abbia funzionato correttamente. Ciò significa dover investire parecchio tempo per lo sviluppo, i test e il rilascio effettivo in produzione delle varie modifiche.

Con la tecnologia container invece, è possibile velocizzare e migliorare tutto il processo, isolando i singoli componenti o le applicazioni, inserendoli all’interno della toolchain.

Ogni modifica viene eseguita, testata e messa in produzione automaticamente partendo dal codice generato sul pc dallo sviluppatore, passando poi per il repository dove vengono mantenute tutte le versioni di controllo.

 

Le sfide

Uno degli ostacoli all’adozione di questa tecnologia nelle aziende è la mancanza di competenze, strategie e strumenti per essere realmente competitivi.

Nell’era di giganti come Amazon e Netflix, che erogano servizi e prodotti in una maniera sempre più veloce, tutti devono adattarsi alle nuove aspettative del consumatore. E tu sei pronto?

Se anche tu ti stai chiedendo da dove iniziare per portare questa tecnologia nella tua azienda, il nostro partner Nutanix ha realizzato un ebook dedicato alla metodologia DevOps.

 Scarica  gratis l’e-book guida di Nutanix

“Why is DevOps so Hard?”