Living In Your Own Bubble: Introducing DDD in Legacy Software
In the complex landscape of Dutch agriculture,where the value of cows impacts taxes and business, this session unveils a solution to implement new rules within a legacy system. Explore the Bubble Context method to seamlessly integrate changes without compromising the existing setup, showcasing the power of Domain Driven Design in legacy system navigation.
There are a lot of farms in the Netherlands, and a lot of cows. All cows on a farm have a certain value, based on their history. Cows are sold and bought, being born and slaughtered, inseminated or milked, generating a large stream of information. Information which is used by the farmers but also by the government. Taxes, carbon footprints, CO2 reductions, business value, it all needs up-to-date and accurate animal information.
Due to new laws, some serious changes had to be implemented on a legacy system. Nightly processing of new information was already problematic, extending the business rules would even make it slower. Scaling and extending the legacy application, which heavily leaned on stored procedures and triggers, appeared to be too difficult. While Domain Driven Design could really help to bring clarity in this complex domain, rebuilding was not an option.
Time to introduce the Bubble Context of which Eric Evans wrote in his paper “Getting Started With DDD When Surrounded By Legacy systems”! In this session I will use a simplified version of the legacy system and demonstrate how to create your own bubble context to apply new business rules while keeping the existing system intact. In fact, we hardly touch the existing system! I will explain the advantages and disadvantages of a bubble context and how to move even further away from the legacy system.
Sources & inspiration
- GETTING STARTED WITH DDD WHEN SURROUNDED BY LEGACY SYSTEMS (Eric Evans, PDF)
- Domain-Driven Design heuristics for dealing with legacy software (Kenny Baas-Swegler)
- Domain-Driven Design Distilled (Vaughn Vernon, book)
- Implementing Domain-Driven Design (Vaughn Vernon, book)
- Working Effectively with Legacy Code (Michael Feathers, book)
- Code That Fits in Your Head: Heuristics for Software Engineering (Mark Seemann, book)
- Living In Your Own Bubble (GitHub Repository)