• Expertises

    Door middel van welke expertises we jouw organisatie ondersteunen

  • Hoe we met succes voor een scala aan klanten van betekenis zijn geweest

  • Over Application Innovation, onze werkwijze en wat we voor je kunnen betekenen

  • Nieuws, events en artikelen van Application Innovation

  • Nieuwsgierig geworden? Kom werken bij Conclusion Application Innovation

Van monoliet naar cloud-native microservices

In dit blog vertelt collega Jeroen, Lead Developer bij Conclusion Application Innovation, over een project bij Royal FloraHolland dat hij samen met team Veilen heeft uitgevoerd. 

12 april 2021   |   Blog   |   Door: Conclusion Application Innovation

Deel

Ik ben Jeroen Timmermans, Lead Developer bij Conclusion Application Innovation. Samen met 4 andere ontwikkelaars, 2 Information Consultants, 2 Testers, 1 UX Designer, 1 Solution Architect, 1 ScrumMaster en 1 Product Owner vormen wij Team VeileNext voor Royal FloraHolland. Onze missie is om de huidige monolithische applicaties binnen het domein Veilen om te zetten naar een microservice-architectuur. Door de functionaliteiten die momenteel in één grote applicatie verwerkt zitten op te splitsen in meerdere kleine applicaties, kunnen we veel nauwkeuriger en gerichter de capaciteit van ons systeem schalen naar gelang de belasting. Een hoge belasting op de ene functie betekent immers niet dat een andere functie automatisch ook zwaarder belast wordt.

Het bedenken van een oplossing

We hebben daarom ervoor gekozen om een primaire splitsing aan te houden op functioneel gebied; zo hebben we onder andere een service voor partij-informatie, het aansturen van de veilingklok, het verwerken van koopintenties en het omzetten van koopintenties naar koopovereenkomsten die doorgestuurd kunnen worden naar de domeinen Back Office en Logistiek voor verdere afhandeling.
Binnen deze functionele sub-domeinen hebben we een technische opsplitsing aangebracht op basis van de requirements; AWS Batches voor taken die op gezette tijden moeten runnen, Lambda-functies voor sporadische externe calls en Docker-containers voor services die een lage response-tijd nodig hebben.

Voor data-storage hebben we ook per individuele use-case bekeken wat de beste oplossing is. We gebruiken DynamoDB voor snelle, eenvoudige key-value-lookups, en serverless Aurora op de PostgreSQL-engine voor een langere termijn relationele opslag. Naast de lagere kosten, biedt Aurora ook het voordeel dat deze vele malen beter schaalbaar is dan bijvoorbeeld SQL Server, waardoor de database niet de bottleneck van onze systemen kan worden.

Schaalbaarheid

Schaalbaarheid is voor ons een speerpunt in dit project, de drukte op de veiling bij Royal FloraHolland kan per dag enorm verschillen, en is niet altijd goed van te voren in te schatten. Door het gebruik van Linux-based Docker-containers voor onze .Net Core services kunnen we standaard containers gebruiken die de absoluut minimale load aan kunnen, en enorm snel opschalen indien de belasting oploopt. Waar een monoliet tussen de tien minuten tot soms wel een half uur nodig heeft om op te schalen, kunnen deze microservices binnen een minuut een nieuwe instantie realiseren. Hierdoor is de impact van de verhoogde drukte op de business tot een minimum beperkt.

Voor sommige van onze services is een stukje in-memory storage vanwege de snelheid noodzakelijk. Bij meerdere instanties van dezelfde service is dat problematisch, omdat ze geen geheugen delen en kan dit tot problemen leiden. Om dat het hoofd te bieden hebben we deze services voorzien van een Redis-cache, een snelle tijdelijke opslag die door alle instanties van de service gedeeld wordt. In deze Redis-cache houden we bijvoorbeeld binnengekomen koopintenties bij.

Om deze services samen te laten werken, hebben we gekozen voor het choreografie-patroon. Hierbij weet elke individuele service wat er op welk moment moet gebeuren. Onderling informeren de services elkaar over gebeurtenissen, via het interne netwerk van AWS met snelheden tot 100Gb/s zodat de latency tot een minimum beperkt blijft. De services worden ontsloten met behulp van CloudMap, een Service Discovery dienst van AWS waarmee je services in je systeem met een DNS kunt benaderen, in plaats van op basis van IP adressen die je bij elke deployment moet gaan delen met alle relevante services.

Het resultaat

Dit alles samen, in combinatie met de modulaire opzet van de software, zorgt er voor dat we een veil-omgeving opgebouwd hebben, en nog verder aan het uitbouwen zijn, die optimaal gebruik maakt van de voordelen van de cloud, flexibel genoeg is om functionaliteit toe te voegen, en een basis vormt voor het veilen de komende jaren.

Terug naar het nieuwsoverzicht
Business Done Differently Powered by Conclusion
© Conclusion 2021   |  De kleine lettertjes  |  Privacy & Security
  • Expertises
© Conclusion 2021   |  De kleine lettertjes  |  Privacy & Security