Blogs | InSpark

In 3 stappen naar containerisatie van je applicaties

Geschreven door Juraj Kordic | Jul 16, 2024 8:42:08 AM

Applicaties zitten vandaag de dag boordevol features die ons leven makkelijker moeten maken. Hoe zorg je ervoor dat je applicatie niet te complex wordt? Hoe zorg je ervoor dat features onafhankelijk van elkaar functioneren? En hoe waarborg je dat je applicatie ook tijdens piektijden goed bereikbaar blijft? Containerisatie, waarbij elke feature een eigen “container” krijgt, biedt de oplossing. In deze blog beschrijf ik welke 3 stappen je moet nemen om je applicaties op deze manier in te richten.

Complexe applicaties

Applicaties worden steeds ingewikkelder. Neem als voorbeeld een gemiddelde bankiersomgeving. Waar je vroeger alleen nog maar je saldo kon inzien, kan je inmiddels bijna alles online regelen. Denk aan het openen van een nieuwe rekening tot het aanvragen van een hypotheek. Daar tegenover staat dat er steeds minder fysieke bank locaties zijn. Zowel de banken als de klanten worden steeds afhankelijker van applicaties. Mocht een applicatie er voor langere tijd uit liggen, dan kan dit desastreuze gevolgen hebben voor de bedrijfscontinuïteit met als gevolg imago of zelfs financiële schade. Het is dus essentieel dat applicaties ten alle tijde goed functioneren. Met containerisatie, een term afkomstig uit de scheepswereld, waarborg je dit op een structurele manier. Welke stappen moet je nemen om jouw applicaties ook op deze manier in te richten?

Stap 1: spreiden van features

In plaats van één grote applicatie boordevol features te bouwen en onderhouden is het beter om de features te spreiden over meerdere kleine applicaties. Elke feature wordt dan zijn eigen ‘container’. Zo heb je een applicatie die verantwoordelijk is voor het openen van een bankrekening en een andere applicatie voor hypotheek aanvragen. Dit heeft meerdere voordelen:

Minder complexiteit

Doordat elke feature in een eigen container leeft, wordt de doorontwikkeling / onderhoud eenvoudiger. De code voor elke functionaliteit zal op een eigen plek staan, waardoor het risico dat je andere features per ongeluk beïnvloed minder groot is.

Verbeterde bedrijfscontinuïteit

Door features te spreiden over meerdere containers verminder je de impact wanneer één van deze containers tijdelijk niet goed werkt. De rest van de containers en dus features kunnen gewoon doordraaien, waardoor de impact op de bedrijfscontinuïteit wordt geminimaliseerd.

Verbetering performance

Elke feature zal in een eigen container draaien. Per container kan jij aangeven hoeveel resources deze nodig heeft van het platform waarop deze draait. Heb jij een CPU intensieve applicatie? Dan kan je deze wat meer CPU geven. Heb jij een applicatie die nauwelijks CPU of geheugen gebruikt? Ook dat kan je configureren. Zo maak jij optimaal gebruik van je beschikbare resources.

Stap 2: Neerzetten van een container platform

Om optimaal gebruik te maken van de voordelen die containers met zich meebrengen, is het belangrijk om een goede fundering te hebben waarop deze kunnen landen. Eén van de diensten die Microsoft hiervoor aanbied op het Azure platform is Azure Kubernetes Services (AKS).

AKS

AKS is een managed container platform dat goed integreert met (bestaande) CI-CD pipelines. Daarnaast is er veel automatisering aanwezig. Zijn er bepaalde tijdstippen waarop het gebruik van applicaties vele malen groter is dan gemiddeld? AKS signaleert dit en zal automatisch (tijdelijk) bijschalen zodat de applicatie ten alle tijde beschikbaar zal blijven. Uiteraard schaalt het platform ook weer naar beneden wanneer de vraaf afneemt.

Jij kan dus je containers op het AKS platform laten landen en heb je (bijna) geen omkijken meer naar je applicatie. Wil je meer informatie over AKS, kijk dan hier.

Infrastructure as Code

De configuratie van de infrastructuur wordt bij voorkeur uitgerold in code. Hierdoor ben je nauwkeuriger en voorkom je dat er ongedocumenteerde veranderingen plaatsvinden. Dat is zeker prettig als je met meerdere collega’s in een team zit.

Stap 3: Lifecycle management

Na het deployen van de containers op een container platform is het belangrijk om alles goed te onderhouden. Denk hierbij aan security patches voor zowel je applicaties als het container platform, maar natuurlijk ook de doorontwikkeling van je bestaande features.

Het is ook prettig om te weten of alle applicaties draaien zoals bedoeld. Hiervoor dient actieve monitoring / alerting ingeregeld te worden. (Azure) Tooling die je hiervoor kan gebruiken zijn Log Analytics Workspace, Grafana en Application Insights. Dit alles valt onder lifecycle management en is een essentieel onderdeel van de hele applicatieketen.

Vragen?

Is jou bedrijf al bezig met containerisatie of zijn jullie dit binnenkort van plan? Hebben jullie hulp nodig bij het bouwen van een goed container platform voor jou containers? Advies nodig voor het inrichten van lifecycle management? Neem dan contact met ons op.