Virtualizzare anche un singolo server
Trovo molto comune, nelle conversazioni che coinvolgono la virtualizzazione, che il concetto di consolidamento, che nel contesto della virtualizzazione dei server si riferisce al collocare più carichi di lavoro un tempo fisici su un unico box fisico con la separazione gestita dalle barriere delle macchine virtuali, venga trattato come il principio cardine e la funzionalità fondamentale della virtualizzazione. Senza dubbio, il consolidamento dei carichi di lavoro rappresenta un'opportunità straordinaria con la virtualizzazione, ma è estremamente importante che il valore della virtualizzazione e il valore del consolidamento non vengano confusi. Troppo spesso ho riscontrato che il consolidamento viene visto come il valore chiave della virtualizzazione e la sua giustificazione principale, ma non è così. Il consolidamento è una funzionalità accessoria, ma non dovrebbe mai essere necessaria per giustificare la virtualizzazione. La virtualizzazione dovrebbe essere una conclusione pressoché scontata, mentre il consolidamento deve essere valutato e in molti casi non verrebbe utilizzato. Il fatto che i carichi di lavoro non debbano essere consolidati non dovrebbe mai portare a credere che tali carichi di lavoro non debbano essere virtuali. Vorrei esplorare lo spazio decisionale della virtualizzazione per vedere come dovremmo affrontare questo punto.
La virtualizzazione dovrebbe essere intesa come astrazione dell'hardware, poiché è davvero ciò che è, in senso pratico. La virtualizzazione incapsula l'hardware e presenta un set hardware prevedibile e immacolato ai sistemi operativi guest. Questo può sembrare che aggiunga complicazione ma, in realtà, semplifica molte cose sia per i produttori di sistemi operativi e driver sia per i professionisti IT che progettano i sistemi. È proprio perché i computer, le periferiche dei computer e i sistemi operativi sono bestie così complesse che questo livello aggiuntivo finisce in realtà per rimuovere complessità dal sistema creando interfacce standard. Dalla standardizzazione deriva la semplicità.
Questo identico concetto di presentare una macchina virtuale standard a un livello software esiste anche in altre aree dell'informatica, come nel modo in cui sono implementati molti linguaggi di programmazione. Si tratta di un modello di calcolo molto maturo e affidabile.
L'astrazione dell'hardware e la stabilità che essa apporta sono da sole motivo sufficiente per standardizzare la virtualizzazione su tutta la linea, ma la natura pratica dell'astrazione dell'hardware, così come implementata da tutti i prodotti di virtualizzazione enterprise oggi disponibili, ci porta funzionalità ancora più importanti. Per essere chiari, la maggior parte dei vantaggi della virtualizzazione può essere ottenuta in qualche altro modo, ma raramente in modo così completo, affidabile, semplice o gratuito come dalla virtualizzazione.
Il più ampio insieme di funzionalità aggiuntive proviene tipicamente dall'astrazione dello storage e della memoria, che consente la possibilità di effettuare snapshot dello storage o persino dell'intero stato di esecuzione di una macchina virtuale, ossia di prendere un'immagine del sistema in esecuzione e archiviarla in un file. Questa capacità conduce a molte funzionalità molto importanti, come la possibilità di effettuare uno snapshot del sistema prima di installare nuovo software, modificare configurazioni o applicare patch, consentendo rollback estremamente rapidi qualora qualcosa andasse storto. Questa funzionalità apparentemente di poco conto può tradursi in grande tranquillità e in un'affidabilità complessiva del sistema. Rende inoltre molto facile il test delle funzionalità e il rollback o il test ripetuto in ambienti non di produzione.
La capacità di effettuare snapshot a partire dal livello di astrazione conduce anche alla possibilità di effettuare “backup basati su immagine”, ossia backup effettuati tramite il meccanismo di snapshot a livello di dispositivo a blocchi anziché dall'interno del livello del file system del sistema operativo. Ciò consente meccanismi di backup agnostici rispetto al sistema operativo e backup che includono in un sol colpo l'intero pool di storage del sistema. I backup basati su immagine consentono ciò che tradizionalmente era noto come “bare metal restore” – l'intero sistema può essere ripristinato a uno stato pienamente operativo senza ulteriori interazioni – facilmente e molto rapidamente. Non tutti i produttori di hypervisor includono questa capacità o la includono a livelli equivalenti, quindi, sebbene concettualmente sia una funzionalità di primo piano, è fondamentale che la misura in cui questa funzionalità esiste o è coperta da licenza venga considerata caso per caso (in particolare HyperV la include pienamente, XenServer la include parzialmente e VMware vSphere la include solo con i livelli di licenza non gratuiti). Quando disponibili, i backup basati su immagine consentono un recupero estremamente rapido a velocità impensabili con altre metodologie di backup. Ripristinare i sistemi in pochi minuti è possibile, dal disastro al recupero!
La capacità di trattare le macchine virtuali come file (perlomeno quando non sono attivamente in esecuzione) offre ulteriori vantaggi correlati ai benefici di backup elencati sopra. In particolare, la capacità di migrare in modo rapido e semplice tra host fisici e persino di spostarsi tra hardware disparati. Tradizionalmente gli aggiornamenti o le sostituzioni dell'hardware comportavano un complicato processo di migrazione irto di insidie. Con la virtualizzazione moderna, passare dall'hardware esistente a un nuovo hardware può essere un processo affidabile e non distruttivo, con opzioni di fallback sicure e con poco o forse persino zero downtime! Operazioni poco comuni ma in passato molto rischiose possono oggi spesso diventare banali.
Spesso questo è il vero vantaggio della virtualizzazione e dei meccanismi di astrazione. Non è, necessariamente, migliorare le operazioni quotidiane di un sistema, ma ridurre il rischio e fornire flessibilità e opzioni in futuro. Prepararsi a imprevisti che sono o impredicibili o semplicemente ignorati nella maggior parte delle situazioni comuni. Raramente questo tipo di pianificazione viene fatto, con grande disappunto dei reparti IT che si ritrovano con aggiornamenti difficili e pericolosi che avrebbero potuto essere facilmente mitigati.
Ci sono molte funzionalità della virtualizzazione che sono applicabili solo a scenari particolari. Molti prodotti di virtualizzazione includono strumenti di live migration per spostare carichi di lavoro in esecuzione tra host, o possibilmente persino tra dispositivi di storage, senza downtime. Sono spesso disponibili opzioni di alta disponibilità e di fault tolerance, che consentono ad alcuni carichi di lavoro di recuperare rapidamente o persino in modo trasparente da un guasto dell'hardware di sistema, spostandosi dall'hardware guasto all'hardware ridondante senza l'intervento dell'utente. Pur essendo più un vantaggio di nicchia e di certo da non includere in un elenco delle ragioni per cui “quasi tutti i carichi di lavoro” dovrebbero essere virtuali, vale la pena segnalarlo come esempio primario di funzionalità che sono spesso disponibili e che potrebbero essere aggiunte in seguito qualora dovesse sorgerne il bisogno, a condizione che la virtualizzazione sia utilizzata fin dall'inizio. In caso contrario, sarebbe necessaria una migrazione alla virtualizzazione prima di poter sfruttare tali funzionalità.
I prodotti di virtualizzazione sono tipicamente dotati di numerose funzionalità aggiuntive che contano solo in determinati casi. Moltissime di esse ricadono in un ampio bacino di “in caso di necessità futura.” La più grande di tutte queste è forse il concetto di consolidamento, come avevo accennato all'inizio di questo articolo. Come altre funzionalità avanzate quali l'alta disponibilità, il consolidamento non è un valore fondamentale della virtualizzazione, ma viene spesso confuso con esso. I carichi di lavoro che non intendono sfruttare l'alta disponibilità o il consolidamento dovrebbero comunque essere virtualizzati – senza alcun dubbio. Ma queste funzionalità sono talmente potenzialmente preziose come opzioni future, anche per scenari in cui oggi non verranno utilizzate, che vale comunque la pena menzionarle.
Il consolidamento può essere estremamente prezioso ed è facile capire perché così tante persone presumano semplicemente che verrà utilizzato, dato che è così spesso così prezioso. La disponibilità di questa funzionalità, una volta che un'infrastruttura è in atto, è un punto chiave di flessibilità per gestire gli imprevisti dei carichi di lavoro futuri. Anche quando il consolidamento è del tutto superfluo oggi, c'è un'ottima probabilità, anche nelle più piccole aziende, che si rivelerà utile in un momento imprecisato del futuro. La virtualizzazione ci fornisce una copertura contro l'ignoto preparando i nostri sistemi alla massima flessibilità. Uno degli aspetti più importanti di qualsiasi decisione IT è gestire e ridurre il rischio. La virtualizzazione fa proprio questo.
La virtualizzazione riguarda la stabilità, la flessibilità, la standardizzazione, la gestibilità e il rispetto delle best practice. Non esiste alcun importante prodotto di virtualizzazione enterprise che non sia disponibile, perlomeno in qualche forma, gratuitamente oggi. Qualsiasi acquisto richiederebbe, naturalmente, un'attenta analisi del valore rispetto alla spesa. Tuttavia, con eccellenti opzioni enterprise attualmente disponibili gratuitamente da tutte e quattro le principali linee di prodotto in questo settore (Xen, KVM, HyperV e VMware vSphere), non abbiamo bisogno di effettuare alcuna analisi di questo tipo. Ci basta dimostrare che l'implementazione non è una scelta negativa.
Ciò che rende facile il processo decisionale è che, quando consideriamo il caso nominale – il minimo indispensabile che tutta la virtualizzazione enterprise fornisce, ossia il costo zero, l'astrazione, l'incapsulamento e i benefici basati sullo storage – scopriamo di avere un piccolo beneficio in praticamente tutti i casi, nessun aspetto negativo misurabile e un beneficio potenziale molto grande negli ambiti della flessibilità e della copertura contro le esigenze future. Questo ci lascia con una chiara vittoria e una semplice decisione: la virtualizzazione, essendo gratuita e di per sé essenzialmente priva di aspetti negativi, dovrebbe essere utilizzata in ogni caso in cui sia possibile (il che, a questo punto, significa essenzialmente tutti i carichi di lavoro). Funzionalità aggiuntive e non fondamentali, come il consolidamento e l'alta disponibilità, dovrebbero essere valutate separatamente e solo dopo che la decisione di virtualizzare è già stata consolidata. Nessuna mancanza di necessità di tali funzionalità estese suggerisce, in alcun modo, che la virtualizzazione non debba essere scelta in base ai suoi meriti propri.
Questa è semplicemente una spiegazione delle best practice del settore già esistenti, che da molti anni consistono nel virtualizzare tutti i potenziali carichi di lavoro. Non si tratta di una novità né di un cambio di direzione. Il solo fatto che la virtualizzazione su tutta la linea sia stata una best practice del settore per quasi un decennio dimostra quanto questa metodologia sia comprovata e accettata. Ci saranno sempre carichi di lavoro che, per un motivo o per l'altro, semplicemente non possono essere virtualizzati, ma questi dovrebbero essere molto pochi e sporadici e dovrebbero indurre a una revisione approfondita per scoprire il motivo per cui ciò avviene.
Nel decidere se virtualizzare o meno, l'approccio dovrebbe sempre essere quello di presumere che la virtualizzazione sia una conclusione scontata e discostarsene solo se una solida e difendibile ragione tecnica la rende impossibile. Quasi tutti gli argomenti contro la virtualizzazione provengono da una posizione di incomprensione, con la convinzione che il consolidamento, l'alta disponibilità, lo storage esterno, il costo delle licenze e altri concetti vagamente correlati o non correlati siano in qualche modo intrinseci alla virtualizzazione. Non lo sono e non dovrebbero essere inclusi in una decisione tra deployment virtuale e fisico. Sono elementi separati e dovrebbero essere valutati come opzioni separate.
Vale la pena notare che, poiché il consolidamento non fa parte della nostra matrice decisionale nel creare il valore di base per la virtualizzazione, tutte le ragioni che stiamo utilizzando si applicano allo stesso modo sia ai deployment uno a uno (ossia una singola macchina virtuale su un singolo dispositivo fisico) sia ai carichi di lavoro consolidati (ossia più macchine virtuali su un singolo dispositivo fisico). Non esiste alcuna situazione in cui un carico di lavoro sia “troppo piccolo” per essere virtualizzato. Semmai è il contrario: solo i carichi di lavoro più grandi, tipicamente con un'estrema sensibilità alla latenza, sono quelli in cui uno scenario di nicchia di non virtualizzazione esiste ancora come caso limite, ma anche questi casi stanno rapidamente scomparendo man mano che i miglioramenti nella latenza della virtualizzazione e nelle capacità complessive dei carichi di lavoro vengono perfezionati. Questi casi sono talmente rari e svaniscono così rapidamente che persino prendersi il tempo di menzionarli è probabilmente poco saggio, poiché suggerisce che le eccezioni, basate sulle esigenze di capacità, siano abbastanza comuni da meritare una valutazione, cosa che non è, specialmente non nel mercato SMB. Più piccolo è il carico di lavoro, più è ideale per la virtualizzazione, ma questo serve solo a ribadire che le piccole imprese, con singoli carichi di lavoro, sono il caso più ideale per la virtualizzazione su tutta la linea, anziché un'eccezione alle best practice, e non a suggerire che le aziende più grandi dovrebbero cercare esse stesse delle eccezioni.

