Wat zijn cloud-native microservices
In deze blogpost duiken we in de wereld van microservices: wat zijn ze, hoe werken ze, en wat zijn de voor- en nadelen van hun gebruik in cloud-native architecturen? Microservices zijn met name populair bij grote techbedrijven, omdat ze goedkoper te ontwikkelen en onderhouden zijn dan traditionele monolithische applicaties. Bij Researchable hebben we geïnvesteerd in het bouwen van ons eigen microservice-ecosysteem, zodat we nieuwe projecten sneller kunnen opleveren.
Wat zijn microservices?
Microservices zijn een modulaire software-architectuur gericht op verbeterde schaalbaarheid en samenwerking binnen teams, vooral voor snelgroeiende applicaties. Het is een vorm van gedistribueerde architectuur die een applicatie opgesplitst in kleine, onafhankelijke units. Het idee is dat deze zelfstandige services onafhankelijk van elkaar gedeployed en geüpdatet kunnen worden. Dit kan betekenen dat nieuwe features sneller geïntroduceerd kunnen worden, zonder downtime. Dit is waarom veel populaire techbedrijven, zoals Netflix, Uber en Spotify, deze architectuur hebben omarmd.
Het probleem met traditionele monolithische applicaties
De "monolithische" benadering combineert alle verschillende onderdelen van een applicatie in één pakket. Als een specifieke feature van zo'n applicatie een piek in verkeer ervaart, moet de hele systeemarchitectuur omhoog worden geschaald.
Een ander probleem met monolithische applicaties is de samenwerking tussen ontwikkelaars en het introduceren van veranderingen. Grote monolieten worden vaak complexe, onderling verbonden labyrinthen van code. Een interne aanpassing voor feature A kan feature B onbedoeld kapot maken. Dit staat bekend als "monolithic hell".
Microservices en cloud-native architectuur
Microservices lossen het "monolithische" probleem op door een applicatie te splitsen in verschillende services die op meerdere servers kunnen draaien en met elkaar communiceren via API's. Zo kunnen verschillende onderdelen van de applicatie onafhankelijk schalen op basis van gebruikspatronen. En zolang de interface tussen de componenten hetzelfde blijft, kunnen ontwikkelaars gelijktijdig aan verschillende delen van de applicatie werken met een lager risico op het introduceren van brekende veranderingen die het hele platform beïnvloeden.
Net zoals front-end applicaties tegenwoordig "mobile-first" worden ontworpen om beter aan te sluiten op hedendaagse gebruiksgewoonten, worden microservice-architecturen ontworpen voor de cloud. Cloud-native microservices zijn gebouwd om ten volle te profiteren van de mogelijkheden die cloud providers bieden. Denk aan dynamische schaling, load balancing en redundantie voor meer betrouwbaarheid.
Voordelen van microservices
- •Verbeterde betrouwbaarheid: Als een specifieke service uitvalt, beïnvloedt dat niet het hele systeem. Bijvoorbeeld, als één onderdeel van de app stopt met werken, verlies je alleen die functionaliteit, en niet de hele app.
- •Schaalbaarheid: Kleinere code-units kunnen gemakkelijker worden geschaald zonder de hele service aan te passen, waardoor beter gebruik wordt gemaakt van de onderliggende hardware-resources.
- •De juiste tools voor de juiste klus: Microservices stellen teams in staat om eenvoudig verschillende technologieën en stacks te integreren. Bij het bouwen van monolithische applicaties moeten teams zich vastleggen op één programmeertaal en één framework.
- •Dedicated database: Elke microservice beheert zijn eigen status. Dit maakt applicaties robuuster tegen veranderingen.
- •Onafhankelijke deploybaarheid: Elke service kan onafhankelijk worden gedeployed en geüpdatet zonder andere services in het systeem te beïnvloeden. Nieuwe features en bugfixes kunnen snel worden geleverd.
Nadelen van microservices
- •Meer ontwikkelwerk: Voor kleine teams die vanaf nul beginnen, betekent microservices meer werk.
- •Moeilijker te leveren: Microservices gedijen in PaaS-applicaties. Als de klant de applicatie zelf wil hosten en beheren, zijn microservices niet ideaal. Klanten moeten over de know-how beschikken om alle verschillende componenten te beheren.
- •Gebrek aan domeinkennis bij microservices: Microservices draaien om het afbakenen van domeinen rondom het domeinmodel. Wanneer teams aan een nieuw project beginnen, ontbreekt het hen vaak aan context om de juiste onderverdelingen te maken. Dit kan leiden tot een algehele slechte architectuur, met negatieve gevolgen voor de prestaties en betrouwbaarheid.
- •Latency: Microservices functioneren door met elkaar te communiceren. Dit introduceert latentie bij elke query. Dit effect kan worden versterkt wanneer de verkeerde Domain model abstractions zijn geïmplementeerd
Hoe we bij Researchable gebruik maken van cloud-native microservices architectuur
Als software- en data-bedrijf werkt Researchable tegelijkertijd aan meerdere projecten voor verschillende klanten. Deze projecten variëren van AI-gedreven producten tot dataplatformen en databeheerplatformen. Hoewel elke klant uniek is, is er vaak een gemeenschappelijke basis tussen projecten: elke klant heeft behoefte aan authenticatie en communicatie via e-mail. Veel klanten moeten ook interactie kunnen hebben met externe API's. Daarom hebben we tijd en middelen geïnvesteerd in ons eigen ecosysteem van microservices, om enkele van deze veelvoorkomende functionaliteiten te implementeren.
Zoals we in dit artikel hebben gezien, zijn microservices niet altijd de juiste keuze. Voor elk nieuw project voeren we daarom een zorgvuldige evaluatie uit om te bepalen welke architectuur het beste past.