Worden virtuele machines ingepakt door containers?

Het tijdperk van virtualisatie is zeker nog niet ten einde, maar een nieuw tijdperk breekt al weer aan: het tijdperk van containerisatie. Deze blog gaat dieper in op containerisatie en de gevolgen die dit kan hebben voor virtualisatie.

Wat is containerisatie?
Containerisatie biedt functionaliteit aan in de vorm van containers. Een container is een volledig zelfstandig opererende functionaliteit. Elke container draait volledig geïsoleerd van andere containers, maar alle containers samen delen op een veilig manier dezelfde computer resources. En dit zonder de overhead van een hypervisor. Bij virtualisatie draait er binnen elke virtuele machine een besturingssysteem en virtuele hardware. Omdat op een hostsysteem meestal tien of meer virtuele machines draaien, levert dit ook de overhead van tien of meer besturingssystemen met bijbehorende virtuele hardware op. Bij containerisatie is dit niet het geval. Containers hebben veel minder diskruimte en computer resources nodig. Er kunnen dan ook veel meer containers op hetzelfde hostsysteem draaien dan virtuele machines.

De voordelen van containerisatie
Containerisatie biedt een aantal voordelen ten opzichte van virtualisatie, zoals:

  • Onafhankelijkheid: Containers zijn onafhankelijk van specifieke platformen. Dit is vooral van belang als workloads in containers draaien bij publieke cloudproviders. Door gebruik van containers kunt u cloudprovider onafhankelijk werken. Gaat uw cloudprovider failliet, is een concurrerende cloudprovider goedkoper? U kunt eenvoudig containers verplaatsen van de ene cloudprovider naar de andere cloudprovider. Maar ook binnen uw eigen private cloud biedt deze onafhankelijkheid grote voordelen. Tijdrovende migratietrajecten behoren tot het verleden.
  • Isolatie: containers draaien volledig geïsoleerd van andere containers en van de buitenwereld. Containers gebruiken een intern IP-adres dat niet benaderbaar is. Alleen de services die benaderbaar moeten zijn, worden gepubliceerd voor de buitenwereld. Dit levert extra veiligheid op.
  • Snelle uitrol en opstart: omdat containers klein zijn en geen besturingssysteem starten, kan een container heel snel uitgerold worden en start een container binnen één seconde op. Als de load plotseling toeneemt, is het bijschakelen van extra containers voldoende om binnen één seconde weer voldoende capaciteit beschikbaar te hebben.

Applicatie-eisen
Containerisatie biedt veel voordelen t.o.v. van virtualisatie. Maar containers zijn zeker niet het antwoord op alles. Virtualisatie biedt de mogelijkheid om alle soorten applicaties te draaien. Dit is niet het geval bij containerisatie. Een applicatie moet aan de volgende eisen voldoen om in een container te kunnen draaien:

  • De functionaliteit van de applicatie kan onderverdeeld worden in verschillende componenten
  • Elke component draait zelfstandig, zonder afhankelijkheden met andere componenten
  • Elke component communiceert met de andere componenten door middel van externe API’s, zoals de RESTful API’s
  • Applicatie configuratie vindt plaats door middel van een gedistribueerde configuratiedatabase
  • Applicaties maken gebruik van scale-out en niet van scale-up (horizontaal schalen i.p.v. verticaal schalen)

Applicaties die veel computerresources nodig hebben, zoals databases, zijn minder geschikt om te draaien in containers. Dit soort applicaties kan beter draaien op een bare-metal server of virtuele machine waarbij scale-up mogelijk is.

Gaat containerisatie de wereld veroveren?
Containerisatie zal de wereld niet gaan veroveren, in ieder geval niet op korte termijn. Het beheer van virtualisatie is veel verder ontwikkeld. Producten zoals VMware’s vCenter en Microsoft’s System Center Virtual Machine Manager bieden een rijk scala aan geavanceerde beheermogelijkheden voor enterprise infrastructuren, zoals live migratie en hoog beschikbare clusters. Voor containerisatie is nog niets vergelijkbaars, hoewel Google, Redhat, CoreOS, IBM en Microsoft aan het werken zijn aan het open-source container beheersysteem Kubernetes. Op termijn kan dit evolueren naar een beheersysteem waar een enterprise infrastructuur behoefte aan heeft.
Daarnaast is niet elke applicatie even geschikt om te draaien in een container. De techniek zal echter steeds volwassener worden en zeker een deel van de virtualisatie vervangen. Het tijdperk van virtualisatie is daarmee zeker nog niet ten einde, maar het tijdperk van de containerisatie is zeker al gestart.

De toekomst start vandaag. Gaat u mee?

3 juni 2015
Ronald van Vugt