Steeds meer organisaties willen hun IT-systemen zo inrichten dat ze snel wijzigingen kunnen doorvoeren en niet eens per half jaar een compleet systeemmoeten updaten. Dat is immers een weinig flexibele manier van werken en brengt risico’s met zich mee. Door microservices toe te passen, knip je functies los die in een groot systeem aan elkaar vastgeplakt zaten. Zijn microservices niet vooral iets voor hippe start-ups? Moet je je bestaande ERP-systeem overboord gooien? Software Architect Edwin van Wijk van Info Support weerlegt de grootste misverstanden over microservices.
Microservices: Fabels en fictie
1. Microservices en grote informatiesystemen gaan niet samen
“Soms bestaat de indruk dat microservices het startpunt van je architectuur moeten zijn. Een combinatie van microservices en een groter systeem, een monoliet, is echter zeker mogelijk. Vaak kun je zelfs niet anders. Als je bijvoorbeeld een ERP-systeem hebt en je bouwt een aantal microservices die op een bepaalde afdeling af en toe gegevens uitwisselen met het grote systeem, heb je een prima architectuur. Je kunt ook laagjes van microservices bouwen op oude systemen. Het kan zijn dat die oude systemen op den duur dan overbodig worden, maar vaak blijven ze bestaan, wat niet erg is. Wat bij microservices wordt onderschat, zijn de uitdagingen die in het algemeen komen kijken bij het bouwen van een gedistribueerd systeem. Om hier niet bij voorbaat mee vast te lopen, kun je bijvoorbeeld met een modulair opgebouwde monoliet starten. Daarmee focus je in eerste instantie meer op het onderzoeken van het probleemdomein.”
2. Microservices zijn een technische keuze
“Als alles goed draait, jouw klanten tevreden zijn en ze het niet erg vinden dat je systeem eens in het half jaar een dag uit de lucht gaat, moet je niet alles overhoop gaan gooien. Er moet een aanleiding zijn: een systeem is end of life, jouw klanten zijn ontevreden of jouw marketing manager kan niet snel genoeg zijn acties naar de markt brengen. Je moet altijd naar de achterliggende reden kijken. Daarnaast is een belangrijke randvoorwaarde dat je als organisatie agile bent en dat je regelmatig naar productie wilt, anders hoeven die services niet autonoom te zijn. Als je een product owner hebt die met user-story’s van zestig paginalange Word-documenten aankomt, gaat het regelmatig een nieuwe versie naar productie brengen niet lukken.”
3. Microservices zijn alleen interessant voor bedrijven als Netflix of Facebook
“Veel bedrijven zijn huiverig om eraan te beginnen omdat ze geen internetbedrijven zijn, maar dat is echt onzin. Microservices zijn niet alleen bedoeld om snel updates beschikbaar te stellen voor een groot aantal externe gebruikers of klanten, ze kunnen ook goed helpen om de IT binnen jouw organisatie op orde te krijgen en flexibeler te maken.”
4. Microservices zijn alleen geschikt voor startups
“Zoals gezegd, zijn microservices juist prima te combineren met grote, bestaande systemen in organisaties die al lang bestaan en die wendbaarder willen worden. Wil je microservices succesvol toepassen naast deze bestaande systemen, dan moet je wel goed naar zaken als infrastructuur en monitoring kijken. Typisch voor startups is dat zij vaak nog moeten ontdekken wat precies hun domein is. Heb je heel veel geïnvesteerd in allerlei microservices en ontwikkelt je business zich toch op een andere manier – iets wat bij veel startups gebeurt – dan wil je niet alles weer weg moeten gooien.”
5. Microservices zijn altijd sneller
“Een organisatie kiest voor microservices om wendbaarder te worden. Dat wil niet zeggen dat de performance van je systeem als geheel altijd sneller wordt en dat is ook niet erg. Wanneer je services opsplitst, moet je nu eenmaal vaker het netwerk over en berichtjes heen en weer sturen. Daar krijg je flexibele en autonome systemen voor terug.”
6. Er is een standaard stappenplan voor het bouwen van een microservices-applicatie
“Vaak wordt gedacht dat je een microservice inricht door aan een standaardset van regeltjes te voldoen. Architecten moeten ervaring opdoen en er is een mate van vakmanschap nodig binnen je software-developmentdiscipline om een succesvolle microservices-architectuur op te kunnen zetten.”
7. Een microservice heeft altijd een bepaalde omvang
“Vaak wordt de term ‘micro’ geassocieerd met de omvang van de services. ‘Ze moeten klein zijn – maximaal één A4’tje code’ hoor je dan. Maar dat is niet waar het om gaat. De kern is dat een service zo veel mogelijk gespecialiseerd is in één ding.”
8. Ik moet een special microservices-platform hebben
“Wat ik jammer vind, is dat er leveranciers zijn die daarop inspelen: wij hebben hét microservices-framework en daarmee lossen we alle problemen op. Voor je het weet, zit je weer met verdor lock-in of een framework waarin je dingen op een bepaalde manier móet doen. Het is heel lastig om daar uit te breken. Aan de andere kant moet je ook niet alles zelf willen bouwen. Er zijn genoeg goede open source-oplossingen beschikbaar. Elk team zou voor zichzelf moeten uitzoeken welke frameworks en libraries geschikt zijn. En wissel ook onderling ervaring uit, om samen te komen tot de meest geschikte set van hulpmiddelen voor de organisatie.”
Microservices in de praktijk
Veel bedrijven hebben het idee dat ze meer uit hun IT kunnen halen. Bijvoorbeeld omdat ze vaker updates willen uitbrengen of omdat het te lang duurt om te reageren op vragen uit de markt. Microservices zijn kleine, autonome onderdelen die zelfstandig een proces kunnen uitvoeren zonder dat de rest van het systeem er last van heeft.
Een ziekenhuis kan bijvoorbeeld microservices inrichten voor verschillende afdelingen. Die gespecialiseerde services kunnen dan inspelen op de specifieke wens van de afdeling zonder rekening te hoeven houden metde lange doorlooptijd van het hele ziekenhuis.
Van Wijk noemt de pensioenwereld als een goed voorbeeld: “Voorheen was in die wereld vrijwel geen concurrentie: als werknemer zat je vast aan het fonds van jouw werkgever. Sinds de splitsing tussen pensioenfondsen en -uitvoerders, is het mogelijk over te stappen als een uitvoerder niet de gewenste service biedt. Daarom wordt in de pensioenwereld nu veel van deze technologie toegepast. Je moet concurreren op servicelevels, toegevoegde diensten. Die moet je heel snel in de markt kunnen zetten om de concurrentie voor te blijven. Dan moet je flexibel zijn en in heel kleine iteraties software releasen, anders zijn jouw klanten weg.”