17-09-2012

Ik werk nu ongeveer 2 jaar met gevirtualiseerde ontwikkelomgevingen, hier een kort overzicht hoe dat werkt. Er lijken niet direct voordelen te zitten in het werken met virtuele omgevingen, waarom dan wel de moeite nemen voor een meer complexe installatie, het werken met verschillende OS’s en het verlies van performance. De belangrijkste rede is flexibiliteit, ik kan nu alle denkbare configuraties maken zonder extra hardware.

Ik heb in het verleden al eerder met OS virtualisatie gewerkt, maar dan vooral in server test trajecten. Het ontwikkelen van de webapplicatie gebeurde toch op een client of development systeem dat redelijk statisch was, met weinig mogelijkheden om dit aan te passen op OS nivo aan de uiteindelijke productie omgeving. Als je in een vroeg stadium al rekening kan houden met de uiteindelijke server(s) configuratie(s) kan dat doorloop tijd op leveren, maar maakt ook de inzet van open source systemen eenvoudiger.

 

Hoe werkt het? Neem een hardware systeem met flink wat resources, voldoende intern geheugen en schijfruimte is belangrijk. Installeer een host OS, ik gebruik een zo kaal mogelijk Ubuntu OS. Installeer de virtualisatie software en creëer een paar default virtuele machines van verwachte veel gebruikte OS systemen. De standaard OS installatie zal in de meeste gevallen extra aanpassingen nodig hebben om goed te werken met alle hardware in de virtuele omgeving. Dit vormt de basis van een flexibel ontwikkel desktop systeem. Ik gebruik 2 virtuele machine (VM) als klassieke desktop systemen. De eerste een up to date Windows systeem voor dagelijkse handelingen (mail, internet, office, etc), ten tweede een Ubuntu systeem voor de door mij geprefereerde ontwikkelomgeving. Daarnaast heb ik in de loop van de tijd een 10 tal VMs gemaakt voor specifieke projecten. Meestal op basis van de eerder gemaakte standaard VMs. Na een dergelijk project kan de VM gearchiveerd of zelfs overgezet worden naar een test / productie omgeving.

Is het werkbaar en levert het voordelen op? Ja, ik bent zeer tevreden met het resultaat. Ik kan in een vroeg stadium aansluiten bij de systemen die mijn klanten gebruiken. Bij het testen en inzetten van nieuwe software kan ik dit doen in een afgebakende omgeving zonder dat mijn reguliere desktop hier last van heeft. Er zijn zeker ook nadelen, de belangrijkste is wel dat je vaker gedwongen wordt software installatie op meerdere VMs moet uitvoeren, ook is het gebruik van een centrale locatie van je data bestanden noodzakelijk. Verder wordt je desktop een soort mini server park, wat extra systeem beheer problemen kan geven. Dat is dan weer heel leerzaam voor een web ontwikkelaar.