Bill Penberthy

Information & Communications Technology

Goverment, Social Sector & Education

Business & Management

Media & Information

Software Architecture Software Development Trust Leadership

Seattle, Washington, United States

Modernizing an existing system to take a more domain-driven approach

Domain-driven design seems “straight-forward” when looking at green field development. Implementing that in an existing enterprise system, however, is daunting. In this workshop we will demonstrate the steps necessary in refactoring a non-DDD SOA-based system using DDD approaches, especially Command-Query Responsibility Segregation (CQRS) and Event Sourcing patterns.

The use of a service-oriented architecture is not new. There are thousands of existing enterprise systems that are built using SOA. This would typically look like a set of “client applications” that talk to a set of “back-end services” that were designed using a one-size-fits-all approach, where the representation of a persisted object is a union of all the business needs. The growth in domain-driven design shows how that may not be the best approach.

This session will be a dive into the process of modernizing a SOA-based enterprise system to support a DDD approach. We will talk about what this looks like at a high level and then demonstrate how this is supported by using Command-Query Responsibility Segregation (CQRS) and Event Sourcing.

Simply put, CQRS is an approach where different models are used when reading information than is used when updating that information. This approach becomes especially important as designs start being domain-driven, because each participant in the enterprise may have a different representation of that information. These different representations would be best managed with separate models. As part of this session, we will demonstrate (sometimes in code):

- What a non-CQRS approach looks like (current state)
- What a CQRS approach looks like (new state)
- How you manage data conversion
- Why we would take this approach
- How to tell when you have gone wrong

Event sourcing is an approach where all of the changes to application state are stored as a list, or sequence, of events. As part of this session we will walk through (sometimes in code):

- How event sourcing fits into DDD
- How this need is managed now (current state)
- What the implementation looks like
- How you manage the conversion
- How you can evaluate the effectiveness

Lastly, we will walk through how these changes fit into the overall modernization strategy.

Bill Penberthy

Curmudgeonly .NET Advocate in a Modern Apps world

With over 25 years in software development (almost 15 of which is .NET), Dr. Bill brings a pragmatic (curmudgeonly?) approach to software development. With much of that time spent in consulting, he has worked on many different projects and used many different designs and approaches. He recently switched to the dark side and uses his development experience in a product management role where he acts as a .NET developer advocate with AWS, helping AWS to build a better and more rich .NET developer experience.

Bill's full speaker profile