Domanda

Recentemente il ronzio della virtualizzazione ha raggiunto il mio posto di lavoro dove gli sviluppatori hanno provato macchine virtuali sui loro computer. In precedenza ho sentito parlare da diversi sviluppatori sulla configurazione della macchina virtuale nei loro computer desktop per mantenere puliti i loro ambienti di sviluppo.

Esistono molti prodotti software per macchine virtuali sul mercato:

Sono interessato a sapere come usi la virtualizzazione in modo efficace nel tuo lavoro. La mia domanda è come si utilizzano le macchine virtuali per lo sviluppo quotidiano e per quale motivo?

È stato utile?

Soluzione

Ho appena costruito una vera macchina robusta a casa in modo da poter eseguire più macchine virtuali contemporaneamente. Il mio caso è probabilmente estremo, ma ecco la mia logica per farlo.

Test

Quando collaudo, in particolare un'app desktop, in genere creo più macchine virtuali, una per ogni piattaforma su cui dovrebbe funzionare il mio software (Windows 2000 / XP / Vista ecc.). Se sono disponibili versioni a 32 e 64 bit, ne costruisco anche una. Gioco anche con le impostazioni hardware della VM (ad es. Molta RAM, poca RAM, 1 core, 2 core, ecc.). Ho trovato un sacco di piccoli bug in questo modo, che sicuramente sarebbe arrivato allo stato selvatico se non avessi usato questo approccio.

Questo approccio semplifica anche la riproduzione con diversi scenari software (cosa succede se l'utente che installa il programma non ha .NET 3.5 sp1? Cosa succede se non ha un componente XXX? ecc?

sviluppo

Quando sviluppo, ho una VM che esegue i miei server di database (SQL2000 / 2005/2008). Questo per due motivi. Innanzitutto, è più realistico. In un ambiente di produzione la tua app probabilmente non è in esecuzione nella stessa casella del db. Perché non replicarlo quando si sviluppa? Inoltre, quando non sto sviluppando (ricorda che questa è anche la mia macchina di casa), devo davvero avere tutti quei servizi di database in esecuzione? Sì, potrei accenderli e spegnerli manualmente, ma è molto più facile accendere una VM.

Clienti

Se voglio mostrare a un client un po 'di lavoro sul web che ho fatto, posso mettere una sola VM nella DMZ e lui può accedere alla VM e giocare con il progetto web, mentre il resto della mia rete / computer è sicuro.

Compatibilità

Vista64 è ora la mia macchina principale. Qualsiasi hardware / software precedente che possiedo non funzionerà bene con quel sistema operativo. La mia soluzione è avere Windows XP 32 come VM per tutti questi elementi.

Altri suggerimenti

Ecco qualcosa che non è stato ancora menzionato.

Ogni volta che un progetto entra in modalità di manutenzione (aka abandonded), creo una VM con tutti gli strumenti, le librerie e il codice sorgente necessari per costruire il progetto. In questo modo, se dovessi tornare su di esso un anno dopo, non scommetterei un po 'nel culo da alcuno strumento o libreria aggiornata sulla mia workstation.

Quando ho iniziato con la mia attuale azienda, la maggior parte del personale di supporto / sviluppo / PM eseguiva Virtual PC con 1-3 VM sul desktop per i test.

Dopo alcuni mesi ho messo insieme una proposta e ora utilizziamo un server VMware ESXi che esegue un pool di macchine virtuali (tutte 24 ore su 24, 7 giorni su 7) con ambienti diversi per consentire al nostro personale di supporto di testare i problemi dei clienti e riprodurli. Abbiamo macchine virtuali di Windows 2000 / XP / Vista con ciascuna di Office 2000/2002/2003/2007 installata (quindi sono 12 macchine virtuali) più alcune macchine virtuali di prova più generali, alcune macchine Server 2003/2008 che eseguono Citrix, Servizi terminal, ecc. Fondamentalmente il più delle volte quando colpiamo una nuova configurazione del cliente che dobbiamo eseguire il debug, ed è probabile che anche altri clienti abbiano quella configurazione, imposterò una macchina virtuale per essa. (ad esempio, al momento stiamo utilizzando solo tre VM a 64 bit, principalmente a 32 bit)

Inoltre, lo stesso server esegue una macchina virtuale XP che utilizzo per la creazione di programmi di installazione (InstallShield, WiX) di debug (VS 2005) e localizzazione (Lingobit), nonché una seconda macchina virtuale utilizzata dai nostri sviluppatori per i test automatizzati (TestComplete ).

Alla VM di sviluppo e installazione è stata assegnata una priorità più elevata e sono entrambi configurati come VM a doppia CPU con memoria da 1 GB. Le VM rimanenti hanno uguale priorità e 256-1 Gb RAM.

Tutto funziona su un Xeon dual-quad-core con 8Gb di RAM con ESXi e raid hardware (4x1Tb RAID10)

Per poco più di 2,5 milioni di dollari di investimenti abbiamo migliorato la produttività di 10 volte (immagina i tempi di inattività mentre un deficiente dell'assistenza installa una versione precedente di Office sul desktop per replicare un problema del cliente o il tempo che non posso usare il mio desktop perché stiamo costruendo programmi di installazione). Il prossimo passo sarà raddoppiare la RAM a 16 Gb man mano che aggiungiamo più VM Server 2008 e Vista affamate di memoria.

Abbiamo ancora la VM dispari sui nostri desktop (ho versioni localizzate di Windows, Ubuntu e Windows 7 in esecuzione su VMware Workstation per esempio) ma le configurazioni comunemente usate pesantemente sono state scaricate su un server dedicato che possiamo tutto in remoto si connette a. Molto, molto più facile.

La virtualizzazione (con snapshot o dischi non persistenti) è davvero utile per testare l'installazione del software in una configurazione pulita nota (ovvero non è rimasto nulla rispetto alle precedenti installazioni errate del software).

Avere la tua casella di sviluppo su un singolo file (con una Macchina Virtuale) renderà molto più semplice il backup e il ripristino se si verifica un problema.

Oltre a ciò, puoi anche portare la tua scatola di sviluppo portatile su macchine diverse, dal momento che non sei limitato a quella singola macchina particolare su cui di solito lavori.

Non solo, ma puoi testare su diversi sistemi operativi contemporaneamente, con un singolo sistema operativo installato su ogni file di macchina virtuale che hai.

Credetemi, questo risparmierà una seccatura nel fare i lavori di cui sopra.

Un altro caso utile per le macchine virtuali è la creazione di una rete virtuale di macchine. Ad esempio, è possibile visualizzare i computer che eseguono i diversi livelli dello stack dell'applicazione, ciascuno in esecuzione nella propria VM. Pensalo come un datacenter di un povero.

Queste VM possono anche apparire disponibili sulla tua rete fisica, quindi puoi usare RDP o simili per ottenere una sessione di terminale remoto con loro.

Puoi avere una macchina robusta (molta memoria) che esegue queste macchine virtuali, mentre puoi accedervi da remoto da un'altra macchina come un laptop o qualsiasi macchina tu abbia con lo schermo migliore.

Uso una VM in Windows per eseguire Linux. Anche se esiste già una versione di emacs per Windows, usarlo in Linux è più gratificante per qualche motivo.

Manutenzione di computer archiviati

Ho la situazione in cui le scuole nella mia regione sono chiuse ma il loro sistema finanziario deve essere mantenuto per un massimo di 2 anni per garantire che tutte le fatture in sospeso vengano pagate. Questo veniva gestito gestendo l'hardware delle mothballed scuole che avevano dei problemi:

  • Questo sprecò risorse hardware scarse e occupò molto spazio fisico.
  • I funzionari finanziari dovevano essere fisicamente presenti all'hardware per lavorare su ciascun sistema.

Oggi ospito ogni scuola di falena sulla propria scatola virtuale all'interno di un singolo host fisico. Ogni singolo sistema è accessibile tramite rdp sul numero IP dell'host, ma con il proprio numero di porta e la sicurezza originale di ogni scuola viene mantenuta.

I funzionari finanziari ora possono lavorare sulle scuole di falena senza dover recarsi dove si trovano fisicamente, c'è più spazio fisico nella sala server e il backup di tutte le scuole di falena contemporaneamente è un semplice processo automatizzato.

Con ogni scuola mothballed nella propria vbox non c'è modo di contaminare i dati tra sistemi. Anche molte migliaia di dollari di hardware vengono liberati per la ridistribuzione.

La virtualizzazione sembra essere la soluzione perfetta a questo problema.

Ho usato l'approccio di virtualizzazione utilizzando VMWare Server quando l'attività che avevo di fronte era testare un ambiente cluster di WebSphere Application Server. Dopo aver configurato VMWare Server ho creato una nuova macchina virtuale e ho eseguito tutte le installazioni software di cui avrei bisogno come WebSphere App Server, Oracle, WebSphere Commerce ecc., Dopo di che ho spento la VM e copiato l'immagine del disco rigido virtuale in due diversi file, uno come macchina virtuale clone e l'altro come backup.

Ho creato una nuova macchina virtuale e assegnato una delle immagini del disco copiate, quindi ora ho due sistemi operativi che mi hanno permesso di testare lo stesso scenario di un ambiente cluster. Ho scattato un'istantanea della VM tramite VMware e se avessi cercato su qualsiasi attività avrei ripristinato le modifiche all'istantanea scattata andando così allo stato precedente e aumentando la mia produttività invece di dover scoprire cosa invertire. L'immagine del disco di backup può essere utilizzata anche se devo ripristinare uno stato molto vecchio, anziché dover ricominciare da capo.

La funzionalità di istantanea che esiste sia in VMWare che nel Virtual PC / Server di Microsoft è abbastanza buona da considerare la virtualizzazione per scenari in cui si pensa che si possano fare cambiamenti di rotta, che potrebbero non essere così facili da ripristinare.

Da quello che so, non c'è niente come Parallels su Mac, ma piuttosto per lavoro invece di test.

L'integrazione (con "coerenza", la tua VM non è in esecuzione "in una finestra" del tuo sistema host, tutti i programmi nel sistema guest hanno la propria finestra nel sistema host) è splendida e ti riempiamo tutto ( TUTTI! ) spazi vuoti:
Il mio collega ha configurato che Outlook (non c'è niente come Outlook per MacOsX) in Windows si apre quando fa clic su un link "mailto:" su una pagina Web, naviga con Firefox su Mac!
Nell'altra direzione, se riceve un PDF, fa doppio clic sull'allegato in Outlook (in Windows) che apre il file PDF nel visualizzatore di PDF con build Mac.

VirtualBox offre anche questa possibilità di separazione delle finestre (almeno quando Windows è in esecuzione nella VM su Linux), che è davvero utile per il lavoro.

Ovviamente per i test ecc. non esiste nulla di simile a un ambiente ben separato.

Abbiamo un server fisico dedicato all'hosting di macchine virtuali nel nostro ambiente di sviluppo. Le macchine virtuali vengono implementate e demolite su base regolare e vengono utilizzate per testare software in ambienti operativi standard noti.

È anche molto utile quando vogliamo che un'applicazione venga eseguita su un dominio diverso dall'ambiente di sviluppo.

Inoltre, l'organizzazione per cui sto lavorando è in fase di pianificazione per creare un ampio banco di prova virtuale. Questa sarà una grande griglia di macchine, posizionata sulla propria rete, e tutto il personale interno delle organizzazioni, i contraenti e i fornitori di terze parti saranno in grado di mettere in scena il loro software a scopo di test prima dell'implementazione nell'ambiente di produzione. Le macchine virtuali rifletteranno le macchine fisiche nell'ambiente di produzione.

Sembra fantastico, ma tutti sono un po 'scettici: questa è un'organizzazione governativa ... La burocrazia e la burocrazia probabilmente lo trasformeranno in una grande perdita di tempo e denaro.

Se utilizziamo la macchina virtuale (vpc 2007, Virtual Server 2005, applicazione VMWare ecc.)

1.Possiamo eseguire più sistemi operativi (windows98,2000, XP, Vista, Windows Server 2003,2008, Windows 7 / linux / solaris) su un singolo server

2.Possiamo ridurre i costi hardware e amp; Data Center Space

3.Puoi ridurre potenza e amp; Costo del raffreddamento AC.

4.Possiamo ridurre le risorse di amministrazione,

5.Possiamo ridurre il costo dell'applicazione

6.Possiamo eseguire ADS / DNS / DHCP / Exchange / SQL / Sharepoint Server / File Server ... ecc

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top