Slide 1

Slide 1 text

@CYRIUX ARCHITECTURE À L’ÉCHELLE, L’ESSENTIEL MEETUP TECH.ROCKS 11 JUIN 2020 @CYRIUX @AROLLA @LESINGECUIVRE Cyrille Martraire

Slide 2

Slide 2 text

SINCE 1999 CYRILLE MARTRAIRE @CYRIUX @AROLLA @LESINGECUIVRE

Slide 3

Slide 3 text

@CYRIUX OUR COMING EVENTS… https://www.lesingecuivre.com/des-conferences-et-ateliers-inspirants/

Slide 4

Slide 4 text

@CYRIUX 3 POINTS ON ARCHITECTURE IN GENERAL

Slide 5

Slide 5 text

@CYRIUX Frugal Solutions Explicit Goals Reversible Decisions @CYRIUX

Slide 6

Slide 6 text

@CYRIUX Explicit Goals @CYRIUX DON’T TALK SOLUTION WITHOUT A CLEARLY STATED PROBLEM (REAL PROBLEM)

Slide 7

Slide 7 text

@CYRIUX Frugal Solutions ANY SOLUTION BRINGS NEW PROBLEMS (CACHE…)

Slide 8

Slide 8 text

@CYRIUX Reversible Decisions MINIMISE IRREVERSIBLE DECISIONS (KEEP OPTIONS OPEN)

Slide 9

Slide 9 text

@CYRIUX WHAT ABOUT ARCHITECTURE AT SCALE?

Slide 10

Slide 10 text

A LITTLE STORY

Slide 11

Slide 11 text

@CYRIUX ONCE UPON A TIME…

Slide 12

Slide 12 text

@CYRIUX ONE BIG BALL OF EVERYTHING

Slide 13

Slide 13 text

@CYRIUX 1 TEAM

Slide 14

Slide 14 text

@CYRIUX 1 COMPONENT {;}

Slide 15

Slide 15 text

@CYRIUX ANYBODY CAN DO ANYTHING #NoLimit

Slide 16

Slide 16 text

@CYRIUX ANYBODY CAN DO ANYTHING #NoLimit #Versatile

Slide 17

Slide 17 text

@CYRIUX CHEAP. just add code

Slide 18

Slide 18 text

@CYRIUX DEPLOY AT ONCE #GoLive

Slide 19

Slide 19 text

@CYRIUX HOLISTIC GROWTH & EVOLUTION! #better

Slide 20

Slide 20 text

@CYRIUX HOLISTIC GROWTH & EVOLUTION! #better innovate. pivot. big shift.

Slide 21

Slide 21 text

@CYRIUX LIFE’S GOOD!

Slide 22

Slide 22 text

@CYRIUX TIME PASSED…

Slide 23

Slide 23 text

@CYRIUX AND ONE DAY…

Slide 24

Slide 24 text

@CYRIUX TOO MANY PEOPLE

Slide 25

Slide 25 text

@CYRIUX INTERFERING ON EACH OTHER’S WORK

Slide 26

Slide 26 text

@CYRIUX OR TOO MUCH COORDINATION #TooManyMeetings

Slide 27

Slide 27 text

@CYRIUX DELIVERY SLOWING DOWN #Slow

Slide 28

Slide 28 text

@CYRIUX FRUSTRATION #sad

Slide 29

Slide 29 text

@CYRIUX THEY KNEW THE SOLUTION…

Slide 30

Slide 30 text

@CYRIUX SPLIT! @CYRIUX

Slide 31

Slide 31 text

@CYRIUX SPLIT! @CYRIUX

Slide 32

Slide 32 text

@CYRIUX SPLIT! @CYRIUX

Slide 33

Slide 33 text

@CYRIUX 1. @CYRIUX

Slide 34

Slide 34 text

@CYRIUX MANY. @CYRIUX

Slide 35

Slide 35 text

@CYRIUX 1 COMPONENT {;} @CYRIUX

Slide 36

Slide 36 text

@CYRIUX MANY COMPONENTS {;} {;} {;} {;} @CYRIUX

Slide 37

Slide 37 text

@CYRIUX 1 TEAM @CYRIUX

Slide 38

Slide 38 text

@CYRIUX MANY TEAMS @CYRIUX

Slide 39

Slide 39 text

@CYRIUX LARGE @CYRIUX

Slide 40

Slide 40 text

@CYRIUX small small small small @CYRIUX

Slide 41

Slide 41 text

@CYRIUX FRUSTRATION @CYRIUX

Slide 42

Slide 42 text

@CYRIUX LIFE’S GOOD AGAIN @CYRIUX

Slide 43

Slide 43 text

@CYRIUX THEY KNEW THE TECHNOLOGIES…

Slide 44

Slide 44 text

@CYRIUX PaaS Serverless Containers CI/CD pipelines Orchestrators @CYRIUX

Slide 45

Slide 45 text

@CYRIUX THEY KNEW THE PRACTICES…

Slide 46

Slide 46 text

@CYRIUX microservices Event-Driven Architecture API’s BFF Gateways @CYRIUX

Slide 47

Slide 47 text

@CYRIUX BUT STILL, HOW TO DECIDE THE BOUNDARIES?

Slide 48

Slide 48 text

@CYRIUX @CYRIUX ?

Slide 49

Slide 49 text

@cyriux @CYRIUX

Slide 50

Slide 50 text

BOUNDED CONTEXTS @CYRIUX

Slide 51

Slide 51 text

BOUNDED CONTEXTS @CYRIUX since 2003

Slide 52

Slide 52 text

BOUNDED CONTEXTS @CYRIUX before it was cool

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

in autonomy

Slide 55

Slide 55 text

@cyriux @cyriux

Slide 56

Slide 56 text

@cyriux @cyriux

Slide 57

Slide 57 text

@cyriux @cyriux

Slide 58

Slide 58 text

@CYRIUX @CYRIUX

Slide 59

Slide 59 text

@CYRIUX @CYRIUX

Slide 60

Slide 60 text

@CYRIUX @CYRIUX

Slide 61

Slide 61 text

@CYRIUX @CYRIUX

Slide 62

Slide 62 text

@CYRIUX HOW NOT TO HOW TO @CYRIUX

Slide 63

Slide 63 text

@cyriux

Slide 64

Slide 64 text

@cyriux

Slide 65

Slide 65 text

@CYRIUX HOW NOT TO @CYRIUX

Slide 66

Slide 66 text

Split by layer W eb Logic Dao DB @cyriux

Slide 67

Slide 67 text

Split by layer W eb Logic Dao DB EASY

Slide 68

Slide 68 text

@cyriux

Slide 69

Slide 69 text

Split by technology EJB ongoDB ode.js

Slide 70

Slide 70 text

Split by technology EJB ongoDB ode.js EASY

Slide 71

Slide 71 text

@cyriux random results

Slide 72

Slide 72 text

Split by Entity User roduct urchase

Slide 73

Slide 73 text

Split by Entity User roduct urchase EASY

Slide 74

Slide 74 text

@cyriux worst results

Slide 75

Slide 75 text

@CYRIUX HOW TO @CYRIUX

Slide 76

Slide 76 text

Split by Functional Area aym ent atalogue hipping Billing

Slide 77

Slide 77 text

DESIGN DECISION Functional areas

Slide 78

Slide 78 text

e-commerce Bounded Contexts • SEO, Traffic Acquisition • Marketing & Targeting • PIM (Product Identification Management) • Catalogue • Categorization • Search • Recommendation • Pricing, Promotions • Basket • Discount, Loyalties • Shipping Cost Estimation • Payment • (Fraud Detection) • Order Management • Billing • Stock / Overbooking • Shipping • Return • CRM

Slide 79

Slide 79 text

How do we identify Bounded Contexts? 79

Slide 80

Slide 80 text

80 How do we identify Sub Domains?

Slide 81

Slide 81 text

@CYRIUX Focus on the language @CYRIUX

Slide 82

Slide 82 text

Payment Event Anomaly Agent Transaction Transaction Status Account Basket Items Recent Baskets

Slide 83

Slide 83 text

Payment Event Anomaly Agent Transaction Transaction Status Account Basket Items Recent Baskets

Slide 84

Slide 84 text

Payment Event Anomaly Agent Transaction Transaction Status Account Basket Items Recent Baskets Shopping Cart Payment Payment Fraud Detection

Slide 85

Slide 85 text

Sub-Domains Names • Often end in ”-ing” or ”-tion” • Because purpose verbs made into nouns HEURISTICS

Slide 86

Slide 86 text

@CYRIUX Focus on the purpose @CYRIUX

Slide 87

Slide 87 text

THE SAME THING IN THE REAL WORLD (EG A CUSTOMER) FOR DIFFERENT PURPOSES BECOMES DIFFERENT THINGS

Slide 88

Slide 88 text

Different perspectives MY catalogue/book is not YOUR shipping/book

Slide 89

Slide 89 text

“At Amazon, what a book is for you?” •Catalog: Picture, title, authors, rating, format (ebook or paper), category •Recommandation: List of books often bought together with it •Shipping: Dimensions, weight, international restrictions due to content •Shopping cart: Price, discount eligible •Customer review: List of (rating, review, review rating) •Book Search: title, isbn, authors •Search Inside!: full-text content, copyright- dealing policy thx @gweinbach

Slide 90

Slide 90 text

@CYRIUX Focus on the Kind of Complexity @CYRIUX

Slide 91

Slide 91 text

SECRET SAUCE? OR NECESSARY BURDEN? (don’t mix them)

Slide 92

Slide 92 text

@CYRIUX Mixing All Your Mental Models @CYRIUX

Slide 93

Slide 93 text

• Directors by departments (Marketing, Sales, Operations, Customer Support…) • Interviews people and listen to their purpose & language

Slide 94

Slide 94 text

Pre-Negotiation Listing) B2BOrdering Fraud Détection Payment Sourcing Distribution Rates Grid RealTime Prices Gift Cards Content & Comparators Sales Promotion Acquisition TV Campaigns Online Ads Company Rating Product Reviews Shopping Cart Catalogue Search Categories Tags Partnerships Secondary Listing Internal Purchasing Rates CrossSales Navigation SEO Marketing

Slide 95

Slide 95 text

Event Storming PRACTICE

Slide 96

Slide 96 text

Sub-Domain A sub-sub domain A1 sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable MAPPING THE POTENTIAL BOUNDED CONTEXTS

Slide 97

Slide 97 text

@CYRIUX GUIDING DELIVERY PROJECTS @CYRIUX Don’t split for the sake of it. Split Opportunistically when needed. Never fully done.

Slide 98

Slide 98 text

Mapping the Potential Bounded Contexts Sub-Domain A sub-sub domain A1 sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable legacy components not aligned (at all)

Slide 99

Slide 99 text

@CYRIUX (Like Cellular Division)

Slide 100

Slide 100 text

@CYRIUX (Like Cellular Division)

Slide 101

Slide 101 text

@CYRIUX Escape the Tyranny of ONE @CYRIUX

Slide 102

Slide 102 text

@cyriux Fraud Détection Payment Gift Cards n mpany ting Review Shopping Cart EVENT-SOURCED HEXAGONAL ARCHITECTURE CRUD SaaS

Slide 103

Slide 103 text

@cyriux Fraud Détection Payment Gift Cards n mpany ting Review Shopping Cart CASSANDRA POSTGRES ORACLE MongoDB

Slide 104

Slide 104 text

@cyriux Fraud Détection Payment Gift Cards n mpany ting Review Shopping Cart Azure API APP on-premise Azure/WEbapp SaaS Azure FUNCTIONS Azure ML

Slide 105

Slide 105 text

@cyriux Fraud Détection Payment Gift Cards n mpany ting Review Shopping Cart PERF TEST HERE!

Slide 106

Slide 106 text

@cyriux Fraud Détection Payment Gift Cards n mpany ting Review Shopping Cart REWRITE EXTERNALIZE KEEP AS-IS KEEP EXTRACT EXTRACT AS LIB

Slide 107

Slide 107 text

@cyriux Fraud Détection Payment Gift Cards n mpany ting Review Shopping Cart NOW WHEN NECESSARY NEXT YEAR LATER Q3 Q4

Slide 108

Slide 108 text

@cyriux Fraud Détection Payment Gift Cards n mpany ting Review Shopping Cart API API API API API API

Slide 109

Slide 109 text

@cyriux

Slide 110

Slide 110 text

@CYRIUX BUT AFTER THE FIRST VICTORY…

Slide 111

Slide 111 text

@CYRIUX CAME NEW CHALLENGES…

Slide 112

Slide 112 text

@CYRIUX Data Sharing Contracts Deployment Units @CYRIUX

Slide 113

Slide 113 text

@CYRIUX Contracts EXPLICIT COORDINATION TO DEFINE STABLE CONTRACTS → ENABLE BOTH SIDES TO CHANGE FREELY

Slide 114

Slide 114 text

@CYRIUX Contracts ACKNOWLEDGE ALL CONTRACTS! DON’T F**ING BREAK THEM!

Slide 115

Slide 115 text

@CYRIUX Data Sharing @CYRIUX DATA SHARING - SYNC QUERY OR - DB VIEWS OR - IMMUTABLE - VERSIONED - EVENT-DRIVEN MESSAGING ONLY ONE AUTHORITY FOR EACH DATA (data licence?)

Slide 116

Slide 116 text

@CYRIUX Deployment Units @CYRIUX

Slide 117

Slide 117 text

MAPPING THE POTENTIAL BOUNDED CONTEXTS Sub-Domain A sub-sub domain A1 sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable

Slide 118

Slide 118 text

Sub-Domain A sub-sub domain A1 sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable SpringBoot Postgres / Elastic Search RabbitMQ Microservice MAPPING THE POTENTIAL BOUNDED CONTEXTS

Slide 119

Slide 119 text

MAPPING THE TARGET ARCHITECTURE Sub-Domain A sub-sub domain A1 sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable Modular Monolith

Slide 120

Slide 120 text

@CYRIUX CALL TO ACTION from where you are, CONSIDER: WHERE TO SPLIT NEXT? ON WHAT BOUNDARIES? ACKNOWLEDGE: WHAT CONTRACTS ARE ALREADY THERE, EVEN IMPLICITLY? START QUESTIONING: WHO REALLY OWNS EACH PIECE OF DATA?

Slide 121

Slide 121 text

@CYRIUX OUR COMING EVENTS… https://www.lesingecuivre.com/des-conferences-et-ateliers-inspirants/

Slide 122

Slide 122 text

@cyriux BUY MY BOOK!

Slide 123

Slide 123 text

@CYRIUX THE END THANK YOU @AROLLA @LESINGECUIVRE