Sommario
Se lavorate nell'industria del software o nei suoi dintorni, avrete probabilmente sentito parlare di macchine virtuali; in caso contrario, vi starete chiedendo cosa siano e a cosa servano.
In qualità di ingegnere del software, utilizzo quotidianamente le macchine virtuali, potenti strumenti per lo sviluppo del software, ma anche per altri usi. Conosciute anche come macchine virtuali, molte aziende le utilizzano per la loro flessibilità, affidabilità ed economicità; inoltre, prevengono i disastri causati dai test del software in corso.
Vediamo cosa sono le macchine virtuali e perché vengono utilizzate.
Che cos'è una macchina virtuale?
Una macchina virtuale è un'istanza di un sistema operativo (OS) come Windows, Mac OS o Linux in esecuzione all'interno dell'OS principale di un computer.
In genere, viene eseguita in una finestra app sul desktop. Una macchina virtuale ha tutte le funzionalità e si comporta come un computer o una macchina separata. In sostanza, una macchina virtuale è un computer virtuale in esecuzione all'interno di un altro computer noto come macchina host.
Immagine 1: Macchina virtuale in esecuzione su un computer portatile.
Una macchina virtuale non dispone di hardware (memoria, disco rigido, tastiera o monitor), ma utilizza l'hardware simulato della macchina host. Per questo motivo è possibile eseguire più macchine virtuali, dette anche "guest", su una singola macchina host.
Immagine 2: Macchina host che esegue più macchine virtuali.
L'host può anche eseguire più macchine virtuali con sistemi operativi diversi, tra cui Linux, Mac OS e Windows. Questa capacità dipende da un software chiamato hypervisor (vedere l'immagine 1). L'hypervisor viene eseguito sulla macchina host e consente di creare, configurare, eseguire e gestire macchine virtuali.
L'hypervisor alloca lo spazio su disco, pianifica il tempo di elaborazione e gestisce l'utilizzo della memoria per ogni macchina virtuale. Questo è ciò che fanno applicazioni come Oracle VirtualBox, VMware, Parallels, Xen, Microsoft Hyper-V e molte altre: sono hypervisor.
Un hypervisor può essere eseguito su un computer portatile, un PC o un server e rende disponibili le macchine virtuali al computer locale o agli utenti distribuiti in rete.
Diversi tipi di macchine e ambienti virtuali richiedono diversi tipi di hypervisor. Vediamone alcuni.
Tipi di macchine virtuali
Macchine virtuali di sistema
Le macchine virtuali di sistema, talvolta chiamate virtualizzazione completa, sono eseguite da un hypervisor e forniscono le funzionalità di un sistema informatico reale. Utilizzano il sistema operativo nativo dell'host per gestire e condividere le risorse di sistema.
Le macchine virtuali di sistema spesso richiedono un host potente con CPU veloci o multiple, grandi quantità di memoria e tonnellate di spazio su disco. Alcune, che vengono eseguite su computer personali o portatili, potrebbero non richiedere la potenza di calcolo di cui hanno bisogno i grandi server virtuali aziendali; tuttavia, funzioneranno lentamente se il sistema host non è adeguato.
Elaborazione di macchine virtuali
Le macchine virtuali di processo sono molto diverse dalle SVM: è possibile che siano in esecuzione sulla vostra macchina senza saperlo. Sono note anche come macchine virtuali applicative o ambienti runtime gestiti (MRE). Queste macchine virtuali vengono eseguite all'interno di un sistema operativo host e supportano applicazioni o processi di sistema.
Perché utilizzare un PVM? Eseguono servizi senza dipendere da sistemi operativi o hardware specifici. Hanno il loro piccolo sistema operativo con solo le risorse necessarie. Il MRE si trova in un ambiente separato; non importa se viene eseguito su Windows, Mac OS, Linux o qualsiasi altra macchina host.
Una delle macchine virtuali di processo più comuni è quella che probabilmente avete già sentito nominare e che potreste aver visto in esecuzione sul vostro computer: si tratta di una macchina utilizzata per l'esecuzione di applicazioni Java, chiamata in breve Java Virtual Machine o JVM.
Tipi di Hypervisor
La maggior parte delle macchine virtuali di cui ci occupiamo utilizza un hypervisor perché emula un intero sistema informatico. Esistono due tipi diversi di hypervisor: gli hypervisor Bare Metal e gli hypervisor Hosted. Diamo una rapida occhiata a entrambi.
Hypervisor Bare Metal
I BMH possono anche essere chiamati hypervisor nativi e vengono eseguiti direttamente sull'hardware dell'host, invece di essere eseguiti all'interno del sistema operativo dell'host. Di fatto, prendono il posto del sistema operativo dell'host, pianificando e gestendo l'uso dell'hardware da parte di ogni macchina virtuale, eliminando così l'"uomo di mezzo" (il sistema operativo dell'host) nel processo.
Gli hypervisor nativi sono normalmente utilizzati per le macchine virtuali aziendali su larga scala, che le aziende utilizzano per fornire ai dipendenti risorse server. Microsoft Azure o Amazon Web Services sono macchine virtuali ospitate su questo tipo di architettura. Altri esempi sono KVM, Microsoft Hyper-V e VMware vSphere.
Hypervisor ospitato
Gli hypervisor host vengono eseguiti su sistemi operativi standard, proprio come qualsiasi altra applicazione eseguita sulle nostre macchine. Utilizzano il sistema operativo dell'host per gestire e distribuire le risorse. Questo tipo di hypervisor è più adatto ai singoli utenti che hanno bisogno di eseguire più sistemi operativi sulle loro macchine.
Queste includono applicazioni come Oracle VirtualBox, VMware Workstations, VMware Fusion, Parallels Desktop e molte altre. Potete trovare informazioni più dettagliate sugli hypervisor ospitati nel nostro articolo, Miglior software per macchine virtuali.
Perché usare le macchine virtuali?
Ora che avete una conoscenza di base di cosa sia una macchina virtuale, probabilmente vi verranno in mente alcune applicazioni eccellenti. Ecco alcuni dei motivi principali per cui le persone utilizzano le macchine virtuali.
1. Economico
Le macchine virtuali sono efficaci dal punto di vista dei costi in numerose situazioni. Una delle più importanti è il mondo aziendale. L'utilizzo di server fisici per fornire risorse ai dipendenti può essere molto costoso. L'hardware non è economico e la manutenzione è ancora più costosa.
L'uso di macchine virtuali come server aziendali è ormai diventato la norma. Con le macchine virtuali di un provider come MS Azure, non ci sono acquisti iniziali di hardware e non ci sono costi di manutenzione. Queste macchine virtuali possono essere impostate, configurate e utilizzate per pochi centesimi all'ora. Possono anche essere spente quando non vengono utilizzate e non comportano alcun costo.
L'utilizzo di una macchina virtuale può anche essere un enorme risparmio di denaro. Se dovete lavorare con più sistemi operativi o con diverse configurazioni hardware, potete
utilizzare più macchine virtuali su un unico host, senza dover acquistare un computer separato per ogni attività.
2. Scalabile e flessibile
Che si tratti di server aziendali o di macchine virtuali in esecuzione sul vostro laptop, le macchine virtuali sono scalabili: è facile adattare le risorse alle vostre esigenze. Se avete bisogno di più memoria o spazio su disco, basta entrare nell'hypervisor e riconfigurare la macchina virtuale per averne di più. Non è necessario acquistare nuovo hardware e il processo può essere completato rapidamente.
3. Impostazione rapida
Ho avuto casi in cui avevo bisogno di configurare una nuova macchina virtuale, ho chiamato il mio collega che la gestisce e l'ho trovata pronta all'uso in meno di un'ora.
4. Ripristino di emergenza
Se state cercando di prevenire la perdita di dati e di prepararvi al ripristino in caso di disastro, le macchine virtuali possono essere uno strumento formidabile: sono facili da backuppare e possono essere distribuite in diverse sedi, se necessario. Se una terza parte, come Microsoft o Amazon, ospita le macchine virtuali, queste saranno fuori sede, il che significa che i vostri dati sono al sicuro se il vostro ufficio va a fuoco.
5. Facile da riprodurre
La maggior parte degli hypervisor consente di creare una copia, o immagine, di una macchina virtuale. L'imaging consente di creare facilmente riproduzioni esatte della stessa macchina virtuale di base per qualsiasi situazione.
Nell'ambiente in cui lavoro, forniamo a ogni sviluppatore una macchina virtuale da utilizzare per lo sviluppo e i test. Questo processo ci consente di disporre di un'immagine configurata con tutti gli strumenti e i software necessari. Quando facciamo l'onboarding di un nuovo sviluppatore, tutto ciò che dobbiamo fare è creare una copia di quell'immagine e il nuovo sviluppatore avrà a disposizione ciò che gli serve per lavorare.
6. Perfetto per Dev/Test
Uno dei migliori vantaggi dell'uso delle macchine virtuali è che sono uno strumento perfetto per lo sviluppo e il test del software. Le macchine virtuali consentono agli sviluppatori di sviluppare su più piattaforme e ambienti su un'unica macchina. Se la macchina virtuale viene danneggiata o distrutta, è possibile crearne rapidamente una nuova.
Ho lavorato a progetti in cui abbiamo creato script di test automatizzati che creano una nuova macchina virtuale, installano l'ultima versione del software, eseguono tutti i test richiesti e quindi eliminano la macchina virtuale al termine dei test.
Le macchine virtuali funzionano splendidamente per i test e le recensioni dei prodotti, come quelle che facciamo qui a SoftwareHow.com. Posso installare le applicazioni in una macchina virtuale in esecuzione sulla mia macchina e testarle senza ingombrare l'ambiente primario.
Quando ho finito di testare, posso sempre cancellare la macchina virtuale e crearne una nuova quando ne ho bisogno. Questo processo mi permette anche di testare su più piattaforme anche se ho solo una macchina Windows.
Parole finali
Come si può vedere, le macchine virtuali sono uno strumento versatile ed economico che può essere utilizzato per molte applicazioni. Non è più necessario acquistare, configurare e mantenere hardware costoso per fornire l'accesso al server a tester, sviluppatori e altri. Le macchine virtuali ci danno la flessibilità di creare facilmente e rapidamente i sistemi operativi, l'hardware e gli ambienti di cui abbiamo bisogno, in qualsiasi momento.