Wanneer is microservices wel of niet de juiste keuze?
Microservices zijn een goede keuze bij echte schaal-druk, meerdere teams die in parallel willen werken, polyglot-stack-eisen, behoefte aan fault-isolation, of onafhankelijke deploy-cycli per business-capability. Voor kleinere teams, simpele applicaties of weinig velocity-druk is een modulaire monoliet bijna altijd verstandiger. We helpen u in het eerste gesprek eerlijk vast te stellen welke kant u op moet — dat is vaker een nee tegen microservices dan u zou verwachten.
Wat is het verschil tussen een monoliet en microservices in de praktijk?
In een monoliet zit alle business-logica in één codebase, één deploy en vaak één database. In een microservices-architectuur is elke business-capability een eigen service met eigen datastore, eigen team-eigenaarschap en eigen deploy-pipeline. U wint onafhankelijke schaalbaarheid en team-velocity, maar u betaalt met meer operationele complexiteit: distributed transactions, schema-evolutie, observability en service-mesh. Een modulaire monoliet zit ergens tussenin en is vaak een goede tussenstap.
Hebben we Kubernetes per se nodig voor microservices?
Niet absoluut, maar in de praktijk bijna altijd. Kubernetes (managed via EKS, GKE, AKS of OpenShift) is de standaard geworden voor het draaien van containerized services met auto-scaling, self-healing en declaratieve deploys. Alternatieven als HashiCorp Nomad bestaan en passen soms beter bij kleinere setups. ECS, Cloud Run of App Runner kunnen werken voor een handvol services. Bij meer dan tien services en multi-team-velocity wint Kubernetes vrijwel altijd.
Hoe pakken jullie een strangler-fig migratie aan?
We zetten een API gateway voor de monoliet en routeren stapsgewijs verkeer naar nieuwe services. Per capability identificeren we de bounded context, bouwen we de nieuwe service met eigen datastore, en synchroniseren we data via change-data-capture of event-bridges totdat de nieuwe service de canonical bron is. De monoliet blijft draaien tot het laatste stuk eruit is. Voorrang krijgen de capabilities met de hoogste velocity-pijn of de meeste schaal-druk, niet de moeilijkste kern. Zie ook onze pagina
platform-migratie laten uitvoeren.
Hoeveel services moeten we hebben?
Zo weinig mogelijk om het probleem op te lossen. Het correcte aantal komt voort uit uw business-domein, niet uit een streefcijfer. Begin met grove bounded contexts — order, klant, pricing, betaling, notificatie — en splits pas verder als een service te groot wordt voor één team of als deploys interfereren. Premature decompositie tot dertig microservices is een van de duurste fouten die we tegenkomen.
Hoeveel moeten we in observability investeren?
Veel — en het is geen optie maar een vereiste. Zonder distributed tracing (OpenTelemetry, Jaeger of Tempo), gestructureerde logs en service-level metrics is een microservices-platform feitelijk niet operabel. Wij ontwerpen observability als eerste-klas onderdeel van het platform, niet als laatste sprint-stof. De vuistregel: als u de tijd voor observability niet wil maken, kies dan geen microservices.
Hoe lang duurt een microservices-traject?
Dat hangt sterk af van de scope: een greenfield platform met drie of vier kerndiensten kan binnen een traject van een aantal sprints in productie staan. Een volledige strangler-fig migratie van een grote monoliet is een traject van meerdere sprints en loopt vaak parallel aan business-as-usual. In de discovery-fase geven we u een onderbouwde indicatie op basis van het aantal bounded contexts en de complexiteit van data-migratie.
Hoe gaan jullie om met compliance — ISO 27001, NIS2, DORA, AVG?
Per service een eigen audit-trail, encryptie in transit en at-rest, role-based access via uw IdP, en infrastructure-as-code zodat alle wijzigingen reviewbaar en reproduceerbaar zijn. Voor financiele instellingen onder DORA bouwen we expliciet voor incident-rapportage, operational resilience en third-party-risk. AVG-aspecten als data-minimalisatie en retention-policies regelen we per service. Voor systemen met strikte uptime-eisen koppelen we vaak een traject
high-availability systeem-ontwikkeling aan deze architectuur.
Welke tech-stack adviseren jullie voor services?
We zijn polyglot — afhankelijk van de capability en uw team-skills kiezen we Node.js (TypeScript), Spring Boot, .NET, Go of Python (FastAPI) voor backend-services. Voor service-to-service communicatie gebruiken we doorgaans gRPC vanwege type-safety en performance, met REST of GraphQL voor publieke API's. Kubernetes is meestal het deploy-doel, draaiend op AWS (EKS), Azure (AKS), GCP (GKE) of voor kosten-bewuste setups op Hetzner met managed Kubernetes. Data per service: PostgreSQL als default, Redis voor caches, Elasticsearch voor zoekfunctionaliteit, MongoDB of DynamoDB waar document-stores natuurlijker zijn.
Hoe regelen jullie distributed transactions en data-consistentie?
In een microservices-architectuur bestaan klassieke ACID-transacties over meerdere services niet meer. We gebruiken het saga-pattern — een keten van lokale transacties met compenserende acties bij falen — geimplementeerd als orchestratie (één centrale saga-coordinator) of choreografie (services reageren op elkaars events). Voor read-modellen zetten we CQRS in waar dat zinvol is, met event-sourcing voor capabilities waar volledige audit-history belangrijk is, zoals betalingen of contracten. We zijn pragmatisch: niet elke service heeft event-sourcing nodig.