Op zoek naar de ene vacature die echt bij jou past?
Zoek binnen ons huidige aanbod ICT vacatures

 

Whoop, whoop, it’s the sound of microservices!

Bert Jan Schrijver vertelt bij iSense over microservices bij de Nationale politie

Slimme databases om relschoppers snel op te sporen. ICT-applicaties die gevaarlijke verkeersplekken in kaart brengen. Sociale media gebruiken om incidenten sneller af te handelen. Je staat er misschien niet altijd bij stil, maar in de politiewereld speelt ICT een cruciale rol bij het oplossen van misdaad en het bewaken van de veiligheid. Bert Jan Schrijver, CTO bij OpenValue en software craftsman bij JPoint, werkt bij de productlijn Cloud, Big Data, Internet van de Nationale politie aan een microservices-architectuur. Tijdens de Java Summit bij iSense ICT Professionals deelde hij zijn ervaringen en ‘learnings’.

Dat is nogal een operatie, het bouwen van een slimme ICT-omgeving voor de politie. Waar lag de uitdaging?
De producten die we maken worden door duizenden collega’s binnen de politie gebruikt. Schaalbaarheid is dan van groot belang. Dat betekent dat er honderden servers, duizenden virtuele servers en duizenden desktops zijn. De vraag is niet of maar wanneer er spullen crashen. Als je bedenkt wat er op het spel kan staan, begrijp je ook hoe belangrijk een wendbare en betrouwbare infrastructuur is. Zeker in deze tijd, waarin criminaliteit zich ook vaak afspeelt in de digitale wereld en de donkere krochten van het web. Netwerksystemen en databases zijn dan essentieel om snel en veel informatie in te winnen. We zijn met drie ontwikkelteams aan de slag gegaan om high tech, big data webapplicaties te bouwen in een beveiligde cloud-omgeving.

Organisaties als Netflix en Amazon zweren erbij, maar waarom kozen jullie voor microservices?
Omdat je daarmee kleine, doelgerichte applicaties kunt bouwen. Een microservices-architectuur bestaat uit tientallen tot honderden onderdelen die, onafhankelijk van elkaar, bewegen. Die individuele componenten kun je dus veel makkelijker aanpassen, optimaliseren en opschalen dan een monolithische applicatie. Ook in samenwerkingsverbanden werkt dat beter, omdat je zo daadwerkelijk teams kunt bouwen rondom groepen microservices. Naast de schaalbaarheid was de modulariteit een belangrijk punt. We wilden onderdelen onafhankelijk van elkaar kunnen ontwikkelen en verschillende technologieën per deel kunnen gebruiken. Heel belangrijk voor software teams die snel en proactief moeten kunnen reageren.

Zijn er ook nadelen aan het gebruik van microservices?
De paradox is dat al die onafhankelijk bewegende deeltjes weliswaar makkelijker te beheren zijn, maar tegelijkertijd voor complexiteit zorgen omdát ze met zovelen zijn. Het blijft een gedistribueerd systeem en dat is een stuk complexer dan wanneer je ergens een enkele applicatie neerzet. Als er een probleem is, moet je van meer markten thuis zijn om erachter te komen waar het probleem zich bevindt. In die zin is het lastiger.

Welke drie tools hebben je verrast tijdens het bouwen aan jullie microservices-omgeving?
We gebruiken Consul, een tool van HashiCorp om services in je infrastructuur te ontdekken en te configureren. Dat heeft ons erg geholpen als we wilden weten wat waar stond te draaien. Performance-testen doen we met Gatling, een tool op basis van Scala, Akka en Netty waarmee je via een DSL performance-testen kunt schrijven om erachter te komen of je spullen snel genoeg draaien. Hm, ik moest er drie noemen, toch? Dan ga ik voor Angular 4, waarmee we onze frontend bouwen. Heerlijk om mee te werken omdat er een sterke componenten-architectuur is, je code schrijft met TypeScript, waardoor je objectgeoriënteerd kunt programmeren (het wordt bijna Java), en RxJS, wat veel werk rondom asynchrone calls voor je wegneemt.

Jullie werken uitsluitend met open source-producten. Was dat lastig, als je kijkt naar de move naar microservices?
We kiezen heel bewust voor open source-spullen, vanuit de overtuiging dat we liever in mensen investeren dan in licenties. Volgens mij doen open source-alternatieven niet onder voor wat er door grote verkopers wordt verkocht, al zie ik een gat op het gebied van security tools. Tegelijkertijd hebben we best zitten worstelen met het gestandaardiseerd uitrollen van de hele infrastructuur. In het begin kwam dat neer op veel handwerk, maar uiteindelijk hebben we met een combinatie van Terraform, Puppet en wat zelfgemaakte scripts nog maar één druk op de knop nodig om de service in gang te zetten. Een bepaalde mate van maturiteit op DevOps-vlak is wel belangrijk. Als je qua infrastructuur en serverbeheer nog niet zo ver bent, kun je er beter niet aan beginnen.

Waar ga je je de komende tijd op focussen?
Met het verbeteren van onze deployments, zodat we het hele landschap kunnen uitrollen zonder dat gebruikers daar iets van merken. Op dit moment is dat nog niet zo. Verder kunnen we nog verbeteringen doorvoeren op gebied van alerts, automatische notificaties en monitoring. Bijvoorbeeld dat je als ontwikkelaar een melding krijgt dat de error rates bij een service omhoog gaan en de kans bestaat dat hij in het komende uur plat gaat. Een meer proactieve benadering, daar werken we aan.

Welke tips zou je ontwikkelaars geven die voor een vergelijkbare uitdaging staan?
Begin klein. Identificeer de pijnplekken binnen een organisatie, bedenk wat je kunt doen om ze op te lossen en begin bij wat je de minste inspanning kost. Heb je je eerste, kleine verbetering gedaan? Geniet dan van wat dat oplevert en vier dat succes. Vervolgens ga je verder met de volgende kleine stap. Omdat je het met kleine stapjes aanpakt, krijg je veel sneller draagvlak binnen de organisatie. Het is belangrijk dat er in alle lagen vertrouwen ontstaat in het werk van de IT-afdeling. Alleen zo krijgen deze mensen alle vrijheid om slimme verbeteringen door te voeren. En alleen zo kan de organisatie ruimschoots profiteren van de laatste technologische ontwikkelingen.

Deze pagina delen via
Weet u zeker dat u de pagina wilt verlaten?
U heeft wijzigingen gedaan aan het formulier op deze pagina en deze gegevens nog niet opgeslagen. Weet u zeker dat u deze pagina wilt verlaten?