Slide 1

Slide 1 text

vladikk doit-intl.com #DDDEU 7 YEARS OF DDD or Tackling Complexity in Large Scale Marketing Systems

Slide 2

Slide 2 text

vladikk doit-intl.com #DDDEU YAY!!!

Slide 3

Slide 3 text

vladikk doit-intl.com #DDDEU

Slide 4

Slide 4 text

vladikk doit-intl.com #DDDEU Your Product Marketing Strategy Creatives Campaigns Sales Agents Optimization Profits

Slide 5

Slide 5 text

vladikk doit-intl.com #DDDEU THE FIRST BOUNDED CONTEXT 01

Slide 6

Slide 6 text

vladikk doit-intl.com #DDDEU

Slide 7

Slide 7 text

vladikk doit-intl.com #DDDEU

Slide 8

Slide 8 text

Very nice!!!1

Slide 9

Slide 9 text

vladikk doit-intl.com #DDDEU Aggregates everywhere!!!

Slide 10

Slide 10 text

vladikk doit-intl.com #DDDEU Aggregates everywhere!!! Creative Agency Advertiser Publisher Website Placement Ad Zone Ad Type Target Market Group Zone Type Funnel Contract Budget Unit Campaign

Slide 11

Slide 11 text

vladikk doit-intl.com #DDDEU The Bounded Context Creative Agency Advertiser Publisher Website Placement Ad Zone Ad Type Target Market Group Zone Type Funnel Contract Budget Unit Audience

Slide 12

Slide 12 text

vladikk doit-intl.com #DDDEU Domain Model Service / Application Layer Presentation Infrastructure Anemic! Behaviour

Slide 13

Slide 13 text

vladikk doit-intl.com #DDDEU Imperfect architecture “QA is for cowards” BUT IT WORKED!

Slide 14

Slide 14 text

vladikk doit-intl.com #DDDEU UBIQUITOUS LANGUAGE

Slide 15

Slide 15 text

vladikk doit-intl.com #DDDEU Domain Experts Software Developers No experience in online marketing Nice people!

Slide 16

Slide 16 text

vladikk doit-intl.com #DDDEU Smooth communication Strong grasp of the business domain Working software Aggressive time to market

Slide 17

Slide 17 text

vladikk doit-intl.com #DDDEU Ubiquitous Language Anemic Domain Model

Slide 18

Slide 18 text

vladikk doit-intl.com #DDDEU Leads Sales Agents Ads

Slide 19

Slide 19 text

vladikk doit-intl.com #DDDEU Leads CRM Categorize Desk Desk Desk Sales Agents Sales Agents Sales Agents Clients’ Systems

Slide 20

Slide 20 text

vladikk doit-intl.com #DDDEU

Slide 21

Slide 21 text

vladikk doit-intl.com #DDDEU THE CRM BOUNDED CONTEXT 02

Slide 22

Slide 22 text

vladikk doit-intl.com #DDDEU Ubiquitous Language Anemic Domain Model

Slide 23

Slide 23 text

vladikk doit-intl.com #DDDEU Creative Agency Publisher Website Advertiser Ad Zone Ad Type Target Market Group Zone Type Funnel Contract Budget Unit Audience Group Desk Qualification Assessment Organization Unit Assignment Rank Message On-site Activity Placement Visit Brand Marketing Lead CRM Lead Marketing Campaign CRM Campaign

Slide 24

Slide 24 text

vladikk doit-intl.com #DDDEU Domain Experts Software Developers …. Lead …. …. Campaign…

Slide 25

Slide 25 text

vladikk doit-intl.com #DDDEU

Slide 26

Slide 26 text

vladikk doit-intl.com #DDDEU

Slide 27

Slide 27 text

vladikk doit-intl.com #DDDEU BOUNDED CONTEXTS PROTECT THE LANGUAGE AGGREGATES PROTECT CONSISTENCY OF DATA

Slide 28

Slide 28 text

vladikk doit-intl.com #DDDEU Creative Agency Publisher Website Advertiser Ad Zone Ad Type Target Market Group Zone Type Funnel Contract Budget Unit Audience Group Desk Qualification Assessment Organization Unit Assignment Rank Message On-site Activity Placement Visit Brand Marketing Lead CRM Lead Marketing Campaign CRM Campaign

Slide 29

Slide 29 text

vladikk doit-intl.com #DDDEU Creative Agency Publisher Website Advertiser Ad Zone Ad Type Target Market Group Zone Type Funnel Contract Budget Unit Audience Placement Visit Lead Campaign Marketing Group Desk Qualification Assessment Organization Unit Assignment Rank Message On-site Activity Brand Lead Campaign CRM

Slide 30

Slide 30 text

vladikk doit-intl.com #DDDEU Aggregates will: • Protect transactional boundaries
 • Encompass business logic and invariants Domain Service / Application Layer Presentation Infrastructure

Slide 31

Slide 31 text

vladikk doit-intl.com #DDDEU Aggregates will: • Protect transactional boundaries
 • Encompass business logic and invariants Domain Service / Application Layer Presentation Infrastructure Domain Service / Application Layer

Slide 32

Slide 32 text

vladikk doit-intl.com #DDDEU

Slide 33

Slide 33 text

vladikk doit-intl.com #DDDEU

Slide 34

Slide 34 text

vladikk doit-intl.com #DDDEU

Slide 35

Slide 35 text

vladikk doit-intl.com #DDDEU Stored procedures???

Slide 36

Slide 36 text

vladikk doit-intl.com #DDDEU Group Desk Qualification Assessment Organization Unit Assignment Rank Message On-site Activity Brand Lead Campaign Lead

Slide 37

Slide 37 text

vladikk doit-intl.com #DDDEU L e a d CRM Team DBA Team

Slide 38

Slide 38 text

vladikk doit-intl.com #DDDEU

Slide 39

Slide 39 text

vladikk doit-intl.com #DDDEU Inconsistent models No shared understanding Duplication of knowledge Went out of sync quickly NIGHTMARE

Slide 40

Slide 40 text

vladikk doit-intl.com #DDDEU Wasn’t delivered on time

Slide 41

Slide 41 text

vladikk doit-intl.com #DDDEU Wasn’t delivered on time Production issues

Slide 42

Slide 42 text

vladikk doit-intl.com #DDDEU Wasn’t delivered on time Production issues Data corruption

Slide 43

Slide 43 text

vladikk doit-intl.com #DDDEU Wasn’t delivered on time Production issues Data corruption Thrown away and reimplemented

Slide 44

Slide 44 text

vladikk doit-intl.com #DDDEU Ubiquitous Language Domain Model Bounded Contexts Protect w/ Implement as

Slide 45

Slide 45 text

vladikk doit-intl.com #DDDEU Ubiquitous Language Domain Model Bounded Contexts Protect w/ Implement as …Dude, where are Sub-Domains?

Slide 46

Slide 46 text

Not all of a large system will be well designed “ Eric Evans

Slide 47

Slide 47 text

vladikk doit-intl.com #DDDEU THE CRUNCHERS BOUNDED CONTEXT 03

Slide 48

Slide 48 text

vladikk doit-intl.com #DDDEU Marketing CRM Analysis Customer Events Marketing CRM

Slide 49

Slide 49 text

vladikk doit-intl.com #DDDEU Marketing CRM Analysis Customer Events Event Crunchers

Slide 50

Slide 50 text

vladikk doit-intl.com #DDDEU Competitive advantage? - No Off-the-shelve solution? - No => Supporting sub-domain

Slide 51

Slide 51 text

vladikk doit-intl.com #DDDEU Layered Architecture Transaction Script Worked …. for a while

Slide 52

Slide 52 text

vladikk doit-intl.com #DDDEU Customer Events Event Crunchers Marketing CRM Analysis Flag Flag Calculated fields

Slide 53

Slide 53 text

vladikk doit-intl.com #DDDEU Marketing CRM Analysis Customer Events Event Crunchers

Slide 54

Slide 54 text

vladikk doit-intl.com #DDDEU Customer Events Event Crunchers (BBOM) CRM Marketing Analysis

Slide 55

Slide 55 text

vladikk doit-intl.com #DDDEU Customer Events Event Crunchers (Event Sourced) CRM Marketing Analysis

Slide 56

Slide 56 text

vladikk doit-intl.com #DDDEU THE BONUSES BOUNDED CONTEXT 04

Slide 57

Slide 57 text

vladikk doit-intl.com #DDDEU Sales Commissions Reports

Slide 58

Slide 58 text

vladikk doit-intl.com #DDDEU Competitive advantage? - No Off-the-shelve solution? - No => Supporting sub-domain

Slide 59

Slide 59 text

vladikk doit-intl.com #DDDEU Active Record Service / Application Layer Presentation Infrastructure

Slide 60

Slide 60 text

vladikk doit-intl.com #DDDEU Sales Commissions Reports Let’s try different percentages What if the percentage could be a function of a price? No, what if the percentage is a function of number of sales? No, no, the percentage will be a function both of number of sales and sale amount And another upgrade if there are more than Y sales per week! But we will upgrade the percentage if there are more than X sales per month!

Slide 61

Slide 61 text

vladikk doit-intl.com #DDDEU Event Sourced Domain Model Service / Application Layer Presentation Infrastructure BIG BALL OF MUD

Slide 62

Slide 62 text

vladikk doit-intl.com #DDDEU Active Record Service / Application Layer Presentation Infrastructure Transaction Script Service / Application Layer Presentation Infrastructure Event Crunchers Bonuses Ubiquitous Language

Slide 63

Slide 63 text

vladikk doit-intl.com #DDDEU Event Sourced Domain Model Service / Application Layer Presentation Infrastructure Event Sourced Domain Model Service / Application Layer Presentation Infrastructure Event Crunchers Bonuses Ubiquitous Language

Slide 64

Slide 64 text

vladikk doit-intl.com #DDDEU Ubiquitous Language Core Bounded Contexts Protect by
 decomposing to Identify Domains Domain Model Supporting Generic AR / TS Adopt Implement as

Slide 65

Slide 65 text

vladikk doit-intl.com #DDDEU WHAT WE HAVE L E A R N E D

Slide 66

Slide 66 text

vladikk doit-intl.com #DDDEU UBIQUITOUS LANGUAGE 01

Slide 67

Slide 67 text

vladikk doit-intl.com #DDDEU UBIQUITOUS LANGUAGE THE CORE DOMAIN OF DOMAIN-DRIVEN DESIGN

Slide 68

Slide 68 text

vladikk doit-intl.com #DDDEU Marketing Ubiquitous Language Business goals achieved CRM Ubiquitous Language Production issues Long and painful refactoring Event Crunchers Ubiquitous Language Big ball of mud Bonuses Ubiquitous Language Refactored in time

Slide 69

Slide 69 text

vladikk doit-intl.com #DDDEU DOMAIN TYPES 02

Slide 70

Slide 70 text

vladikk doit-intl.com #DDDEU Core Supporting Generic

Slide 71

Slide 71 text

vladikk doit-intl.com #DDDEU Generic Domain Adopt / Buy Supporting Domain Active Record / Transaction Script Core Domain Domain Model / Event Sourcing

Slide 72

Slide 72 text

vladikk doit-intl.com #DDDEU COMPANIES CHANGE, EVOLVE, REINVENT THEMSELVES DOMAINS' TYPES CHANGE ACCORDINGLY

Slide 73

Slide 73 text

vladikk doit-intl.com #DDDEU SUPPORTING ➤ CORE • Event Crunchers • Bonuses

Slide 74

Slide 74 text

vladikk doit-intl.com #DDDEU Generic Domain Adopt / Buy Supporting Domain Active Record / Transaction Script Core Domain Domain Model / Event Sourcing

Slide 75

Slide 75 text

vladikk doit-intl.com #DDDEU Generic Domain Adopt / Buy Supporting Domain Active Record / Transaction Script Core Domain Domain Model / Event Sourcing

Slide 76

Slide 76 text

vladikk doit-intl.com #DDDEU Less waste Dialog with the business IMPLEMENTATION DESIGN ➤ DOMAIN TYPE

Slide 77

Slide 77 text

vladikk doit-intl.com #DDDEU • Questionable competitive edge? • Unexpected competitive edge? BUSINESS COMPLEXITY ≠ DOMAIN TYPE?

Slide 78

Slide 78 text

vladikk doit-intl.com #DDDEU SUMMARY

Slide 79

Slide 79 text

vladikk doit-intl.com #DDDEU Creative Agency Advertiser Publisher Website Placement Ad Zone Ad Type Target Market Group Zone Type Funnel Contract Budget Unit Campaign Aggregates everywhere!!!

Slide 80

Slide 80 text

vladikk doit-intl.com #DDDEU Ubiquitous Language Bounded Contexts Protect by
 decomposing to Design
 Implementation Core Supporting Generic Domain Model AR / TS Adopt Confirm w/
 Business Ubiquitous Language Everywhere!!!

Slide 81

Slide 81 text

https://bit.ly/2ptJ5fS THANK YOU! @vladikk vladikk.com https://bit.ly/31nSD9c http://careers.doit-intl.com