Virtualizzazione: soluzioni a confronto

 

L’affermazione e crescita del cloud  è servita anche da traino per lo sviluppo di una serie di tecnologie di supporto che ad oggi sono largamente utilizzate nel settore IT: la virtualizzazione è sicuramente una di queste. Grazie agli hypervisor è stato infatti possibile moltiplicare il numero di macchine virtuali (virtual machine o VM) presenti in un cluster condiviso di macchine “fisiche”, permettendo di creare complesse strutture nelle quali, ad esempio, un sistema operativo “ospite” (guest) viene eseguito sul sistema operativo dell’host (host OS) mediante hypervisor (es: Xen su Linux).

Negli ultimi tempi si è parlato molto anche di container, una tecnologia non del tutto nuova al mondo IT (risale agli anni 2000) ma valorizzata e riportata in auge solo grazie alla startup statunitense Docker. E subito si è iniziato a pensare ad un possibile competitor per il classico approccio con hypervisor, vediamo perchè.

Breve confronto tra virtualizzazione e container

I container sono delle VM indipendenti dal sistema operativo (OS) dell’host con il quale condividono solo il kernel. Rispetto all’approccio classico, i container richiedono un quantitativo di risorse minore permettendo di eseguire più applicazioni su un singolo host OS; offrono anche un alto grado di isolamento a tutte le applicazioni che sono eseguite al loro interno perchè dispongono di un set dedicato di risorse (è come se venissero eseguite in un ambiente separato o in un altro OS); abbattono i tempi di lancio e riavvio delle applicazioni (gli host OS container non sono altro che processi) favorendo la continuità lavorativa e l’uptime generale. In base a quanto detto sembra che la virtualizzazione degli hypervisor sia destinata ad essere sostituita a breve dai container, ma sarà veramente così?

Virtualizzazione: uniker e container a confronto

Unikernel e container a confronto

 

Unikernel o container?

Gli unikernel sono stati definiti dalla stampa specializzata come il probabile asso nella manica degli hypervisor – minacciati dall’arrivo dei container. Un unikernel è un sistema operativo minimale eseguibile unicamente all’interno di una VM che aumenta il numero di VM supportabili per singola istanza hypervisor. Unikernel, come vedremo a breve, va oltre gli storici limiti degli OS guest che non sono  stati pensati per specifici casi di utilizzo ma bensì per un ampio ventaglio di scenari: la natura multi utente, multi uso, la necessità di gestire periferiche hardware e driver annessi sono solo alcuni degli elementi che vanno ad incidere sulla complessità e le “dimensioni” finali dell’OS e che, anche se non utilizzati dall’utente, devono necessariamente fare parte della “monolitica” installazione.

La filosofia alla base di unikernel prevede l’alleggerimento complessivo dell’OS attraverso l’esclusione degli elementi ritenuti superflui: in quest’ottica vediamo quindi scomparire diverse librerie in favore di pochi servizi selezionati. Unikernel è inoltre in grado di compilare internamente le librerie (grazie ad alcune applicazioni) e non contempla alcuna linea di codice destinata ad hardware e periferiche (driver etc.) ; anche le peculiarità multi utente e multi processo dell’OS guest vengono meno, unikernel preferisce concentrarsi solo sulle parti di codice necessarie all’esecuzione delle applicazioni in uso. Il modello rende quindi inutile l’impiego di un OS completo, permettendo alle applicazioni di essere eseguite direttamente sull’hypervisorI principali vantaggi di unikernel sono quindi:

  • installazioni realmente minimali. Unikernel elimina le librerie ed altri elementi superflui degli OS focalizzandosi sull’esecuzione di una singola applicazione. Unikernel utilizza solo quel che è ritenuto strettamente nessario e nulla più;
  • sicurezza incrementata. Unikernel è meno complesso dei classici OS e ciò lo rende più difficilmente attaccabile dall’esterno. L’assenza di shell o utilità varie riduce il numero di potenziali elementi sfruttabili dagli hacker per “bucare” il perimetro di difesa;
  • velocità. I boot sono molto rapidi perchè il compilatore dell’applicazione richiede esclusivamente i servizi necessari all’avvio – il resto è stato escluso dall’OS come già detto;
  • scalabilità. Grazie alle miniori richieste (in termini di risorse) ed alle dimensioni contenute del guest OS, è possibile ospitare un maggiore numero di macchine virtuali per hypervisor rispetto all’approccio classico.

L’approccio unikernel offre innegabili vantaggi rispetto alla classica virtualizzazione e giocherà probabilmente un ruolo centrale nel futuro del cloud computing, un ecosistema di servizi scelti quotidianamente da un crescente numero di privati ed aziende per via della loro economicità ed efficienza e tra i quali unikernel saprà ritagliare il proprio spazio.