Metodi di virtualizzazione a confronto: Container vs Virtual Machine

Docker
14 settembre 2016
0 commenti

In questi ultimi anni abbiamo spesso sentito parlare di Docker come la next big thing nell’ambito del computing. In pochi anni, Docker è cresciuto così rapidamente tanto da diventare un esempio di come si costruisce un prodotto totalmente devops-oriented. Tra le funzionalità che hanno garantito a Docker questo successo sicuramente giocano a favore fattori come l’immediatezza d’utilizzo, il controllo granulare durante la fase di deployment e la possibilità di eseguire qualsiasi tipo di applicativo senza doversi preoccupare delle condizioni di eseguibilità.

Nonostante la rapida ascesa di Docker, i “tradizionali” metodi di virtualizzazione continuano a rappresentare una valida soluzione per una grossa fetta di aziende. Tra i metodi di virtualizzazione infatti, i container non hanno sostituito del tutto le macchine virtuali, piuttosto si è creata una tendenza nell’affiancare le due tecnologie. Vediamo quindi quali sono e come funzionano queste due modalità di virtualizzazione.

 

Le macchine virtuali

La vera svolta avviene nel 1999, quando VMware rilascia la propria workstation riscuotendo un successo al di sopra di ogni aspettativa. Da quel momento in poi la virtualizzazione è diventata il centro di una vera e propria rivoluzione tecnologica, che ha portato a cambiamenti incredibili e significativi in tutto il settore tecnologico delle infrastrutture. Come funziona una macchina virtuale?

Un macchina virtuale è un software che, attraverso un processo di virtualizzazione, è in grado di creare un ambiente virtuale che emula il comportamento di una macchina fisica, grazie all’assegnazione di alcune risorse hardware – RAM, CPU, porzioni di disco fisso – ed in cui alcune applicazioni possono essere eseguite come se interagissero con tale macchina.
Tra i vantaggi offerti dall’adozione di una macchina virtuale vi è il poter offrire a più utenti, contemporaneamente e in modo performante, diversi sistemi operativi, senza dover procedere a una ripartizione fisica del disco rigido.

 

Docker e i Container

Mentre una macchina virtuale astrae l’hardware, i container limitano il loro livello di astrazione al solo sistema operativo. Con i container, ogni utente oltre a condividere lo stesso sistema operativo, condivide il kernel, la connessione di rete e i file di base del sistema. A differenza delle macchine virtuali in questo caso le istanze vengono eseguite all’interno di uno spazio separato, garantendo così una notevole diminuzione di consumo della CPU e dell’overload associato, fenomeno tipico dell’esecuzione di più sistemi operativi nelle macchine virtuali.

Docker nasce per la volontà di rendere la tecnologia container uno standard, sviluppando un formato di conteinerizzazione interoperabile, ovvero capace di pacchettizzare le applicazioni ed effettuare il deploy in qualsiasi ambiente di esecuzione. Pensato – e costruito – sulla base di LXC, in Docker ogni container possiede un proprio file system in grado di fornire tutte le indicazioni necessarie alla creazione di un ambiente simile a una macchina virtuale. In questo modo Docker incorpora una soluzione di gestione dei container più sofisticata, che permette una più facile esecuzione degli script e dell’automazione. Nella tabella sottostante possiamo osservare la differenza tra i tempi di avvio e di arresto di Docker e delle macchine virtuali:

Docker vs Virtual Machine I dati della tabella sono indicativi: chiaramente i container e le macchine virtuali, per loro stessa natura, non possono essere messi direttamente a confronto. Mentre possono essere utilizzati per eseguire funzioni simili, spesso vengono utilizzati in casi diversi. Ad esempio, Docker è più veloce nell’avvio e nell’arresto e questa funzionalità lo rende più adatto rispetto alle macchine virtuali ad essere utilizzato per gli ambienti di produzione.

 

La soluzione neen Jelastic PaaS

neen mette a disposizione di DevOps e software house neen Jelastic PaaS, la piattaforma as a service che unisce l’elasticità dello IaaS alla semplicità di utilizzo del PaaS. A differenza della altre soluzioni PaaS presenti sul mercato, neen Jelastic PaaS non richiede alcuna modifica di codice, nè obbliga gli sviluppatori ad utilizzare sistemi di API (comunque disponibili). Inoltre, grazie alla tecnologia a Container, è possibile creare istanze “pacchettizzate”, trasferibili e portabili tra diversi sistemi e Cloud.

L’affidabilità hardware è garantita in modo nativo attraverso i meccanismi di live migration, in grado di operare una migrazione a caldo dei servizi in caso di eventuali failure hardware. L’alta affidabilità applicativa è invece soddisfatta attraverso meccanismi di load balancing, che distribuiscono il carico dell’applicazione su più server cloud; ogni server è istanziato su diversi hardware a garanzia di ulteriore ridondanza.

neen Jelastic PaaS garantisce anche la session replication tra i nodi senza discontinuità e la sincronizzazione automatica dei dati tra containers attraverso un servizio di NFS (Network File System) as a service.

Per maggiori informazioni su neen Jelastic PaaS scrivi a sales@neen.it o chiama il numero 02.45485420

Jessica  Ventura Social Media Manager