BLOG

Achtergronden

Monolith versus Microservices

11 augustus 2016

Je hebt er vast wel eens van gehoord: Microservices. Microservices is een nieuwe trend als het gaat om software ontwikkeling. Dat komt onder meer door ideeën als DevOps, continuous integration en delivery, containers en PaaS (Platform as a Service) die draaien om het mogelijk te maken echt modulaire enterprise producten te bouwen.

Maar zoals voor alle nieuwe trends geldt: bezint eer gij begint. Je hoeft niet met alles klakkeloos mee te doen om succesvol te zijn. Wel is het natuurlijk goed om op de hoogte te zijn. Dus, wat zijn de voordelen en nadelen bij het gebruik van Microservices? Wanneer is het beter om Microservices te gebruiken en wanneer kan je beter gebruik maken van monolithische architectuur? Wij proberen het je hier kort uit te leggen.monolith-vs-microservices1

Microservices

Ten eerste refereert ‘micro’ niet aan de omvang van een service maar vooral aan de scope ervan. Een kleinere scope betekent vaak ook een minder grote service, wat weer minder code behoeft.

Met microservices split je eigenlijk je applicatie in kleine delen. Je codebase is makkelijker te managen en als je dit dus goed aanpakt, heb je het in de toekomst ook makkelijker om nieuwe functionaliteit aan je applicatie toe te voegen. Met een monolithische architectuur kan dit veel lastiger zijn, zeker als je applicatie erg groot is.

 

Voordelen van Microservices op een rijtje

De voordelen van Microservices kunnen we opdelen in een aantal belangrijke pijlers:

  • Microservices draait om kleinere eenheden die sneller en makkelijker kunnen worden gedeployd. Dit komt omdat je de onafhankelijke delen apart bouwt en ze deployt op verschillende servers. Services kunnen dus altijd worden gebouwd en gedeployd zonder de rest van de applicatie te moeten herbouwen.
  • Continuous integration wordt gemakkelijker. Er kunnen steeds nieuwe en aangepaste stukjes software in productie worden gezet.
  • Horizontaal is gemakkelijk: er kunnen makkelijker specifieke services af- of bijgeschakeld worden, afhankelijk van meer of minder vraag. Daardoor kunnen resources ook efficiënter gebruikt en gemanaged worden.
  • Fouten of problemen verspreiden zich niet door de gehele oplossing maar blijven beperkt tot een aantal services. De werking van het totale systeem is daardoor gemakkelijker te waarborgen.
  • De organisatie kan flexibelere optreden wat betreft technologische ontwikkelingen en keuzes. Per service kan de meest geschikte technologie stack worden gekozen. Daarnaast is het minder risicovol om te experimenteren met nieuwe technologieën en gaat het ook gemakkelijker. Een nieuwe technologie kan als experiment op één of een paar services worden ingezet om de proef op de som te nemen.

Is Microservices het nieuwe SOA?

SOA (Service Oriented Architecture) heeft betrekking op delen zelfstandige functionaliteit die diensten bieden aan andere componenten. De services zijn verbonden in een netwerk. Je kunt Microservices zien als SOA 2.0 en dan met name vanwege de belofte van SOA die door Microservices waargemaakt wordt. Door meerdere Microservices te gebruiken kun je nu de volledige functionaliteit van een applicatie afdekken.

Een belangrijk verschil tussen Microservices en SOA is de integratie van de services. Er worden bij Microservices geen Enterprise Service Bussen gebruikt met veel intelligentie of webservices gebaseerd op zware protocollen (SOAP). De logica die nodig is wordt opgenomen in zelfstandige componenten: de zogenaamde microservices. Daardoor kan met lichte service protocollen gewerkt worden (JSON, REST).

Wanneer is Monolith beter dan Microservices?

Voor applicaties die niet bedoeld zijn om veel groter te worden in de toekomst, kan je het beste wel een monolithische structuur blijven gebruiken, aangezien Microservices ook een aantal heikele punten met zich meebrengt. Het is dan wel gemakkelijker om Microservices te deployen, maar dat voordeel gaat alleen op in vergelijking met grote monolithische structuren.

Als je besluit om Microservices te gaan gebruiken loop je ook aan tegen de complexiteit van het distribueren van de services naar de verschillende servers op verschillende plekken. En het werk om dat allemaal te managen. Bouwen in Microservices zal je helpen op de langere termijn als je applicatie groot wordt. Maar voor kleinere applicaties is het gewoon gemakkelijker om het bij de monolithische structuur te houden.

Contact met Senet

Senet Eindhoven
Gestelsestraat 258
5654 AM Eindhoven
Bekijk op kaart

+31(0)40-2930395

KvK nummer: 17115078
Btw nummer: NL807989083B01