Una panoramica sul mondo della Sicurezza Informatica, del Networking, della Virtualizzazione e non solo. Blog particolarmente indicato per i reparti IT che comunque alterna articoli scritti per specialisti con articoli formulati con linguaggio semplice e comprensibile a tutti.

Ogni articolo di questo blog è stato integralmente scritto dall'autore. Il contenuto è completamente originale e la riproduzione, anche parziale, è vietata salvo autorizzazione.

giovedì 8 ottobre 2020

Containerizzazione vs Virtualizzazione spiegata in 2 minuti

La nuova frontiera della virtualizzazione consiste nel virtualizzare non una macchina intera (con il suo sistema operativo) ma un'immagine di un'applicazione specifica. Vediamo insieme di cosa si tratta e quali opportunità offre questa alternativa.


All'epoca, i più "stagionati" come me, lavoravano con le chroot jail in ambito linux. Esse consentivano di isolare un processo chiudendolo in una "gabbia" affinchè esso non possa "uscire" e arrecare danni al sistema madre. Il concetto di "containerizzazione" non si discosta molto a livello concettuale, ma a livello pratico introduce una serie di vantaggi davvero notevoli e sancisce una nuova generazione di strumenti a disposizione dei SysAdmin.


Avevo appena imparato a padroneggiare la virtualizzazione, sono spaesato, cos'è la containerizzazione?

Lo so, ti sono vicino. Partiamo dalla slide presente sul sito ufficiale di docker:

La differenza sostanziale risiede nel layer a cui la virtualizzazione viene effettuata. Mentre nella virtualizzazione tradizionale ad essere astratto è uno strato hardware che poi viene presentato alle macchine virtuali, nel container ad essere astratto è uno strato applicativo che condivide tra i container sostanzialmente il kernel del sistema ospitante. I container sono, di fatto, processi a sè stanti su di uno stesso sistema e che vengono lanciati nello user space.

Quali sono i vantaggi... e gli svantaggi?

PRO
  • I container sono molto più leggeri di una intera VM e richiedono meno risorse.
  • Fare il deploy di un'immagine (o un'applicazione, se volete) è estremamente semplice e rapido.
  • L'immagine si porta dietro tutte le librerie necessarie, non serve più impazzire sulle dipendenze. La portabilità è elevatissima.
  • L'architettura clusterizzata è semplice da implementare, le immagini sono già di per se nativamente predisposte all'utilizzo in cluster multinodo (o sciami).
  • Un'immagine può essere lanciata su qualsiasi sistema, sia esso Linux, Microsoft o MAC (almeno per docker di cui parleremo più avanti).
CONTRO
  • Il sistema è app-centrico, mi serve wordpress, lo scarico dall'hub, lo faccio girare, fine. Sarà non banale accedere allo storage, personalizzare un cron e lavorare sullo strato inferiore.
  • Fin quando la mia esigenza è confinata ad una specifica applicazione, la cosa è lineare. Ma se devo lavorare su un sistema completo e complesso, allora potrebbe non essere la tecnologia corretta.

 

Insomma, ad ognuno il suo, non è detto che la containerizzazione vada  sempre bene. Un provider che fa hosting di siti troverà notevole vantaggio. Un'azienda che ha un'architettura tradizionale (un db server, un'app server, un fs server, due dc, etc.) non trarrebbe alcun vantaggio veramente tangibile.

Nei prossimi capitoli creeremo un'architettura a container con Docker, parleremo dei cluster con swarm ed infine approfondiremo kubernetes con lo scopo di orchestrare il tutto.

 

 

Discaimer: Ogni articolo di questo blog è stato integralmente scritto dall'autore. Il contenuto è completamente originale e la riproduzione, anche parziale, è vietata salvo autorizzazione.