Virtualizzazione: Vantaggi e differenze tra Container e Macchine Virtuali

Virtualizzazione: Vantaggi e differenze tra Container e Macchine Virtuali

In informatica, con il termine virtualizzazione è possibile indicare un processo di astrazione per il quale le componenti hardware deli elaboratori vengono resi disponibili ai vari software nella forma di risorsa virtuale permettendoci o di installare sistemi operativi su hardware virtuale o di utilizzare sullo stesso sistema operativo varie istanze dello stesso.

Virtualizzazione: Vantaggi e differenze tra Container e Macchine Virtuali

Virtualizzazione Container Based

Perché virtualizzare un’intera macchina, quando sarebbe possibile virtualizzare solamente una piccolo parte di essa? Da quest’idea gli sviluppatori hanno cominciato a trovare delle strade alternative alla virtualizzazione completa e la stessa Google, confrontandosi con questo problema, ha sviluppato un’aggiunta al kernel Linux chiamata cgroups, che ha permesso al team di sviluppo californiano di rilasciare software in maniera più veloce, più economica e con una scalabilità senza precedenti.

Con cgroups, Google era riuscita a creare un contesto di esecuzione isolato, con un alto livello di astrazione, tanto da imporsi come una sorta di sistema operativo semplificato e virtualizzato che soggiace alla base di tutte le applicazioni sviluppate da Mountain View. Dopo pochi anni, la volontà di rendere questa tecnologia uno standard, ha condotto il team di Docker a sviluppare un formato di contenierizzazione interoperabile, capace di pacchettizzare le applicazioni ed effettuarne il rilascio in qualsiasi ambiente di esecuzione, senza doversi preoccupare delle condizioni di eseguibilità.
La contenierizzazione, quindi, può essere considerata figlia della virtualizzazione, da cui si evolve in una nuova generazione che introduce migliorie di non poco conto.

Differenze Container e Macchine Virtuali

Rispetto ad una macchina virtualizzata, un container è capace di offrire:

  • Un rilascio delle applicazioni semplificato: impacchettando un’applicazione in un singolo componente distribuibile e configurabile con una sola linea di comando, la tecnologia a container permette di semplificare il rilascio di qualsiasi applicazione, senza doversi preoccupare della configurazione dell’ambiente di runtime;
  • Una disponibilità rapida: virtualizzando ed astraendo solo il sistema operativo e le componenti necessarie all’esecuzione dell’applicazione, invece che l’intera macchina, l’intero package si avvia in un ventesimo di secondo, rispetto ai tempi di avvio di una Virtual Machine;
  • Un controllo più granulare: i container consentono agli operatori e agli sviluppatori di suddividere ulteriormente le risorse computazionali in microservizi, garantendo cosi un controllo superiore sull’eseguibilità delle applicazioni e un miglioramento delle prestazioni dell’intero sistema.

Vantaggi dell’uso dei Container

Le caratteristiche proprie della tecnologia dei container portano ad alcuni vantaggi indiscutibili:

  1. Il vantaggio forse più ovvio è l’opportunità per gli sviluppatori di possedere una miriade di container anche sul proprio PC o laptop, per avere sempre a portata di mano un ambiente di rilascio o test adatto a ciascuna applicazione in sviluppo. Per quanto sia possibile eseguire anche su un laptop diverse vitual machine, questa operazione non è mai veloce e semplice e impatta non poco sulle prestazioni;
  2. L’amministrazione dei cicli di rilascio delle applicazioni è semplificata in quanto distribuire una nuova versione di un container è pari al tempo speso per digitare in console una singola linea di comando;
  3. Le attività di testing traggono un beneficio economico notevole da un ambiente che utilizza la tecnologia di virtualizzazione basata sui container. Con un container è infatti possibile effettuare una serie di semplici test programmati in modo giornaliero mantenendo costante il costo, in quanto si userebbero sempre le stesse risorse di calcolo;
  4. Non possiamo poi ignorare la componibilità dei sistemi applicativi, specialmente per applicazioni open source. In pratica, invece di obbligare gli sviluppatori a installare e configurare i servizi MySQL, memcached, MongoDB, nginx, node.js e altri, per avere la giusta piattaforma esecutiva per le proprie applicazioni, sarebbe meno rischioso e più veloce avviare ed eseguire con piccoli script quei pochi container che ospitano queste stesse applicazioni.

Sul lungo periodo, il più importante vantaggio che questa tecnologia promette è la portabilità e la consistenza di un formato che consente l’esecuzione applicativa su diversi host. Infatti, con la standardizzazione dei container, i workload possono essere facilmente spostati li dove vengono eseguiti in modo più economico e veloce, evitando anche i lock-in dovuti alle peculiarità delle piattaforme dei singoli provider.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *