Slide 1

Slide 1 text

BUILDING SCALABLE RESTAURANTS Victor "Frodo" Martinez - lend.tech - January/2023

Slide 2

Slide 2 text

2 DISCLAIMER ● "In practice…" ● "The real world…" ⚠

Slide 3

Slide 3 text

3 WHO AM I? Where's the f*cking ring? Victor "Frodo" Martinez 31 y'old Pythonista - Coffee Lover - Backender A bit of everything at

Slide 4

Slide 4 text

4 WHY?

Slide 5

Slide 5 text

5 WHY? Architecture Interview Whiteboards Technical Discussions Boilerplate Guilds …

Slide 6

Slide 6 text

A RESTAURANT IS ALL ABOUT SOFTWARE… …I CAN SHOW YOU.

Slide 7

Slide 7 text

KITCHEN HOST DINNER CASHIER WAITING ROOM BATHROOM BAR

Slide 8

Slide 8 text

8 ARCHITECTURE DESIGN Discrete services VS Monolithic design

Slide 9

Slide 9 text

KITCHEN HOST DINNER CASHIER WAITING ROOM BATHROOM BAR

Slide 10

Slide 10 text

COZINHA HOST JANTAR CAIXA SALA DE ESPERA BANHEIRO BAR RESTAURANT SERVICE

Slide 11

Slide 11 text

BATHROOM SERVICE KITCHEN SERVICE BAR SERVICE HOST SERVICE WAIT SERVICE DINNER SERVICE CASHIER SERVICE

Slide 12

Slide 12 text

12 vs Microservices Monolit ARCHITECTURE DESIGN

Slide 13

Slide 13 text

13 vs Microservices Monolit ARCHITECTURE DESIGN

Slide 14

Slide 14 text

14 ● Bounded Contexts (DDD) ● Different scalability necessities ● Allow custom resource allocation ○ Bathroom vs Dinner ○ I/O Bound vs CPU Bound ● … ARCHITECTURE DESIGN

Slide 15

Slide 15 text

15 PERFORMANCE VS SCALABILITY

Slide 16

Slide 16 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰳖 ⁉

Slide 17

Slide 17 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ♂ Time to get and order ready 󰳖 ⁉

Slide 18

Slide 18 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰞽 🍳 󰞽 󰳖 ⁉ How many cooks available?

Slide 19

Slide 19 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰞽 🍳 󰞽 How many clients per hour? 󰳖 ⁉

Slide 20

Slide 20 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰞽 🍳 󰞽 How many orders per hour? 󰳖 ⁉

Slide 21

Slide 21 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰞽 🍳 󰞽 👨 👩 👨 👩 👨 How many reservations per hour? 󰳖 ⁉

Slide 22

Slide 22 text

KITCHEN HOST DINNER CASHIER WAITING ROOM BATHROOM BAR PERFORMANCE SCALABILITY VS

Slide 23

Slide 23 text

KITCHEN HOST DINNER CASHIER WAITING ROOM BATHROOM BAR PERFORMANCE RESPONSE TIME → How much time takes a single request? Time to get an order ready

Slide 24

Slide 24 text

KITCHEN HOST DINNER CASHIER WAITING ROOM BATHROOM BAR PERFORMANCE RESPONSE TIME → How much time takes a single request? Time to get an order ready SCALABILITY LOAD → Number of requests per period of time. Number of cooks available.

Slide 25

Slide 25 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨

Slide 26

Slide 26 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨

Slide 27

Slide 27 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨

Slide 28

Slide 28 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨 󰳖 ⁉

Slide 29

Slide 29 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨 󰳖 ⁉ 1. How many orders per second? 2. How many contain errors? 3. How long do they take?

Slide 30

Slide 30 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨 󰳖 ⁉ METRICS Traffic-based services (R.E.D.)

Slide 31

Slide 31 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨 󰳖 ⁉ METRICS Traffic-based services (R.E.D.) RATE - ERROR - DURATION How many requests per second [RATE] Error percentage [ERROR] Duration/latency of each request [DURATION]

Slide 32

Slide 32 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨 👩 👨 󰳖 ⁉ METRICS Traffic-based services (R.E.D.) RATE - ERROR - DURATION How many requests per second [RATE] Error percentage [ERROR] Duration/latency of each request [DURATION] OBS: Context is important (e.g. bad request)

Slide 33

Slide 33 text

33 󰞽 ✋ 🔥 FAILURE

Slide 34

Slide 34 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰞽 ✋ 🔥

Slide 35

Slide 35 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰞽 ✋ 🔥 ❌ UNAVAILABLE & NOT RESILIENT

Slide 36

Slide 36 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰞽 ✋ 🔥 󰠉 RESILIENT

Slide 37

Slide 37 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰠉

Slide 38

Slide 38 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰠉 HIGH AVAILABILITY 99.99% uptime Weak Redundancy Gateway Layer APP ❌ APP

Slide 39

Slide 39 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰞽 ✋ 🔥

Slide 40

Slide 40 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰞽 ✋ 🔥 󰞽 󰞽 󰞽 󰞽 󰞽 󰞽 󰞽 󰞽

Slide 41

Slide 41 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰞽 ✋ 🔥 󰞽 󰞽 󰞽 󰞽 󰞽 󰞽 󰞽 󰞽 FAULT TOLERANCE 100% uptime Strong Redundancy Gateway Layer APP ❌ APP APP APP

Slide 42

Slide 42 text

42 HIGH AVAILABILITY & FAULT TOLERANCE Application runs all the time without any system degradation.

Slide 43

Slide 43 text

43 ISOLATION STATE - SPACE - TIME - FAILURE

Slide 44

Slide 44 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ❌

Slide 45

Slide 45 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR API API

Slide 46

Slide 46 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ISOLATION OF STATE A service should not access another's database directly. A service should not access another's database directly. A B Well-defined API.

Slide 47

Slide 47 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 🧾 󰞽

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

ISOLATION OF SPACE A service should not care where others are placed. A B A A A A A B More services A does not imply into B.

Slide 50

Slide 50 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ♂

Slide 51

Slide 51 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ♂ 🧾

Slide 52

Slide 52 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ♂ 🧾 󰞽

Slide 53

Slide 53 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ♂ 🧾 󰞽 ISOLATION OF TIME A service should not use sync & blocking requests. A B Message-driven & Eventual Consistency

Slide 54

Slide 54 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 🕛

Slide 55

Slide 55 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 🕛 ✅ ✅ ✅ ✅ ✅

Slide 56

Slide 56 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 🕛 ✅ ✅ ✅ ✅ ✅ ISOLATION OF FAILURE A service failure should not cause another to fail. A B Bulkheading - Circuit Breakers - Message Driven - Autonomy ✅

Slide 57

Slide 57 text

57 ADDRESSING ISOLATION BULKHEADING - CIRCUIT BREAKERS - MESSAGE-DRIVEN - GATEWAY - AUTONOMY

Slide 58

Slide 58 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰞽 ✋ 🔥

Slide 59

Slide 59 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰞽 ✋ 🔥 ❌

Slide 60

Slide 60 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰞽 ✋ 🔥 ❌ ✅ ✅ ✅ ✅ ✅ ✅

Slide 61

Slide 61 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 󰞽 ✋ 🔥 ❌ ✅ ✅ ✅ ✅ ✅ ✅ BULKHEADING Failures are isolated into zones.

Slide 62

Slide 62 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ❌

Slide 63

Slide 63 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ❌ ♂ ✅

Slide 64

Slide 64 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ❌ ♂ ✅ GATEWAY GATEWAY SERVICE A SERVICE B SERVICE C

Slide 65

Slide 65 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ♂ 🧾🧾

Slide 66

Slide 66 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ♂ 🧾 ♂ 🧾 🧾

Slide 67

Slide 67 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ♂ 🧾 ♂ 🧾 ♀ ♀ 🧾🧾🧾

Slide 68

Slide 68 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ♂ 🧾 ♂ 🧾 ♀ ♀ 🧾🧾🧾

Slide 69

Slide 69 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ♂ 🧾 ♂ 🧾 ♀ ♀ 🧾🧾🧾

Slide 70

Slide 70 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ♂ 🧾 ♂ 🧾 ♀ ♀ 🧾🧾🧾 ❌

Slide 71

Slide 71 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ♂ 🧾 ♂ 🧾 ♀ ♀ 🧾🧾🧾 ❌ CIRCUIT-BREAKER A B CB

Slide 72

Slide 72 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ♂ 🧾 ♂ 🧾 ♀ ♀ 🧾🧾🧾 ❌ CIRCUIT-BREAKER A B CB

Slide 73

Slide 73 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR ♂ 🧾 ♂ 🧾 ♀ ♀ 🧾🧾🧾 ❌ CIRCUIT-BREAKER A B CB CLOSED OPEN HALF- OPEN

Slide 74

Slide 74 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 🧾

Slide 75

Slide 75 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 🧾 MESSAGE-DRIVEN Services should be able to send non-blocking async messages A B

Slide 76

Slide 76 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 🧾🧾 🧾 ♂ 🧾 🧾

Slide 77

Slide 77 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 🧾🧾 🧾 🧾 🧾 🧾 ♂ 🧾 🧾

Slide 78

Slide 78 text

KITCHEN HOST DINNER CASHIER WAITING HALL BATHROOM BAR 🧾🧾 🧾 🧾 🧾 🧾 ♂ 🧾 🧾 AUTONOMY & EVENTUAL CONSISTENCY After stopping receiving notifications all parts eventually converge to the same state. The only guarantee is that, at some point in the future, something good will happen. Data replication (when needed) Prevent long-running transactions [Saga] Compensation Actions vs Rollbacks

Slide 79

Slide 79 text

79 IN A NUTSHELL

Slide 80

Slide 80 text

80 IN A NUTSHELL A scalable restaurant handles an increase in the number of clients as it responds to the necessities in a quick and efficient manner.

Slide 81

Slide 81 text

81 IN A NUTSHELL A scalable restaurant handles an increase in the number of clients as it responds to the necessities in a quick and efficient manner. How about software?

Slide 82

Slide 82 text

82 IN A NUTSHELL A scalable system handles an increase in the load as it responds to requests fast and efficiently.

Slide 83

Slide 83 text

83 HOW TO BUILD A SCALABLE RESTAURANT? More nodes.

Slide 84

Slide 84 text

84 HOW TO BUILD A SCALABLE RESTAURANT? More nodes. Isolation • Message-driven • Performance • Microservices • Bulkheading • Circuit Breakers • Gateways • Autonomy …

Slide 85

Slide 85 text

85 HOW TO BUILD A SCALABLE RESTAURANT? More nodes. Isolation • Message-driven • Performance • Microservices • Bulkheading • Circuit Breakers • Gateways • Autonomy … More nodes.

Slide 86

Slide 86 text

86 WHY?

Slide 87

Slide 87 text

87 WHY? RESPONSIVE experience under several conditions.

Slide 88

Slide 88 text

88 WHY? From 10 to 10 million users Use resources according to the load Failures cause a few or no effect in user experience Applications spread over hundreds/thousands of nodes RESPONSIVE experience under several conditions.

Slide 89

Slide 89 text

No content

Slide 90

Slide 90 text

90 ELASTIC RESILIENT RESPONSIVE MESSAGE DRIVEN MAINTAINABLE EXTENSIBLE VALUE FORM MEANS

Slide 91

Slide 91 text

91 ELASTIC RESILIENT RESPONSIVE MESSAGE DRIVEN MAINTAINABLE EXTENSIBLE VALUE FORM MEANS RESPONSIVE ⌛ Time to serve people.

Slide 92

Slide 92 text

92 ELASTIC RESILIENT RESPONSIVE MESSAGE DRIVEN MAINTAINABLE EXTENSIBLE VALUE FORM MEANS ELASTIC 󰞽 Increase/decrease number of employees.

Slide 93

Slide 93 text

93 ELASTIC RESILIENT RESPONSIVE MESSAGE DRIVEN MAINTAINABLE EXTENSIBLE VALUE FORM MEANS RESILIENT 🔥 Replace employee in case of failure.

Slide 94

Slide 94 text

94 ELASTIC RESILIENT RESPONSIVE MESSAGE DRIVEN MAINTAINABLE EXTENSIBLE VALUE FORM MEANS MESSAGE DRIVEN 🧾 Take orders through async & non-blocking messages.

Slide 95

Slide 95 text

95 THERE STILL MUCH WORK TO BE DONE TRAFFIC-BASED MONITORING TRACES SHARDING CACHING CONTENTION RETRY IDEMPOTENCY …

Slide 96

Slide 96 text

BUILDING SCALABLE & REACTIVE RESTAURANTS Victor "Frodo" Martinez - lend.tech - January/2023

Slide 97

Slide 97 text

97 THANKS. Victor "Frodo" Martinez - lend.tech - January/2023