Ga direct naar inhoud

Containers: de uitvinding van de eeuw

Capgemini
2019-12-12

Ja, de container is de uitvinding van de eeuw. De container heeft meer voor de groei van de wereldhandel gedaan dan alle handelsakkoorden in de afgelopen 50 jaar. De uitvinding van de 20ste eeuw. De container is uitgevonden door de Amerikaan Malcolm McLean in het midden van de vorige eeuw en de eerste standaardcontainer kwam in 1965 in Rotterdam aan. De kracht van de container is de standaardisering: iedere container heeft wereldwijd dezelfde eigenschappen, waardoor hij overal kan worden opgetild aan zijn hoeken. De kracht van de uitvinding is ook de eenvoud: een box met deuren aan de achterkant, van staal, goedkoop te produceren. We hebben het hier dus overduidelijk over de fysieke container. Zou de container technologie in de IT de uitvinding van de 21ste eeuw kunnen worden?  Goede kans hoor. Er zijn namelijk veel paralellen.

Containers in de IT technologie bieden een logisch verpakkingsmechanisme waarmee applicaties kunnen worden gescheiden van de omgeving waarin ze worden uitgevoerd.

Door een standaard verpakking kunnen applicaties consistent en ontkoppeld worden ingezet, ongeacht de doelomgeving. Van ontwikkellaptop tot cloud omgeving. Dat is een zeer welkome eigenschap.

Wat zijn applicatie containers ?

De meeste van ons zijn inmiddels goed bekend met gevirtualiseerde omgevingen. Een gast-besturingssysteem dat via een hypervisor op onderliggende hardware kan werken. Op deze wijze worden geïsoleerde besturingssystemen op hardware gedeeld.

In plaats van de hardware stack te virtualiseren, zoals bij de virtuele machines (VM’s) gebeurt, virtualiseren containers op het niveau van het besturingssysteem zelf.  Meerdere containers delen dan één besturingssysteem. Ze delen de kernel, zijn kleiner, starten veel sneller en gebruiken vaak maar een fractie van het geheugen. Een container biedt de mogelijkheid om een applicatie met zijn ‘runtime’ omgeving, inclusief configuratie bestanden en bibliotheken, te verpakken. Dit gebeurt met een vaste indeling en vooraf bepaald formaat.

Formaten en standaarden

Er zijn op dit moment in de markt verschillende containerformaten beschikbaar. Het meest bekende en geaccepteerde formaat is nu Docker. De Docker image is een populaire open-source container indeling die op verreweg de meeste platformen wordt ondersteund.

Het voordeel van het gebruik van containers is dat applicaties op deze wijze ontkoppeld worden van de onderliggende infrastructuur en omgeving. Feitelijk kan een container op deze wijze makkelijk tussen verschillende infrastructuren getransporteerd worden. Daarnaast levert de Docker image door de standaardisatie minder overhead ten opzichte van applicaties die in een VM draaien. Dit komt ook de consistentie van applicatieontwikkeling en operatie ten goede.

Kortom containers bieden een groot aantal voordelen en betere efficiency voor het uitvoeren van applicaties ten opzichte van alle bestaande methodes.

Ook voor applicatie ontwikkeling bieden containers voordelen. In software ontwikkeling zien we de trend van het gebruik van microservices architecturen. In plaats van de traditionele monolithische architecturen, waarbij alle onderdelen van de applicatie met elkaar in verband staan, kenmerken microservices architecturen door het afzonderlijk ontwikkelen van kleinere, losse en betrouwbare componenten. Dit zien we bij de meeste mobiele en web-based applicaties al op grote schaal gebeuren. Koppelingen en toegang geschiedt daarin op basis van APIs.

Containers zijn uitermate geschikt voor het ondersteunen van deze service gebaseerde architecturen. De onderverdeling in losse componenten komt tevens de snelheid en betrouwbaarheid van software ontwikkeling ten goede. Kleinere stukken code zijn eenvoudiger te onderhouden en van elkaar gescheiden.

Beheer

Om applicaties die in containers draaien in goede samenhang te laten werken is er wel goed beheer over de containers zelf nodig. Er is duidelijk een behoefte aan adequate besturingsmiddelen voor implementatie en beheer. Op dit moment zijn hier meerdere oplossingen voor beschikbaar, zoals Swarm, Apache Mesos en Kubernetes. Google, die hun applicaties eigenlijk altijd al in containers draaien,  heeft voor het efficiënt managen al vele jaren ervaring opgedaan. Google heeft voor het uitvoeren van code in standaardcontainers  beheerssystemen moeten ontwikkelen. Daar is met containercluster management al flink wat kennis opgedaan. Deze ervaringen zijn grotendeels verwerkt in het open-source project Kubernetes.

Kubernetes maakt alles wat met de implementatie en het beheer van de applicatie te maken heeft eenvoudiger. Kubernetes zorgt ervoor dat implementaties, roll-backs, versiebeheer en status monitoring van de services geautomatiseerd wordt. Kubernetes heeft dus supervisie over de containers en is ook in staat om automatisch op- of af-te schalen.

Uitdagingen

Zo te bezien biedt het container concept in de IT echt veel voordelen. Zijn er dan geen nadelen aan het gebruik van containers ?  Ja, die zijn er zeker nog.  Voor het grootschalig gebruik van containers zijn er nog een aantal problemen op te lossen. Daarnaast moeten er ook meer applicaties op basis van microservice architectuur ontwikkeld worden. Er zijn nog steeds veel bestaande legacy applicaties in de wereld en deze zijn niet allemaal eenvoudig om te zetten naar nieuwe structuren en formaten.  Gelijk aan de applicatiemigratie naar cloud omgevingen, zullen de bestaande applicaties geschikt gemaakt moeten worden naar container omgevingen. Het is analoog aan de cloud zeker mogelijk om de strategieën; Lift-shift, re-factor of re-build te gebruiken.  Dit is vaak wel maatwerk en er dient ook een business case gemaakt te worden.

Nieuwe applicaties kunnen vanaf nu het beste als container-native applicatie ontwikkeld worden.

Ook zijn er in de huidige container technologie nog wel een aantal aandachtspunten op het vlak van security.

Ten eerste draaien de containers in een zelfde host operating systeem en is het niet een volledig gevirtualiseerde stack, waardoor er toch wel kwetsbaarheden bestaan. Denk hierbij aan container ‘ break-out’, waarbij een beveiligingslek in een applicatie in een container ook de andere containers eenvoudig kan infecteren.  Ze draaien immers allemaal in het zelfde host-operating systeem. Daarnaast kan een container, door onbekende oorzaak, alle systeem resources gebruiken, waardoor de andere containers niet meer kunnen performen of zelfs crashen. Ook kan door een zwakheid in een applicatie malware in een container terechtkomen. Deze zou dan eenvoudig weg ook weer andere containers kunnen infecteren.

Het op orde brengen van de beveiliging van containers verdient daarom veel aandacht van ontwikkelaars en IT fabrikanten. Er wordt daarom door de industrie nu hard aan specifieke container beveiligingsmaatregelen gewerkt.

Vermijden van lock-in

Containers bieden door het universele karakter ook nog het bijkomend voordeel om lock-in van platformen en IT omgevingen te voorkomen. Dat is een welkome ontwikkeling, want heden ten dage is door de complexiteit van IT en de verschillende leverancier specifieke cloud vormen lock-in nog steeds een serieus aandachtspunt. De container biedt door de eigenschappen van abstractie en standaardisatie de juiste ingrediënten om daar nu juist het hoofd aan te bieden.

Containers hebben de toekomst

Clouddiensten worden steeds populairder en hebben dat succes onder andere te danken aan de eigenschappen van abstractie, centralisatie en standaardisatie. Het gebruik van applicatie containers zorgt voor versterking hiervan. Containergebruik zorgt voor de volgende stap in standaardisatie. Ook ontkoppeling en abstractie zorgen voor een verhoging van de flexibiliteit en inzet. Het gebruik van de container zal hierdoor zeker in een versnelling gaan terechtkomen.

Zoals de container in de vorige eeuw onze economie en scheepvaart succesvol heeft veranderd, zal de container ditzelfde succes in de IT teweeg brengen. Dat is mijn overtuiging.

Wil je meer weten of met mij in contact komen? Stuur mij een bericht via LinkedIn kijk op Capgemini Expert Connect.