page header photo

mei 2016 Archieven

Over virtualisatie, virtuele machines en containers


Geplaatst door Ad thiers op 2016-05-04 16:22:54 | Permanente link | Categorie: Meta | Reacties: 0

Revolutie of evolutie?

Het is misschien teveel gezegd dat virtualisatie van alle tijden is, maar het heeft in de informatietechnologie zeker een hele lange traditie. Wat voorbeelden:

  • Virtual memory: we zijn er zo aan gewend dat we in moderne operating systemen doen alsof we meer geheugen hebben dan er daadwerkelijk in de vorm van RAM chips in de computer zitten. Als we een ander stukje geheugen willen adresseren dan voorhanden, dan wordt dat netjes vanaf disk ingelezen ('paging'). Bovendien doen we alsof we als eindgebruiker het volledige geheugen van de computer tot onze beschikking hebben, terwijl in werkelijkheid het geheugen verdeeld is met stukjes van alle gebruikers. De afbeelding naar een virtueel stuk aaneengesloten geheugen wordt gedaan door de memory managment unit.
  • Time sharing: je kunt met vele gebruikers / processen een computer delen, terwijl individueel elk proces doet alsof het alleen op die computer loopt. Onzichtbaar voor het proces is het dat het heel vaak van de CPU wordt verwijderd om plaats te maken voor een ander proces. Een proces 'denkt' dus dat ie de hele computer voor zichzelf heeft.
  • Als je er goed over nadenkt is ook de symbolic link een vorm van virtualisatie. In dit geval een virtueel bestand of directory.
  • Ook in netwerkland kennen we virtualisatie, bijvoorbeeld VLANs (Virtual Local Area Network), waarmee we op eenzelfde fysieke infrastructuur doen alsof er een kleiner netwerk is, dat de andere componenent niet ziet. Ook VPN's zijn een vorm van virtualisatie: er wordt een eigen netwerk geveinsd, dat in feite gebruik maakt van (publieke) netwerken.
  • NAS en SAN: ook op het gebied van storage speelt virtualisatie een grote rol. Servers worden gekoppeld met een SAN en krijgen virtuele disks toebedeeld, die feitelijk niet in de servers zitten en bovendien zijn opgebouwd met meerdere fysieke disks in een RAID set.
  • VDI: eindgebruikers kunnen virtuele PC's in het data center draaien en benaderen via een thin-client, tablet of PC. Deze Virtual Desktop Infrastructure (VDI) is voor UNIX- / Linux-gebruikers al heel lang beschikbaar middels het X-Window protocol, VNC en NX. Ook vanuit de Cloud (bijvoorbeeld Azure) worden virtuele desktops aangeboden.

Waarom introduceren we zoveel complexiteit?

Het wordt er qua beheer niet makkelijker op. We moeten ons deze technieken en standaarden aanleren en de infrastructuur onderhouden. Daar moet iets tegenover staan. Wat levert het op? Waarom doen we dit? In het kort: om te ontkoppelen. Daarmee verschaffen we ons flexibiliteit. Als de eerste stappen van de virtualisatie niet gezet waren, dan zaten we nu met computers waarop slechts 1 proces kan draaien.

Virtualisatie verhult de complexiteit van de (boze) buitenwereld. Het stelt ontwikkelaars in staat om hun applicatie voor een relatief eenvoudige omgeving te implementeren, zonder rekening te moeten houden met deze complexiteit.

Virtual Machines

Zo ook met de moderne loten aan de virtualisatieboom: virtual machines (VM's) en containers. Alhoewel, modern, zij bestaan al een hele tijd, maar zijn op dit ogenblik erg in zwang. Met VM's worden, zoals de naam al aangeeft machines (servers / computers) geƫmuleerd. Het voordeel is duidelijk: betere benutting van fysieke servers, omdat je er meerdere VM's op kunt hosten. Daarnaast is een groot voordeel, dat je een VM kunt verplaatsen naar een andere fysieke server, eventueel in een ander data center. Met andere woorden: flexibiliteit. Deze vorm van virtualisatie is inmiddels niet meer weg te denken en heeft zijn meerwaarde duidelijk aangetoond.

Containers

Container technologie is m.i. een vorm van applicatie-virtualisatie. In de Windows-wereld kennen we daarvoor AppSense, App-V en ThinApp. Het probleem dat applicatie-virtualisatie oplost is de verstrengeling van de geĆÆnstalleerde applicatie met het OS. Applicatie-virtualisatie ontkoppelt door alle benodigde componenten (libraries, configuratie, executables etc.) te bundelen. Meestal betreft het in deze context applicaties die op de desktop draaien. De term 'bubble' wordt veel gebruikt om de gebundelde componenten aan te geven. In de UNIX- / Linux-wereld wordt meestal de term container gebruikt en zijn de gevirtualiseerde applicaties doorgaans services die op een server draaien. Op dit ogenblik is Docker de belangrijkste speler op het gebied van containers. Met name het gemak om containers te maken en te beheren heeft erg bijgedragen aan de populariteit van Docker. Containers beogen hetzelfde als gevirtualiseerde applicaties op Windows: het ontkoppelen van de applicatie van het OS. Ze kunnen eenvoudig verhuizen naar een andere host, omdat ze alle afhankelijkheden gebundeld hebben en Docker zorgt ervoor dat netwerk-connectiviteit netjes geregeld is.

Gaandeweg worden de populaire virtualisatievormen gemeengoed. Je staat er niet eens meer bij stil dat er weer een virtualisatielaag is gelegd over de oude begrippen. Geen revolutie dus, maar evolutie. Benieuwd wat de volgende virtualisatie-hype gaat worden?!! De toekomst zal het leren...