In het Axon framework is het gebruikelijk te werken met een shared library wat niet in lijn is met domain driven design. In deze opdracht onderzoek je welke oplossingen Axon al biedt om dit op te lossen en wat nog toegevoegd moet worden om de Separation of Concerns te handhaven.

Benodigde interesse(s)

  • Event-driven microservices
  • Event-sourcing
  • Axon framework

Wat krijg je

  • Een uitdagende afstudeeropdracht
  • € 1000 vergoeding, € 500 + leaseauto of € 600 + woonruimte
  • Professionele begeleiding
  • Trainingen gericht op jouw afstudeertraject
  • Sparren met andere afstudeerders en collega’s
  • Twee vakantiedagen per maand

Wat je gaat doen

  • 35% Afstudeeronderzoek
  • 40% Analyseren, ontwerpen, realiseren
  • 25% Documentatie

Axon is een open-source framework voor event-driven microservices en domain driven design. Aangezien events in de ene microservice gegooid en in de andere opgevangen kunnen worden, is het binnen Axon gebruikelijk om de events te definiëren in een shared library.

Dit levert echter een aantal problemen op. Doordat events (domein) objecten bevatten met de data die door de events naar verschillende microservices wordt gestuurd, moeten deze (domein) objecten ook in dezelfde shared library beschikbaar zijn. Hiermee wordt effectief 1 groot domeinmodel voor de hele applicatie gecreëerd. Dit is niet in lijn met de theorie van domain driven design. Bij een wijziging aan de structuur van je events moeten eigenlijk alle services geüpdatet worden, om zo nog gebruik te maken van de laatste versie van de shared library (en dus het domeinmodel).

Stel dat event X gebruikt wordt in microservice A en B. Bij een uitbreiding van de functionaliteit heeft microservice A meer info nodig en wordt event X uitgebreid. Er zal dan dus ook een wijziging in microservice B plaats moeten vinden, omdat deze afhankelijk zijn van dezelfde event definities.

De opdracht

Hoe kan het Axon framework effectief ingezet worden met respect voor de autonomiteit van de services en de bounded contexts? Wat biedt Axon daarvoor out-of-the-box en welke artefacten moeten worden toegevoegd om de gewenste Separation of Concerns te handhaven?