Slide 1

Slide 1 text

@duffleit The Art of Architecting for Scale @duffleit

Slide 2

Slide 2 text

@duffleit DAVID LEITNER Principal Engineer πŸ‘‹ [email protected] 🌎 @duffleit

Slide 3

Slide 3 text

@duffleit πŸ“¦ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ”₯ Safely and sustainably reduce lead time to thank you. Daniel Terhorst-North Complex System

Slide 4

Slide 4 text

@duffleit πŸ”₯ πŸ”΄ Simple System

Slide 5

Slide 5 text

@duffleit πŸ₯³ 🟒 Simple System

Slide 6

Slide 6 text

@duffleit Simple System

Slide 7

Slide 7 text

@duffleit Complicated System πŸ”₯ πŸ”΄

Slide 8

Slide 8 text

@duffleit Complicated System

Slide 9

Slide 9 text

@duffleit Complicated System Module A Module B Module C

Slide 10

Slide 10 text

@duffleit Complicated System Distributed Systems Service A Service B Service C

Slide 11

Slide 11 text

@duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball Of Mud

Slide 12

Slide 12 text

@duffleit β€œSadly, architecture has been undervalued for so long that many engineers regard life with a BIG BALL OF MUD as normal.β€œ Foote & Yoder

Slide 13

Slide 13 text

@duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Big Ball Of Mud Distributed MOnolith WelL-Structured MOdulith

Slide 14

Slide 14 text

@duffleit There is a multitude of reasons to go for Distributed Systems. Modularisation is none of them.

Slide 15

Slide 15 text

@duffleit If you can’t build a well-structured monolith, what makes you think microservices are the answer? Simon Brown

Slide 16

Slide 16 text

@duffleit Module A Module B Module C Single Deployment Unit

Slide 17

Slide 17 text

@duffleit Service A Service B Serivice C

Slide 18

Slide 18 text

@duffleit Service A Service B Serivice C Individual Scaling Demand 10x Users Usual Traffic

Slide 19

Slide 19 text

@duffleit Service A Service B Serivice C Individual Scaling Demand Technology Segmentation

Slide 20

Slide 20 text

@duffleit Service A Service B Serivice C Individual Scaling Demand Technology Segmentation πŸ‡©πŸ‡ͺ πŸ‡©πŸ‡ͺ πŸ‡ΊπŸ‡Έ CO-Locating

Slide 21

Slide 21 text

@duffleit Service A Service B Serivice C

Slide 22

Slide 22 text

@duffleit Service A Service B Serivice C πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Ownership You build it, You Own it You build it, You Run it

Slide 23

Slide 23 text

@duffleit Single Deployment Unit MOdule A MOdule B MOdule C πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Ownership You build it, You Own it You build it, You Run it πŸ”₯

Slide 24

Slide 24 text

@duffleit Single Deployment Unit MOdule A MOdule B MOdule C πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Ownership You build it, You Own it You build it, You Run it πŸ”₯ πŸ”₯

Slide 25

Slide 25 text

@duffleit Service A Service B Serivice C πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Take Ownership and Responsibility

Slide 26

Slide 26 text

@duffleit Technical Benefits Organizational Autonomoy Scale Engineering CO-Locating Technology Segmentation Individual Scaling Demand

Slide 27

Slide 27 text

@duffleit Technical Benefits Organizational Autonomoy Scale Engineering CO-Locating Technology Segmentation Individual Scaling Demand 20% 80%

Slide 28

Slide 28 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ“¦

Slide 29

Slide 29 text

@duffleit πŸ“¦ πŸ“¦ πŸ‘§ πŸ§‘ πŸ§‘ πŸ“¦ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘

Slide 30

Slide 30 text

@duffleit Deployment Units Monolithic Distributed Modularisa3on Bad Well Big Ball Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based Architecture

Slide 31

Slide 31 text

@duffleit Deployment Units Distributed Modularisa3on Bad Well Big Ball Of Mud WelL-Structured Modulith Distributed Monolith Autonomous Service-Based Architecture Monolithic

Slide 32

Slide 32 text

@duffleit Deployment Units Monolithic Distributed Modularisation Bad Well Complex Distributed System Complicated Monolithic System

Slide 33

Slide 33 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ πŸ”₯ 🟒 Complicated Monolithic System Age Calculation Lending System

Slide 34

Slide 34 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ πŸ”΄ Complex Distributed System Loan Team Lending System

Slide 35

Slide 35 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ πŸ”΄ πŸ”΄ Complex Distributed System Loan Team Lending System

Slide 36

Slide 36 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ Complex Distributed System Loan Team Lending System

Slide 37

Slide 37 text

@duffleit Relation Between Root Cause and Effect Complex Distributed System Complicated Monolithical System is usually given is usually not given

Slide 38

Slide 38 text

@duffleit What’s the difference between a method call within a single deployment unit

Slide 39

Slide 39 text

@duffleit What’s the difference between a method call within a single deployment unit Deployment Unit Module A Module B moduleB.createUser() fun createUser() { /*...*/ }

Slide 40

Slide 40 text

@duffleit What’s the difference between a method call within a single deployment unit, and a method call across the network. Deployment Unit Deployment Unit Service A Service B restClient.user() fun createUser() { /*...*/ }

Slide 41

Slide 41 text

@duffleit What’s the difference between a method call within a single deployment unit, and a method call across the network. Everything.

Slide 42

Slide 42 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ Complex Distributed System

Slide 43

Slide 43 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ Complex Distributed System https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing

Slide 44

Slide 44 text

@duffleit Relation Between Root Cause and Effect Complex Distributed System Complicated Monolithical System is usually given is usually not given Cause of Failures reliability availability

Slide 45

Slide 45 text

@duffleit πŸ“¦ πŸ“¦ πŸ‘§ πŸ§‘ πŸ§‘ πŸ“¦ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘

Slide 46

Slide 46 text

@duffleit πŸ“¦ πŸ“¦ πŸ‘§ πŸ§‘ πŸ§‘ πŸ“¦ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯

Slide 47

Slide 47 text

@duffleit πŸ“¦ πŸ“¦ πŸ‘§ πŸ§‘ πŸ§‘ πŸ“¦ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ 🀯

Slide 48

Slide 48 text

@duffleit Relation Between Root Cause and Effect Complex Distributed System Complicated Monolithical System is usually given is usually not given Cause of Failures reliability availability

Slide 49

Slide 49 text

@duffleit Relation Between Root Cause and Effect Complex Distributed System Complicated Monolithic System is usually given is usually not given Cause of Failures reliability availability

Slide 50

Slide 50 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ Complex Distributed System πŸ‘§ πŸ§‘ πŸ§‘ Loan Team Lending System

Slide 51

Slide 51 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ πŸ”΄ Complex Distributed System πŸ‘§ πŸ§‘ πŸ§‘ 🟒 Account Team Loan Team Lending System

Slide 52

Slide 52 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯ πŸ‘§ πŸ§‘ πŸ§‘ Complex Distributed System πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ Loan Team Lending System Account Team

Slide 53

Slide 53 text

@duffleit We strive for a stable production. But this is totally elusive in a complex environment. and sometimes chaotic The sooner we accept this, the better.

Slide 54

Slide 54 text

@duffleit Failure in Mind. We need to architect with πŸ”₯

Slide 55

Slide 55 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Payment Service πŸ§‘ Account Service πŸ› Online Shopping System

Slide 56

Slide 56 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ Payment Service πŸ§‘ Account Service πŸ”₯ Users[] πŸ”₯ πŸ› Online Shopping System

Slide 57

Slide 57 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ Payment Service πŸ§‘ Account Service Users[] πŸ”₯ πŸ› Online Shopping System

Slide 58

Slide 58 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ Payment Service πŸ§‘ Account Service Users[] cache πŸ› Online Shopping System

Slide 59

Slide 59 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ Payment Service πŸ§‘ Account Service Users[] stream UserChanged πŸ› Online Shopping System

Slide 60

Slide 60 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ Payment Service πŸ§‘ Account Service projection stream Users[] UserChanged πŸ› Online Shopping System

Slide 61

Slide 61 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ Payment Service πŸ§‘ Account Service projection stream Users[] UserChanged πŸ› Online Shopping System

Slide 62

Slide 62 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Payment Service πŸ§‘ Account Service projection stream πŸ”₯πŸ”₯ πŸ”₯ πŸ”₯ Users[] πŸ› Online Shopping System

Slide 63

Slide 63 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Payment Service πŸ§‘ Account Service πŸ”₯ πŸš€ LBs CBs Caching

Slide 64

Slide 64 text

@duffleit Failure and Scale in Mind. We need to architect with πŸ”₯

Slide 65

Slide 65 text

@duffleit Services that can run in a chaotic environment can run everywhere. Services that can only run in a stable environment can only run there.

Slide 66

Slide 66 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”΄ Payment Team πŸ§‘ Account Team Execute Payment Payment Gateway Team

Slide 67

Slide 67 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ Payment Team πŸ§‘ Account Team 🀯

Slide 68

Slide 68 text

@duffleit < πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯ SEPA Payment Team Account Team Execute Payment CREDITCARD Payment Team < πŸ‘§ πŸ§‘ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘

Slide 69

Slide 69 text

@duffleit < πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯ SEPA Payment Team Account Team Execute Payment CREDITCARD Payment Team < COMPLICATED End2End flow πŸ‘§ πŸ§‘ πŸ§‘ COMPLICATED End2End flow πŸ§‘ πŸ‘§ πŸ§‘ 😌

Slide 70

Slide 70 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯ πŸ”΄ Payment Team Account Team Execute Payment Payment Gateway Team COMPLEX End2End flow πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘

Slide 71

Slide 71 text

@duffleit End-2-End Customer Journeys. We need to architect for πŸͺ’

Slide 72

Slide 72 text

@duffleit < SEPA Payment Team Account Team FRAUD CHECK < πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Core Team πŸ‘§ πŸ§‘ πŸ§‘ πŸ’ Check Payment πŸ‘©πŸ’»

Slide 73

Slide 73 text

@duffleit < SEPA Payment Team Account Team Check Payment FRAUD CHECK < Core Team πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ How many Nines? Availability? Nines Percentage Yearly Outage 1 Nine 90% 36,5 days 2 Nines 99% 3,65 days 3 Nines 99,9% 8,76 hours 4 Nines 99,99% 52,56 minutes 5 Nines 99,999% 5,26 minutes 6 Nines 99,9999% 31,5 seconds A Planed Outage is an Outage

Slide 74

Slide 74 text

@duffleit Can our service have 99,99% availability if our dependencies have a 99,9% availability?

Slide 75

Slide 75 text

@duffleit < SEPA Payment Team Account Team Check Payment FRAUD CHECK < πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Core Team πŸ‘§ πŸ§‘ πŸ§‘ How many Nines? Nines Percentage Yearly Outage 1 Nine 90% 36,5 days 2 Nines 99% 3,65 days 3 Nines 99,9% 8,76 hours 4 Nines 99,99% 52,56 minutes 5 Nines 99,999% 5,26 minutes 6 Nines 99,9999% 31,5 seconds A Planed Outage is an Outage rescheduler Availability?

Slide 76

Slide 76 text

@duffleit < SEPA Payment Team Account Team Check Payment FRAUD CHECK < πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Core Team πŸ‘§ πŸ§‘ πŸ§‘ How many Nines? Nines Percentage Yearly Outage 1 Nine 90% 36,5 days 2 Nines 99% 3,65 days 3 Nines 99,9% 8,76 hours 4 Nines 99,99% 52,56 minutes 5 Nines 99,999% 5,26 minutes 6 Nines 99,9999% 31,5 seconds πŸ”΄ Availability?

Slide 77

Slide 77 text

@duffleit < SEPA Payment Team Account Team Check Payment FRAUD CHECK < πŸ§‘ πŸ‘§ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Core Team πŸ‘§ πŸ§‘ πŸ§‘ MTTF? Platform teams SLAs

Slide 78

Slide 78 text

@duffleit by Availability. We need to architect driven 9⃣

Slide 79

Slide 79 text

@duffleit < SEPA Payment Team Account Team FRAUD CHECK < πŸ‘§ πŸ§‘ πŸ§‘ Legacy System πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘

Slide 80

Slide 80 text

@duffleit < SEPA Payment Team Account Team FRAUD CHECK < πŸ‘§ πŸ§‘ πŸ§‘ Legacy System πŸ‘§ πŸ§‘ πŸ§‘

Slide 81

Slide 81 text

@duffleit Readers Writers Writers Readers API User Fraud Data User Fraud Data ⏳ Downtime Given

Slide 82

Slide 82 text

@duffleit Readers Writers Writers Readers API User Fraud Data User Fraud Data πŸ”₯

Slide 83

Slide 83 text

@duffleit Readers Writers Writers Readers API User Fraud Data User Fraud Data πŸ”₯

Slide 84

Slide 84 text

@duffleit CDC Readers Writers Writers Readers API User Fraud Data User Fraud Data

Slide 85

Slide 85 text

@duffleit Readers Writers Writers Readers API User Fraud Data Events User Fraud Data CDC

Slide 86

Slide 86 text

@duffleit Readers Writers Writers Readers API User Fraud Data User Fraud Data πŸ”₯ Events CDC

Slide 87

Slide 87 text

@duffleit Readers Writers Writers Readers API User Fraud Data User Fraud Data πŸ‘· Events CDC

Slide 88

Slide 88 text

@duffleit Readers Writers Writers Readers API User Fraud Data User Fraud Data Zero-Downtime Migration Events CDC

Slide 89

Slide 89 text

@duffleit a Zero-Downtime Mindset. We need to architect driven by 🦜

Slide 90

Slide 90 text

@duffleit We need to Start Dacining with the Beast

Slide 91

Slide 91 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ Complex Distributed System πŸ‘§ πŸ§‘ πŸ§‘ Gamedays 🀑 🀑 🀑 Payment Team

Slide 92

Slide 92 text

@duffleit Chaos. We need to embrace πŸ’£

Slide 93

Slide 93 text

@duffleit So many thing to consider, Let’s sum up.

Slide 94

Slide 94 text

@duffleit Complex Distributed System Deployment Units Monolithic Distributed Complicated Monolithic System Modularisation is no reason to go for Distributed Systems.

Slide 95

Slide 95 text

@duffleit Failure and Scale in Mind. We need to architect with πŸ”₯ End-2-End Customer Journeys. We need to architect for πŸͺ’ By Availability. We need to architect driven 9⃣ A Zero-Downtime Mindset. We need to architect with 🦜 Chaos. We need to embrace πŸ’£

Slide 96

Slide 96 text

@duffleit πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘ πŸ”₯

Slide 97

Slide 97 text

@duffleit πŸ“¦ πŸ‘§ πŸ§‘ πŸ§‘ πŸ“¦ πŸ“¦ Keep the Flow of Value high & the Amount of Outages low. πŸ‘§ πŸ§‘ πŸ§‘ πŸ‘§ πŸ§‘ πŸ§‘

Slide 98

Slide 98 text

@duffleit Keep the lead time to Thank You low, even at scale.

Slide 99

Slide 99 text

@duffleit DAVID LEITNER Principal Engineer πŸ‘‹ [email protected] 🌎 @duffleit

Slide 100

Slide 100 text

@duffleit squer.link/arch-scale WORKSHOP Architecting for Scale Free Friends & Family DryRun