Is mijn applicatie klaar voor containers en microservices?

Containers en microservices zijn spannende, zich nog steeds ontwikkelende, technologieën die veel mogelijkheden bieden op het gebied van flexibiliteit en schaalbaarheid. Misschien werkt u nog met legacy-applicaties en bent u enthousiast over de mogelijkheden van microservices en containers. Echter een begin hiermee maken is vaak een hele uitdaging.

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

Van monoliet naar containers en microservices

Microservices en containers uitgelegd

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

Wat zijn containers?

Containers kunt u 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, Windows container op Linux, is helaas niet mogelijk.

Alle containers delen enkel de kernel van het besturingssysteem waar ze op draaien. Er hoeft dus geen rekening  gehouden te worden met het hele besturingssysteem en onderliggende hardware, zoals dit 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. U kunt afzonderlijke microservices bijvoorbeeld verdelen over individuele teamleden.
  • Ontwikkelaars hebben de vrijheid om, op basis van behoeften en wensen, per microservice verschillende programmeertalen en libraries te gebruiken.
  • Updaten en aanpassen wordt gemakkelijker. Een kleine verandering doorvoeren? Dan hoeft u voortaan niet langer de hele applicatie, maar alleen de desbetreffende microservice te herbouwen (updaten).
  • De microservices zijn onafhankelijk van elkaar af- of op schaalbaar, waardoor de hardware resources efficiënter ingezet kunnen worden.
  • Microservices zijn, afhankelijk van de inrichting, cloud onafhankelijk.
  • Microservices geven u de mogelijkheid om data te decentraliseren. Zo kunt u 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 uw organisatie, ook enkele potentiële nadelen. Naarmate het aantal microservices groeit, kan het bijvoorbeeld lastig zijn om het overzicht te behouden.

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

Zeker als applicaties door meerdere teams worden gebruikt, vergt een microservice structuur 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 is 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. Andersom; ‘te krap’ afstellen kan natuurlijk ook, in dat geval wordt het risico gelopen dat er gewacht wordt op één proces in de keten. Goede real-time monitoring en het fine tune van de afstelling is daarom een vereiste.      

Zijn microservices en containers de oplossing?

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

Dat is één van de de eerste vragen die u als organisatie uw zelf moet stellen als u overweegt om de stap richting microservices en containertechnologie te maken.

Vooropgesteld zijn containers en microservices geen wondermiddelen die bij toverslag elke hindernis uit de weg ruimen. Microservices zijn bijvoorbeeld alleen zinvol als u 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, registration, monitoring en natuurlijk uw organisatie.

 4. Misschien moet er wel een cultuuromslag plaatsvinden naar een DevOps-werkwijze?

Maar wellicht het belangrijkste:

5. Nieuwe methodieken, processen en/of technieken zijn geweldig, maar wordt de toch vaak forse investering dat 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, hoe ziet de tijdlijn eruit en wat gaat het aan onder aan de streep opleveren?

DevOps process

De bestaande IT-omgeving inventariseren

Het gaat om zeer specialistische kennis De beste manier om dit aan te pakken is om eerste de afzonderlijke onderdelen van uw OTAP-en ontwikkelomgeving goed onder de loep nemen. Dit betekent onder andere dat voor een applicatie het gehele OTAP-proces in orde moet zijn. Het is daarbij verstandig een specialist die vaker met dit bijltje gehakt heeft advies te vragen. Deze zal objectief beoordelen waar de applicatie staat en welke technologie het beste past bij uw ambities.

Applicatiearchitectuur

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

6. Hoe is uw applicatielandschap opgebouwd?
7. Bestaat de applicatie al uit losse componenten en/of communiceren ze al intern via API’s?

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. Ook speelt 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 cloud platform en er gekozen dient te worden tussen verschillende cloud aanbieders als; Amazon (AWS), Google Cloud en Microsoft Azure. Een lastige keuze om zelf te moeten maken.

8. En gaat alles (applicatie, infrastructuur, resources) 1-op-1 over en in één keer?

9. Of hanteert u een gecontroleerde en gefaseerde benadering voor uw 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 u gebruik gaat maken van containers en microservices krijgt u ook een heel arsenaal aan nieuwe tools en technologieën tot uw beschikking. Denk bijvoorbeeld aan templating, configuratiebeheer, orchestratie en automatische inzet (automatic deployment).

Een veelgehoorde oplossing in combinatie met containers is Kubernetes. Met Kubernetes kunnen containers geautomatiseerd worden uitgerold en verdeeld over een cluster van verschillende soorten cloud platforms. Het maakt uw containers beheersbaar, schaalbaar, redundant, flexibel en tot op detailniveau configureerbaar. U kunt zelfs zo ver gaan dat containers zelf herstellend (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 kan  probleemloos bovenop Kubernetes worden geïnstalleerd 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 uw 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 al een hele stap. Het is belangrijk om heel helder en vooraf in kaart te hebben wie doet wat en wanneer. 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 uzelf de vragen:

 10. Welke techniek wil ik omarmen?

11. Wat kan en ga ik zelf doen?

12. Wanneer schakel ik een specialist bij 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 zo veel mogelijk met containers en microservices. Zeker op het gebied van schaalbaarheid en ontwikkelsnelheid (Time-to-Market).

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

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

Lees ook eens: