Een microservice is een kleine, zelfstandig uit te rollen service die één bedrijfsfunctie afhandelt, zoals bestellingen, betalingen of gebruikersaccounts. In een microservices architectuur bestaat een applicatie uit veel van zulke services, elk met een eigen codebase en meestal een eigen database, die met elkaar communiceren via API's of berichten. Het tegenovergestelde is een monoliet: één applicatie met alle functionaliteit, die als geheel wordt uitgerold.
Hoe werken microservices?
- Eén verantwoordelijkheid per service: elke service beheert één deel van het domein en de bijbehorende data.
- Communicatie via het netwerk: directe aanroepen via REST of gRPC, of asynchrone events via een message broker zoals Kafka of RabbitMQ.
- Zelfstandig uitrollen: een service kan worden aangepast, getest en uitgerold zonder de rest opnieuw uit te rollen.
- Zelfstandig schalen: alleen de services die zwaar belast worden, krijgen extra instanties.
- Containers en orkestratie: services draaien meestal in Docker-containers, beheerd door Kubernetes of een vergelijkbaar platform.
Microservices of een monoliet?
Een monoliet is eenvoudiger te bouwen, testen, uitrollen en debuggen, en voor de meeste nieuwe applicaties het juiste startpunt. Microservices helpen wanneer een applicatie en de organisatie eromheen groeien: meerdere teams die los van elkaar willen opleveren, onderdelen met heel verschillende belasting of technologie, of een systeem waarin één falend onderdeel niet alles mag platleggen. Een populaire tussenvorm is de modulaire monoliet: één applicatie met strikte interne grenzen, die later kan worden opgesplitst in services waar dat echt loont.
Voordelen en nadelen
Voordelen: onafhankelijke releases, gericht schalen, fouten blijven beperkt tot één service, en per service vrijheid in technologie.
Nadelen: een gedistribueerd systeem is veel lastiger te beheren. Netwerkaanroepen falen, data is verspreid over databases, transacties over meerdere services vragen om patronen zoals sagas, en u hebt goede monitoring, logging, tracing en CI/CD nodig om overzicht te houden. Veel teams onderschatten die beheerlast.
Wanneer kiest u voor een microservices architectuur?
Kies voor microservices met een duidelijke reden, niet als standaard: meerdere teams aan één product, onderdelen met sterk verschillende schaalbehoefte, of een verouderd systeem dat stap voor stap wordt vervangen. Begin anders met een goed gestructureerde monoliet. Hulp nodig bij deze keuze? Zie ons IT-architectuur advies en API ontwikkeling.
Veelgestelde vragen over microservices
Wat is het verschil tussen een microservice en een API?
Een microservice is een zelfstandig stuk software; een API is de interface waarmee het wordt aangesproken. Elke microservice heeft een API, maar een API kan net zo goed bij een monoliet horen.
Hoe klein moet een microservice zijn?
Er is geen vaste grootte. Een bruikbare vuistregel is dat een service één bedrijfsfunctie omvat die één team volledig kan beheren. Te kleine services zorgen voor veel netwerkverkeer en afstemming.
Hebben microservices altijd Kubernetes nodig?
Nee. Kubernetes is gebruikelijk bij grotere opzetten, maar een handvol services draait prima op beheerde containerdiensten of gewone virtuele machines.
Kan een monoliet worden omgezet naar microservices?
Ja, meestal geleidelijk: nieuwe functionaliteit en goed af te bakenen onderdelen worden één voor één naar services verplaatst terwijl de monoliet blijft draaien (het strangler fig-patroon).