April 6, 2020

Is mijn applicatie klaar voor containers en microservices?

Containers en microservices zijn spannende, nog steeds ontwikkelende technologieën die veel mogelijkheden bieden op het gebied van flexibiliteit en schaalbaarheid. Misschien werk je nog met legacy-applicaties en ben je enthousiast over de mogelijkheden van containers en microservices. Maar het is vaak een hele uitdaging om hier een begin mee te maken.

In dit artikel leggen we uit hoe je te weten komt of containers en microservices geschikt zijn voor jouw organisatie. Door kritische vragen te stellen brengen wij jouw doel dichterbij, waardoor je snel kunt profiteren van de mogelijkheden en voordelen van deze twee cloudoplossingen.

Container en microservices uitgelegd

Om een goed begin te kunnen maken met containers en microservices, is het natuurlijk belangrijk om te weten wat deze technologieën precies inhouden.

Wat zijn containers?

Containers kun je zien als digitale opslagbakken die een of meerdere objecten bevatten. Ze bundelen onderdelen van een applicatie (tools, libraries, configuratiebestanden) en zorgen voor een slimme scheiding van taken. Containers kunnen vrijwel overal worden uitgevoerd, waardoor het ontwikkelen en inzetten van een applicatie veel gemakkelijker wordt. Linux-, Windows– en Mac-besturingssystemen, virtuele of fysieke machines, een datacenter op locatie of de openbare cloud: met containers kan het allemaal. Het is zelfs mogelijk om Linux/Docker-containers te draaien op Windows. Andersom, een Windows-container op Linux, is helaas niet mogelijk.

Alle containers delen enkel de kernel van het besturingssysteem waar ze op draaien. Je hoeft dus geen rekening  te houden met het hele besturingssysteem en onderliggende hardware, zoals wel het geval is bij VM’s (Virtual Machines). Containers worden gemaakt van zogenoemde ‘containerimages’. Deze ‘afbeeldingen’ specificeren de precieze inhoud (broncode, libraries, afhankelijkheden, tools en andere bestanden die enkel nodig zijn om de applicatie uit te voeren) van de containers. Containers zijn daardoor veel kleiner en kunnen razendsnel starten.

Wat zijn microservices?

Microservices hebben betrekking op de architectuur (technische structuur) van een bepaalde softwareapplicatie. Hoewel er diverse typen microservices zijn, gaat elke microservice-architectuur wel uit van één belangrijk principe: een grote applicatie (vaak een monoliet genoemd) wordt opgeknipt in een aantal kleinere delen (de microservices). De diverse deelapplicaties communiceren met elkaar en zorgen er zo voor dat de applicatie als geheel functioneert.

Het gebruiken van microservices heeft een aantal voordelen.

●       Ontwikkelaars werken met een smallere codebase dan bij monolithische applicaties het geval is. Broncodes zijn zo gemakkelijker te begrijpen, waardoor de ontwikkelsnelheid toeneemt.

●       Het wordt gemakkelijker om een goede rolverdeling te maken. Je kunt afzonderlijke microservices bijvoorbeeld verdelen over individuele teamleden.

●       Ontwikkelaars hebben de vrijheid om, op basis van hun behoeften en wensen, per microservice verschillende programmeertalen en libraries te gebruiken.

●       Updaten en aanpassen wordt gemakkelijker. Een kleine verandering doorvoeren? Dan hoef je voortaan niet langer de hele applicatie, maar alleen de desbetreffende microservice te herbouwen (updaten).

●       De microservices zijn onafhankelijk van elkaar af- of opschaalbaar, waardoor de hardware-resources efficiënter ingezet kunnen worden.

●       Microservices zijn, afhankelijk van de inrichting, cloudonafhankelijk.

●       Microservices geven je de mogelijkheid om data te decentraliseren. Zo kun je bijvoorbeeld verschillende databases inzetten voor verschillende datatypen.

●   Een fout of bug in een van de microservices heeft niet gelijk grote invloed op de performance van de hele applicatie. Alle microservices draaien immers in aparte, van elkaar geïsoleerde containers.

Naast de bovengenoemde voordelen hebben microservices, afhankelijk van de knowhow en capaciteit binnen jouw organisatie, ook enkele potentiële nadelen. Naarmate het aantal microservices groeit, kan het bijvoorbeeld lastig zijn om het overzicht te behouden.

Zijn containers en microservices de oplossing?

1. Welke component doet wat? En hoe zit het met de onderlinge communicatie tussen de diverse microservices?

Zeker als applicaties door meerdere teams worden gebruikt, vergt een microservicestructuur een hogere mate van coördinatie dan een monolithische app. In sommige gevallen slokt een uitgebreid netwerk aan microservices bovendien meer resources op dan een monolithische applicatie. Ook de dimensionering is van belang. Automatisch schalen is natuurlijk geweldig, totdat een proces in een loop komt en net zo lang opschaalt tot de hardware overbelast raakt. ‘Te krap’ afstellen kan natuurlijk ook. In dat geval loop je het risico dat er gewacht wordt op één proces in de keten. Goede monitoring in realtime en het finetunen van de afstelling zijn daarom belangrijke vereisten.

Zijn microservices en containers de oplossing voor IT-problemen waar ik momenteel mee kamp?

Dat is één van de de eerste vragen die je jezelf moet stellen als je overweegt om de stap richting microservices en containertechnologie te maken. Containers en microservices zijn namelijk geen wondermiddelen die bij toverslag elke hindernis uit de weg ruimen. Microservices zijn bijvoorbeeld alleen zinvol als je met een systeem werkt dat te complex is voor een monolithische structuur. Bovendien zijn niet alle legacy-applicaties direct geschikt voor containers. Denk bijvoorbeeld aan bepaalde stateful-applicaties. Daarnaast zijn er nog veel andere zaken, zowel technisch als financieel, om rekening mee te houden. Denk hierbij aan concepten als continuous deployment, service discovery, registratie, monitoring en natuurlijk de bijzonderheden van jouw organisatie.

Moet er misschien een cultuuromslag plaatsvinden naar een DevOps-werkwijze?

Maar wellicht het belangrijkste:

Nieuwe methodieken, processen en/of technieken zijn geweldig, maar wordt de toch vaak forse investering ook ooit terugverdiend? Is er een duidelijke ROI (Return of Investment) te behalen?

Het is daarom zeer belangrijk om vooraf vast te stellen wat de investering omtrent resources wordt, maar ook hoe de tijdlijn eruitziet en wat je investering onderaan de streep gaat opleveren?

De bestaande IT-omgeving inventariseren

Goed en productief werken met containers en microservices vereist specifieke kennis. De beste manier om dit aan te pakken is om eerst de afzonderlijke onderdelen van jouw OTAP- en ontwikkelomgeving goed onder de loep te nemen. Dit betekent onder meer dat voor een applicatie het gehele OTAP-proces in orde moet zijn. Het is daarbij verstandig om het advies in te winnen van een specialist die al vaker met dit bijltje heeft gehakt. Die zal objectief beoordelen waar de applicatie staat en welke technologie het beste past bij jouw ambities.

Applicatiearchitectuur

Het eerste onderdeel dat aandacht vereist is de architectuur van de applicaties die je gebruikt.

Hoe is jouw applicatielandschap opgebouwd?
Bestaat de applicatie al uit losse componenten en/of communiceren deze al intern via API’s?

Luidt het antwoord op de tweede vraag ja? Dan is het gemakkelijker om snel een begin te maken met containers en microservices.

Platform en netwerk

Applicaties staan natuurlijk niet op zichzelf. Ze maken deel uit van een platform en breder IT-landschap. Om aan de slag te kunnen met microservices en containers, moet het ook mogelijk zijn om binnen het onderliggende platform functionele scheidingen (bijvoorbeeld tussen individuele applicaties en databases) te maken. Daarnaast spelen beschikbaarheid en schaalbaarheid een belangrijke rol bij het omarmen van microservices.

Het kan dus zo zijn dat de applicatie verplaatst dient te worden naar een cloudplatform en je moet kiezen tussen verschillende cloudaanbieders als Amazon (AWS), Google Cloud en Microsoft Azure. Een lastige keuze om zelf te moeten maken.

Gaat alles (applicatie, infrastructuur, resources) 1-op-1 en in één keer over?
Of hanteer je een gecontroleerde en gefaseerde benadering voor jouw applicatie?

Dit kan bij een omgeving met meerdere applicaties ook sterk verschillen, afhankelijk van hoe bedrijfskritisch de betreffende applicaties zijn.

Nieuwe tools voor containers en microservices

Wanneer je gebruik gaat maken van containers en microservices, krijg je ook een heel arsenaal aan nieuwe tools en technologieën tot je beschikking. Denk bijvoorbeeld aan templating, configuratiebeheer, orchestratie en automatische inzet (automatic deployment).

Een oplossing die vaak wordt gebruikt in combinatie met containers is Kubernetes. Met Kubernetes kun je containers geautomatiseerd uitrollen en verdelen over een cluster van verschillende soorten cloudplatforms. Het maakt jouw containers beheersbaar, schaalbaar, redundant, flexibel en tot op detailniveau configureerbaar. Je kunt zelfs zo ver gaan dat containers zelfherstellend (containers worden automatisch herstart, gerepliceerd en/of vervangen) zijn wanneer er iets fout gaat met de applicatie.

Een goede tool voor het managen en monitoren van microservices is Istio. Deze tool kun je  probleemloos bovenop Kubernetes installeren en maakt het mogelijk om snel eventuele fouten of bugs in een applicatie te ontdekken. Istio helpt ook bij het managen van traffic van en naar jouw microservices. Middels tweezijdige TLS-authenticatie en een beperkte toegang tot externe diensten, zorgt Istio ook voor een extra stukje veiligheid.

Maar overstappen naar containers en microservices is een hele stap. Het is belangrijk om heel helder en vooraf in kaart te hebben wie wat en wanneer doet. Extra tooling kan een traject ook gecompliceerder maken en onnodig vertragen. Het is dus essentieel om de kaders in het gehele proces te (laten) bewaken. Stel jezelf de vragen:

 Welke techniek wil ik omarmen?
Wat kan en ga ik zelf doen?
Wanneer schakel ik een specialist in die mij kan ondersteunen bij deze keuzes en in de verschillende fases?

 

Vrijblijvend advies

De combinatie van containers en microservices biedt vele kansen, maar beginnen met deze technologieën kan een hele uitdaging zijn. Er is ontzettend veel mogelijk met containers en microservices, zeker op het gebied van schaalbaarheid en ontwikkelsnelheid (time-to-market).

Wil je graag starten met containers en microservices? Of twijfel je nog of deze technologieën voor jouw de juiste stap zijn? Als expert op het gebied van IT-continuïteit en containertechnologie helpt ACC ICT je graag bij het verkennen van de mogelijkheden.

Gezamenlijk kunnen we dan kijken wat het juiste traject is voor jouw organisatie. Plan een gratis en vrijblijvend 1-op-1-consult van 50 minuten met één van onze specialisten.

Deel deze post
Ronald Kers
Ronald behoort tot de harde kern die meer dan 10 jaar in dienst is bij ACC ICT. Als contentmarketeer schrijft Ronald graag over technologische ontwikkelingen binnen de IT-branche. Met een achtergrond als system administrator weet hij als geen ander complexe materie in begrijpelijke taal uit te leggen.