Bij Dharma. ontwikkelen we allerlei soorten websites voor verschillende platformen in verschillende talen. Maar hoe zorgen wij ervoor dat een ontwikkelaar kan werken op het door de klant gekozen (of door ons aanbevolen) gewenste platform, en ook de configuratie zoveel mogelijk aansluit bij de uiteindelijke webserver van een gekozen hosting partij?

De oplossing

Hiervoor gebruiken we virtuele machines. Met virtuele machines virtualiseren wij zo veel als mogelijk de uiteindelijke webserver configuratie van de klant. In vrijwel alle gevallen werken wij met Linux als basis. Maar niet al onze ontwikkelaars in-huis hebben een Linux machine. We hebben ook ontwikkelaars die werken met Windows of OSX en wil je daarnaast voor de continuïteit in een afgeschermde omgeving werken. De oplossing is het gebruik van een virtuele machine.

Wat is een virtuele machine?

Virtuele Machines zijn gevirtualiseerde computers die d.m.v. een softwarepakket draaien op je eigen machine (computer). De software die wij hiervoor gebruiken is het opensource pakket VirtualBox. De software, -gratis-, is zowel beschikbaar voor Windows, Linux en Mac. Met VirtualBox maak je een virtuele harde schijf aan (waar het gewenste besturingssysteem, in dit geval Linux, op komt te staan), en stel je in hoeveel geheugen en processoren aanwezig moeten zijn. Vervolgens druk je op Run en krijg je, -zoals met een nieuwe computer zonder besturingssysteem-, een zwart scherm met een melding dat er geen besturingssysteem geïnstalleerd is.

En dan?

Dan installeer je een besturingssysteem naar keuze. Veel webservers zijn uitgerust met Ubuntu, dus ook dit OS (Operating System) kan gewoon worden geïnstalleerd op onze virtuele machine. Je hebt dus gewoon op je “host” OS een venster met hierin een “gecontroleerde speeltuin”. Verpest je de Linux installatie? Geen probleem! Je kan de virtuele machine gewoon verwijderen en opnieuw beginnen. Ook kan je de staat van een virtuele machine opslaan en later terugkeren naar dit punt. Denk aan een situatie waarin de installatie van een willekeurig exotisch software pakket die ervoor zorgt dat Linux niet meer opstart of andere pakketten niet meer (goed) functioneren. Dan kan je de eerder opgeslagen staat van vóór de installatie van de software gewoon oproepen en kan je vanaf dat punt opnieuw proberen en verder puzzelen. Ook kan je met een virtuele machine verbinding maken met het internet door een virtuele netwerkkaart toe te voegen aan je virtuele systeem. Deze netwerkkaart maakt via jouw eigen “host” verbinding met internet. Zo kan je ook gewoon updates installeren op je virtuele machines (want *kuch* updates zijn niet virtueel ????)

Meer dan 1 virtuele machine

Ook dat kan, je kan meerdere virtuele machines draaien op je PC. Hou er dan wel rekening mee dat de performance van je PC natuurlijk gedeeld is met deze virtuele machines. Het leuke is dat de virtuele machines onderling ook gewoon via het netwerk kunnen communiceren met elkaar. (Niet dat dat altijd nodig is bij het ontwikkelen van een website of applicatie voor de klant, maar het is handig om te weten).

Virtuele machines IN virtuele machines?

Wie de film Inception(Leonardo DiCaprio, 2010) heeft gezien zal aan deze film denken bij de vraag of virtuele machines in virtuele machines kunnen opereren. Theoretisch kan dit natuurlijk, maar in de praktijk ligt het even net wat anders. Om een virtuele machine te kunnen laten werken gebruikt het jouw processor. De softwarematige (VirtualBox) laag hiertussen kost enorm veel performance. Om deze laag tot een minimum (lees: acceptabel) te beperken is er vaak hardwarematige support voor virtualisatie in jouw processor, maar deze hardwarematige support is natuurlijk nooit aanwezig op virtuele processoren (software is geen hardware). Zodoende kan je nooit van performance genieten als een virtuele machine in een virtuele machine zou draaien. Daarnaast is het ook niet mogelijk om 64-bit besturingssystemen als virtuele machine binnen een virtuele machine te installeren, omdat VirtualBox voor de meeste virtuele machines juist die hardwarematige ondersteuning nodig heeft. Een 32-bits virtuele machine in een virtuele machine zou dan wel mogelijk zijn, maar ook hier lever je weer veel performance in. Een situatie die je liever niet wilt. Dus theoretisch: Ja, maar in de praktijk: Vermijd dit idee.

Nerdtalk: Vagrant en PuPHPet.com voor ontwikkelaars

Natuurlijk zijn er voor ontwikkelaars allerlei manieren hoe je sneller een virtuele Linux installatie beschikbaar kan maken op je systeem waarbij je binnen een kwartier al kan beginnen in een eigen virtuele omgeving. Voor het snel uitrollen van een Ubuntu installatie gebruiken wij Vagrant. Omdat de wensen van de klant bij hosting nog wel eens verschillen gebruiken we het open-source project PuPHPet om snel Vagrant configuraties klaar te hebben. Deze configuraties (in de vorm van een ZIP bestand) kan je makkelijk delen met andere ontwikkelaars. Pak de ZIP file uit, roep Vagrant up vanuit je CLI en je virtuele machine start.

Aan de slag!

Voor de wat meer technische lezers is dit hét moment om aan de slag te gaan en de wereld van virtualisatie eens nader te bekijken. Voor welk doel ga jij deze kennis inzetten? Laat het me weten op Dit e-mailadres wordt beveiligd tegen spambots. JavaScript dient ingeschakeld te zijn om het te bekijken.