Virtualizzazione
Virtualizzazione: presente e futuro della tecnologia alla base del cloud
La virtualizzazione dei server è una tecnologia consolidata, che migliora agilità e flessibilità del data center. Come evolverà con lo sviluppo di container e serverless computing
La virtualizzazione dei server è una tecnologia concettualmente semplice, ma con un profondo impatto sui data center aziendali.
Cosa succede se, anziché eseguire una singola istanza del sistema operativo e una singola applicazione per server, è possibile aggiungere un livello software, noto come hypervisor, che consente di eseguire più istanze del sistema operativo e i carichi di lavoro associati su un singolo server fisico?
Questa è l’idea alla base della virtualizzazione dei server, che risale ai mainframe IBM degli anni ’60 ed è stata resa popolare da VMware, che ha introdotto software di virtualizzazione per i server x86 nei primi anni 2000. Da allora, altri produttori hanno sviluppato le proprie piattaforme di virtualizzazione server e oggi sono disponibili strumenti avanzati di gestione, automazione e orchestrazione che semplificano la distribuzione, lo spostamento e la gestione dei carichi di lavoro delle macchine virtuali (VM).
Prima della virtualizzazione dei server le aziende dovevano confrontarsi con un alto numero di server, potenza di calcolo sottoutilizzata, costi energetici in continuo aumento, processi manuali, una generale inefficienza e scarsa flessibilità nei loro ambienti di data center.
La virtualizzazione dei server ha cambiato tutto ciò ed è stata ampiamente adottata. In effetti, oggi è difficile trovare un’azienda che non stia già eseguendo la maggior parte dei suoi carichi di lavoro in un ambiente VM.
Ma, come sappiamo, nessuna tecnologia è immune dall’essere sostituita dalla prossima “grande cosa”. Nel caso della virtualizzazione dei server, la prossima grande cosa è rendere tutto “più piccolo”.
La virtualizzazione dei server permette di “distribuire” un dispositivo fisico, consentendo a più sistemi operativi e a più applicazioni di attingere alla potenza di elaborazione sottostante.
Nella successiva evoluzione del computing, gli sviluppatori stanno suddividendo le applicazioni in microservizi più piccoli che funzionano in container leggeri e sta sperimentando il serverless computing (noto anche come function-as-a-service, FaaS).
In entrambi questi scenari, la VM viene completamente ignorata e il codice viene eseguito su bare metal.
Vantaggi della virtualizzazione dei server
I vantaggi della virtualizzazione dei server sono molteplici, a partire dal consolidamento dei server di base. È possibile combinare più applicazioni su un singolo componente hardware, riducendo così il numero totale di server richiesti nel data center. Meno server, meno rack, meno dispositivi di networking; questo si traduce in un risparmio di denaro su tutto, dallo spazio fisico ai costi di manutenzione fino all’aria condizionata.
La virtualizzazione server riduce la necessità di investire capitale in nuovo hardware, eliminando l’aggiornamento di hardware distribuito su diverse sedi. E permette di ridistribuire velocemente i server non appena si rendono disponibili.
Un tempo gli amministratori di data center dovevano eseguire il provisioning dei server a mano. Con la virtualizzazione sono arrivati i progressi nell’automazione, che consente di avviare una VM in pochi secondi e spostare più carichi di lavoro con il semplice tocco di un pulsante in risposta alle mutevoli esigenze aziendali.
La virtualizzazione dei server offre anche l’alta disponibilità, il failover, la velocità, la scalabilità, l’agilità, le prestazioni e la flessibilità richieste dalle odierne aziende altamente connesse al web.
E la virtualizzazione server è la tecnologia di base che consente ai provider di cloud computing di offrire i propri servizi. Quando un cliente si rivolge a un fornitore di servizi cloud per una infrastructure-as-a-service (IaaS), si parte con le macchine virtuali per poi aggiungere le funzionalità di storage, gestione e sicurezza necessarie per svolgere l’attività in questione.
I diversi tipi di virtualizzazione dei server
Nel linguaggio della virtualizzazione dei server il server fisico viene definito “host” ed esegue un sistema operativo host. Ogni VM è un “guest” e gestisce un sistema operativo guest. I guest sono separati l’uno dall’altro.
Nella la virtualizzazione standard tra il sistema operativo host e il sottostante livello hardware si trova un hypervisor, o virtual machine monitor (VMM), che fornisce le risorse necessarie ai sistemi operativi guest.
Leggi anche: Cos’è un hypervisor e quali sono le sue caratteristiche
La paravirtualizzazione e la virtualizzazione completa modificano il sistema operativo guest prima dell’installazione sulla macchina virtuale. Ciò migliora le prestazioni, in quanto il sistema operativo guest modificato comunica direttamente con l’hypervisor, eliminando il sovraccarico dell’emulazione.
La virtualizzazione a livello hardware tenta anche di ridurre il sovraccarico dell’hypervisor, ma lo fa attraverso le estensioni dell’hardware, piuttosto che le modifiche del software.
Con la virtualizzazione a livello di kernel anziché usare un hypervisor si esegue una versione separata del kernel Linux. Ciò semplifica l’esecuzione di più macchine virtuali su un singolo host, con un driver di dispositivo utilizzato per la comunicazione tra il kernel Linux principale e le macchine virtuali.
Infine, con la virtualizzazione a livello del sistema operativo è possibile eseguire ambienti multipli, ma logicamente distinti, su una singola istanza del kernel del sistema operativo. Con la virtualizzazione a livello di sistema operativo tutte le VM devono condividere la stessa copia del sistema operativo, mentre la virtualizzazione dei server consente a diverse VM di avere sistemi operativi diversi.
Macchine virtuali vs container
I due principali abilitatori dell’uso dei container sono Docker, uno strumento popolare per la rotazione dei container, e Kubernetes di Google, che aiuta a gestire più container. I container sono ambienti di esecuzione del codice autonomi, che condividono il kernel del sistema operativo host.
I container sono più snelli e leggeri rispetto alle macchine virtuali perché bypassano i sistemi operativi guest ridondanti e l’associato overhead di avvio. Rispetto alle macchine virtuali, è possibile eseguire da sei a otto volte più container sullo stesso hardware.
Leggi anche: Container: cosa sono e come funzionano
I container hanno i loro lati negativi. Come approccio relativamente nuovo, non hanno la ricchezza di strumenti di gestione che offre una tecnologia consolidata, quindi richiedono molto lavoro di installazione e manutenzione. Ci sono anche preoccupazioni per la sicurezza.
Leggo anche: Kubernetes: tutto quello che bisogna sapere sulla container orchestration
Con le macchine virtuali è possibile spostare facilmente i carichi di lavoro tra gli host utilizzando le immagini guest, ma le macchine bare metal sono più difficili da aggiornare o spostare.
Macchine virtuali vs serverless computing
In un tradizionale ambiente cloud IaaS i clienti preparano VM, storage, database e strumenti di sicurezza e gestione associati, e poi caricano le applicazioni sulle VM.
Con il serverless computing gli sviluppatori scrivono il codice e il provider di servizi cloud gestisce tutto il resto. Lo sviluppatore non deve mai pensare a server, sistemi operativi, provisioning o gestione. Naturalmente, esiste un server fisico che esegue il codice, ma sotto la responsabilità del provider di servizi.
Anziché essere un’applicazione monolitica, il codice è suddiviso in funzioni specifiche. Quando si verifica un evento che attiva una determinata funzione, il servizio serverless, per esempio Lambda di Amazon, la esegue. I provider serverless applicano tariffe in base alla funzione che si attiva.
Come per lo scenario microservice/container, il serverless computing ignora il livello della macchina virtuale e le funzioni vengono eseguite su bare metal. Allo stato attuale il serverless computing è relativamente immaturo e i casi di utilizzo sono limitati.
Il futuro della virtualizzazione server
Anche se i container sono già adottati e l’interesse per il serverless computing è in crescita, la realtà è che la virtualizzazione dei server è una tecnologia solida che alimenta la maggior parte delle applicazioni aziendali.
È difficile immaginare che un’impresa trasferisca senza problemi le sue applicazioni mission critical dalle macchine virtuali a container o piattaforme serverless. Gli utenti con ambienti eterogenei probabilmente useranno ancora le macchine virtuali, perché i container devono essere eseguiti tutti sullo stesso sistema operativo e non possono essere suddivisi tra Linux e Windows.
Tuttavia oggi gli sviluppatori hanno diverse scelte per le nuove applicazioni che vengono create con le ultime metodologie agile e DevOps. In futuro, gli sviluppatori prenderanno decisioni caso per caso sull’esecuzione di nuovi carichi di lavoro in una VM tradizionale, in un container o in un ambiente serverless.