Containers 101: containers versus virtual machines

Containers en Kubernetes: het zijn twee begrippen die de laatste jaren veelvuldig de revue passeren binnen IT-kringen. Veel bedrijven werken echter nog steeds met virtuele machines (VM’s), en stellen zichzelf de vragen: Wat zijn de verschillen tussen containertechnologie en de virtuele machines? En wat zijn de voordelen van containers in combinatie met een orchestratieplatform als Kubernetes? 

De eerste containers

De eerste containeroplossingen ontstonden uit de behoefte om in Unix en Linux procesisolaties te configureren. Een voorbeeld hiervan waren de zones in Sun Microsystems Solaris. Maar de technologie kwam pas echt aan het rollen toen de techgiganten Google en Netflix op zoek gingen naar manieren om hun enorme behoefte aan flexible demand op te vangen.

Netflix was er vroeg bij en besloot al in 2008 om alle workloads te migreren naar clouddienst Amazon Web Services (AWS). Een gewaagde en revolutionaire zet, aangezien vrijwel alle workloads van het bedrijf toen nog draaiden op virtuele machines. De traditionele VM-structuur plaatste Netflix echter voor uitdagingen en problemen die vroegen om een alternatieve aanpak.

De beperkingen van VM’s

Als het aankomt op het verwerken van grote en flexibele workloads hebben virtuele machines serieuze beperkingen. Groeit de vraag naar een applicatie of toepassing die u in een VM hebt gestopt? Dan moet u elke nieuwe versie weer onderbrengen in een nieuwe VM, inclusief besturingssysteem en hardware.

Het resultaat laat zich raden: enorme hoeveelheden data die heen en weer geschoven worden. Door de minimumvereisten van de VM verbruikt zelfs een lichte app die is verpakt in een virtuele machine veel rekenkracht en serverruimte. VM’s herbergen vaak vele gigabytes aan capaciteit die je wel moet installeren, maar in de praktijk eigenlijk niet gebruikt. Het gevolg: beperkingen op het gebied van mobiliteit en dichtheid. Daarnaast is het vaak lastig om volledige functionaliteit te garanderen tussen de verschillende softwarebibliotheken binnen de ontwikkelings-, test-, QA- en productie-omgevingen.

Legacy to Container

De voordelen van containers

Het werken met containers lost veel van de bovengenoemde problemen op en omzeilt de beperkingen van VM’s. Tijd om de belangrijkste voordelen van containers op een rijtje te zetten.

Meer workloads, minder ruimte

Containers gebruiken hetzelfde basisbesturingssysteem als de host, waardoor u niet steeds het hele besturingssysteem en de bijbehorende hardware van een toepassing in een nieuwe VM hoeft onder te brengen. 

Met containers is het dus mogelijk om delen van applicaties op compacte wijze te isoleren en gebruikt u alleen de resources die nodig zijn voor een specifieke functionaliteit of een bepaald (deel)proces. Een container bevat alleen de broodnodige onderdelen (dependencies) die nodig zijn om een applicatie goed en vlot te laten functioneren. U hoeft dus niet langer meerdere kopieën van een besturingssysteem te laten draaien. De voordelen zijn evident: meer efficiëntie, flexibiliteit en schaalbaarheid omdat er minder servers en serverkracht nodig zijn voor het bereiken van hetzelfde resultaat.

Soepele workflow

Containers hebben ook een positieve uitwerking op de workflow bij het ontwikkelen van een applicatie of toepassing. In plaats van een verzameling bibliotheken en binaries die terechtkomen op een server, bouwt de ontwikkelaar gewoon een container. Die wordt weergegeven als containerafbeelding. De afbeelding wordt vervolgens geüpload naar een container-register.

Het goede nieuws voor de workflow is dat een containerafbeelding een stuk kleiner (10-20 MB) is dan een VM-afbeelding (10 tot 20 GB). Dit betekent dat een applicatie, na een aantal tests, gelijk vanaf de laptop naar de productieomgeving doorgezet kan worden. Deze werkwijze past prima binnen het plaatje van continuous integration en moderne ontwikkelingspijplijnen. Ontwikkelen gaat snel en soepel door het afschalen en beter benutten van resources

Wereldwijde toepassing

Een groot voordeel van container-registers is dat ze wereldwijd inzetbaar zijn. Ze draaien in de cloud, terwijl de beperkte grootte van containers het mogelijk maakt om de inhoud snel en gemakkelijk met meerdere mensen te delen. Afhankelijk van voorkeur en behoefte kun je kiezen voor een privaat of publiek register. AWS en Microsoft bieden beide opties aan op hun cloudplatforms.

Containertechnologie optimaliseren met Kubernetes

Kubernetes is helemaal geoptimaliseerd voor het beheren van grote groepen containers. Een van de belangrijkste functionaliteiten die het platform bezit is de mogelijkheid om pods (een pod is een omhulsel waarbinnen zich meerdere containers bevinden) automatisch te schalen op basis vooraf gedefinieerde resources als bijvoorbeeld, CPU-gebruik.

kubernetes

Containers en Kubernetes met ACC ICT

Het vervangen van VM’s door containers heeft dus nogal wat voordelen. Het managen van grote workloads wordt gemakkelijker, waardoor ontwikkelprocessen soepeler verlopen. Wilt u meer weten over containertechnologie of gaan werken met Kubernetes? Neem dan gerust vrijblijvend contact met ons op of neem deel aan een van onze masterclasses Kubernetes. Bij ACC ICT hebben we uitgebreide kennis van en ervaring met containertechnologie.