Top Banner
Domain-Driven Design Three Strategies For dealing with Legacy Systems Eric Evans domainlanguage.com Twitter: @ericevans0 #DDD
60

Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Nov 25, 2018

Download

Documents

vuongdieu
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Domain-Driven Design Three Strategies

For dealing with Legacy Systems

Eric Evans domainlanguage.com

Twitter: @ericevans0 #DDD

Page 2: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Not all of a large system will be well designed.

Page 3: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Part 1: The Dilemma

Page 4: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Ground Up Rebuild

Page 5: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Ground Up Rebuild

Page 6: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Ground Up Rebuild We Dream

Page 7: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Ground Up Rebuild

Year 1

Year 2

Year 3

Legacy Replaced

Exciting New Features

Dream Time

Page 8: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Refactoring ... as it is in our Dreams

Page 9: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Where is Strategic Value?

Page 10: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Where is Strategic Value?

Page 11: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Where is Strategic Value?

or

Page 12: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Where is Strategic Value?

Page 13: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Where is Strategic Value?

Page 14: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Where is Strategic Value?

Page 15: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Where is Strategic Value?

No place to express a cohesive model!

Page 16: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Not all of a large system will be well designed.

Page 17: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

How could we just build the strategic part?

Page 18: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Part 2: A really quick introduction to DDD

Page 19: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Defining Our Terms What is a model?

How do we know what something means?

Page 20: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Defining Our Terms domain A sphere of knowledge or activity.

model A system of abstractions representing selected aspects of the domain.

context The setting in which a word or phrase appears that determines its meaning.

Page 21: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy
Page 22: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy
Page 23: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Two Modelling Mistakes

•  They keep trying to figure out the “true” nature of an elephant.

Page 24: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

DDD models don’t seek “realism”.

They should be useful for specific purposes.

Define Bounded Context

Page 25: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Two Modelling Mistakes

•  They keep trying to figure out the “true” nature of an elephant.

•  They insist on just one model, in spite of incomplete information and possibly different goals.

Page 26: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

There are always multiple models.

Page 27: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy
Page 28: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Bounded Context An explicit definition of where a particular model is well-defined and applicable. (Typically a subsystem, or the work owned by a particular team).

Define Bounded Context

Page 29: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy
Page 30: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Bounded Contexts

Model in ContextModel in ContextTranslationMap

Page 31: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy
Page 32: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

A Bad Strategy: The Enterprise Model

One Ring to rule them all, One Ring to find them, One Ring to

bring them all, and in the darkness bind them

Page 33: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy
Page 34: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy
Page 35: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy
Page 36: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy
Page 37: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Part 3: Three Sample Strategies

Page 38: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Strategy 1: Bubble Context

•  Modest commitment to DDD

•  Limited range of data needed from legacy

•  No synchronization risk

Page 39: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

How could we just build the strategic part?

Page 40: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

What were we hoping for in those first two years?

Year 1

Year 2

Year 3

Legacy Replaced

Exciting New Features

Page 41: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

A Platform of concepts

Page 42: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

All we really see of the lower layers is the platform interface.

A Platform of concepts

Page 43: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Build Platform Based on Model

Page 44: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Anticorruption Layer

Page 45: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Classic Repository

Page 46: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

ACL-Backed Repository

AC

L-Backed R

epository

Page 47: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

domainlanguage.com/newsletter

•  Bubble Context

•  ACL-backed Repository

Page 48: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Strategy 2: ACL Synchronization

•  Starting a new chapter

•  Organization committed to major new development with new design approach

•  May progress from Bubble Context as pilot project

Page 49: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

AC

L-Backed R

epository

Page 50: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Synchronizing ACL Synchronizing A

CL

Page 51: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

dddcommunity.org/strategicdesign

Page 52: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Strategy 3: Published Language Commons

•  A suite of services, events, etc. with interfaces expressed in terms of integration model

•  Implementations typically in distinct contexts

•  Consumers typically in distinct contexts

Page 53: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Expose a Legacy Asset in terms of Published Language

•  Modest Commitment to DDD

•  Specific functionality/data of legacy needed elsewhere

•  Reduce coupling with dependent systems and with other legacy capabilities

Page 54: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Classic Open-Host Service

SOA + Bounded Context

Page 55: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

ACL-Backed Open-Host Service

Page 56: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

3b: Event Channel Expressed in Published Language

•  Organization committed to major new development with new architecture

•  Relatively independent development in distinct contexts

•  More robust and verifiable system integration

Page 57: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

What it Looks Like

•  Domain Events defined in terms of published language “integration model”

•  Systems integrated through creating or consuming Domain Events

•  Legacy system modified to create events or ACL tells story of events in legacy

Page 58: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Event Channel

Page 59: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Three Example Strategies

•  Bubble context for a limited objective – ACL-backed Repository

•  ACL Synchronization – Self-contained context is peer to legacy

•  Published Language Commons – Expose Legacy Assets

•  ACL-backed Open Host Service •  Services in Published Language

– Domain Events Channel

Page 60: Domain-Driven Design Three Strategies - GOTO Bloggotocon.com/dl/jaoo-melbourne-2011/slides/DDD-Strategies-Evans.pdf · Domain-Driven Design Three Strategies For dealing with Legacy

Where to look for more

•  Context Mapping – Chapter 14 in DDD book

•  DDD Community (dddcommunity.org) – dddcommunity.org/strategicdesign

•  My evolving thoughts – domainlanguage.com/newsletter