Er zijn veel boerderijen in Nederland, en veel koeien. Alle koeien op een boerderij hebben een bepaalde waarde, gebaseerd op hun geschiedenis. Koeien worden gekocht en verkocht, geboren en geslacht, geïnsemineerd of gemolken, wat een grote stroom van informatie genereert. Deze informatie wordt gebruikt door zowel de boeren als de overheid. Belastingen, koolstofvoetafdrukken, CO2-reducties, bedrijfswaarde, het vereist allemaal actuele en nauwkeurige dierinformatie. Vanwege nieuwe wetten moesten er enkele serieuze veranderingen worden doorgevoerd in een verouderd systeem voor het beheren van deze dierinformatie. Het verwerken van nieuwe informatie 's nachts was al een probleem, en het uitbreiden van de bedrijfsregels zou deze verwerking nog trager maken. Het schalen en uitbreiden van de oude toepassing, die sterk leunde op stored procedures en database triggers, bleek te moeilijk te zijn. Terwijl Domain Driven Design echt kon helpen om duidelijkheid te brengen in dit complexe domein, was herbouwen geen optie. Tijd om de Bubble Context te introduceren waarover Eric Evans schreef in zijn artikel "Getting Started With DDD When Surrounded By Legacy systems"! In deze sessie zal ik een vereenvoudigde versie van het oude systeem gebruiken en laten zien hoe je je eigen bubble context kunt creëren om nieuwe bedrijfsregels toe te passen, terwijl het bestaande systeem intact blijft. In feite raken we het bestaande systeem nauwelijks aan! Ik zal de voor- en nadelen van een bubble context uitleggen en laten zien hoe je nog verder weg kunt bewegen van het oude systeem.
17. Jacob Duijzer — 27 maart 2024 — devConf 2024
Dier-gebeurtenissen
18. Jacob Duijzer — 27 maart 2024 — devConf 2024
Legacy application
Gigi | Unsplash
19. Jacob Duijzer — 27 maart 2024 — devConf 2024
The Bubble Context To The Rescue
Timothy Eberly | Unsplash
20. Jacob Duijzer — 27 maart 2024 — devConf 2024
A 'bubble' is a small, bounded context established using an
Anticorruption Layer (ACL) for the purpose of a particular
development effort and not intended necessarily to be
expanded or used for a long time.
Eric Evans — Getting Started With DDD When Surrounded by Legacy Systems
23. Jacob Duijzer — 27 maart 2024 — devConf 2024
De “Dieren” Bubble Context
● Replacing database functions & triggers
● Using the Strangler Fig pattern
● Introducing a queue
● Enabling fast, on-demand, per animal processing
● Keeping our database intact
24. Jacob Duijzer — 27 maart 2024 — devConf 2024
Leven in je eigen bubbel: demo time!
● Show the data flow inside the bubble
● Explain the Anti Corruption Layer
● Handling different events
● Implement the Departure & Arrival event handler
Rajesh Ram | Unsplash
25. Jacob Duijzer — 27 maart 2024 — devConf 2024
Vervolgstappen
● Autonomous Bubble Context
● Exposing Legacy Assets as Services
● Expanding a Bubble
Philipp Knape | Unsplash
26. Jacob Duijzer — 27 maart 2024 — devConf 2024
Key takeaways
Rajesh Ram | Unsplash
27. Jacob Duijzer — 27 maart 2024 — devConf 2024
Vragen?
Annie Spratt | Unsplash
28. Jacob Duijzer — 27 maart 2024 — devConf 2024
Bronnen & Inspiratie:
● GETTING STARTED WITH DDD WHEN SURROUNDED BY LEGACY SYSTEMS
● Domain-Driven Design heuristics for dealing with legacy software (Kenny
Baas-Swegler)
● Domain-Driven Design Distilled - Vaugn Vernon
● Implementing Domain-Driven Design - Vaugn Vernon
● Domain-Driven Design: Tackling Complexity in the Heart of Software - Eric Evans
● Working Effectively with Legacy Code - Michael Feathers
● Code That Fits in Your Head: Heuristics for Software Engineering - Mark Seemann
● Living In Your Own Bubble - Repository
29. Jacob Duijzer — 27 maart 2024 — devConf 2024
Bedankt!
https://www.linkedin.com/in/jacobduijzer/
https://github.com/jacobduijzer