I container hanno rivoluzionato il settore della virtualizzazione. Sempre più team e aziende hanno via via sostituito le loro macchine virtuali in favore di soluzioni come Docker o altri sistemi di container. Ma quali sono le principali differenze tra queste due metodologie di virtualizzazione?
Andiamo con ordine. Un container Linux è un insieme di processi isolati dal resto del sistema, che eseguono un'immagine distinta contenente tutti i file necessari per supportare tali processi. Offrendo un'immagine che contiene le dipendenze di un'applicazione.
Una macchina virtuale è invece un software che va a creare un ambiente virtuale che emula il comportamento di una macchina fisica grazie all'assegnazione di risorse hardware (porzioni di disco rigido, RAM e CPU).
Si tratta di due approcci alla virtualizzazione simili ma non identici. Il primo va ad emulare solo un'applicazione e le sue dipendenze, mentre il secondo gestisce un intera piattaforma. Quindi, a seconda delle proprie esigenze, si dovrà scegliere l'uno o l'altro metodo.
Ad esempio, se si sta sviluppando e distribuendo una singola applicazione che dipende da una determinata libreria software, allora l'uso del container è decisamente indicato. Caso contrario invece quando si ha la necessità di realizzare uno stack LAMP all'interno di un server, in quel contesto invece una macchina virtuale offre decisamente più vantaggi rispetto ad altre soluzioni.
Si potrebbe dire dunque che i container hanno senso quando si deve distribuire un'applicazione su più sistemi in modo semplice e veloce. Mentre una macchina virtuale è indicata per situazioni in cui serve far lavorare un'applicazione all'interno di un sistema.
Altro elemento da tenere in considerazione quando si deve scegliere tra i due sistemi di virtualizzazione è la sicurezza. In genere le macchine virtuali offrono più sicurezza rispetto ad un container. Infatti una Virtual Machine è nettamente separata dal sistema ospitante, con risorse dedicate e limitate in modo netto. Quindi anche se questo ambiente viene compromesso è possibile arrestarlo e resettarlo senza particolari problemi.
Questo non vuol dire che i container non siano sicuri, anzi esistono già molto sistemi per inserire delle chiavi di sicurezza nei container. Tuttavia questi sistemi di virtualizzazione hanno accesso a tutte le risorse del sistema, al contrario delle macchine virtuali, dunque sarebbe meglio evitare di accedere ad un container con privilegi di amministrazione.
In conclusione, non esiste una soluzione preferibile in ogni caso tra i due metodi. Un team di sviluppo dovrà scegliere uno di essi in base alle necessità del progetto che si sta sviluppando, anzi, non è escluso che i due metodi di virtualizazione possano coesistere all'interno del medesimo progetto.
Via Matt Hartley