Slide 1

Slide 1 text

Monolith Microservices ready™ @Lilobase

Slide 2

Slide 2 text

Complexity is non-linear Complexity System size

Slide 3

Slide 3 text

Distributed doghouse

Slide 4

Slide 4 text

-Simon Brown « If you can’t build a monolith, what makes you think micro-services are the answer ? »

Slide 5

Slide 5 text

Monolith Microservices -Alvaro Sanchez

Slide 6

Slide 6 text

-Melvin Conway « organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations »

Slide 7

Slide 7 text

-Simon Brown

Slide 8

Slide 8 text

-Simon Brown

Slide 9

Slide 9 text

-Simon Brown 1 2

Slide 10

Slide 10 text

The problem has never been the monolith, but having a single coupled model

Slide 11

Slide 11 text

Multiple models lives in your application Invoice Catalog Payment Product Product Product This is not the same product

Slide 12

Slide 12 text

The primary coupling in software architecture is when concepts from separate contexts are entangled

Slide 13

Slide 13 text

We usually don’t get our models right on the first try. This is where having a single code base & deployment unit helps with the requested refactoring

Slide 14

Slide 14 text

Let’s create some hard boundaries

Slide 15

Slide 15 text

Domain domain interface concrete implementation of the domain interface technical collaborator

Slide 16

Slide 16 text

Service A API Service B

Slide 17

Slide 17 text

Internal API Service A Service B External API Anti-Corruption Layer (Belong to the infrastructure)

Slide 18

Slide 18 text

Facade Parent Injector S1 S2

Slide 19

Slide 19 text

Facade Parent Injector S1 HTTP
 connector

Slide 20

Slide 20 text

« Two micro services and their shared database » -Mathias Verraes

Slide 21

Slide 21 text

Messages brokers are also datasources

Slide 22

Slide 22 text

-Cyrille Dupuydauby « Years of fight against ‘DB as a MoM’ anti- pattern have finally paid off: I am now fighting against ‘MoM as a DB’ anti-pattern. »

Slide 23

Slide 23 text

Events are not created equal Invoice Catalog Payment Inventory

Slide 24

Slide 24 text

What about processes

Slide 25

Slide 25 text

Event or Command driven ? Agent Acteur

Slide 26

Slide 26 text

Orchestration or choreography ? Orchestration Choreography

Slide 27

Slide 27 text

Exemple of an event driven orchestrated pattern : the macdonald’s pattern Counter Ice
 Cream Hamburgers Salads New Order
 —— 
 ——
 —— New Order
 —— 
 ——
 —— New Order
 —— 
 ——
 ——

Slide 28

Slide 28 text

Counter Ice
 Cream Hamburgers Salads

Slide 29

Slide 29 text

Counter Ice
 Cream Hamburgers Salads Each time we receive an item, we check if the order is complete New Order
 —— 
 ——
 ——

Slide 30

Slide 30 text

A time bomb for the optimists

Slide 31

Slide 31 text

-Graham Lea « They can be hard to see, and they can sink your app »

Slide 32

Slide 32 text

Dependencies, even more chances to get failures

Slide 33

Slide 33 text

Fault tolerance • Rate-limiter • Automatic retry with exponential backoff • Response caching • BulkHead pattern • Circuit-breaker • Load Balancing Hystrix, Resilience4j

Slide 34

Slide 34 text

The micro services iceberg

Slide 35

Slide 35 text

Distributed transaction

Slide 36

Slide 36 text

Saga T1 T2 T3

Slide 37

Slide 37 text

Saga T1 T2 T3 C1 C3

Slide 38

Slide 38 text

Saga T1 T2 T3 T2 Idempotence

Slide 39

Slide 39 text

PC PC PC Two phases commits T T T

Slide 40

Slide 40 text

UI Driven Consistency

Slide 41

Slide 41 text

-Simon Brown

Slide 42

Slide 42 text

If you cannot deploy independently your services, you don’t have a micro-service architecture

Slide 43

Slide 43 text

Going further • Applying the Saga Pattern • Caitie McCaffrey • Distributed Transactions: The Icebergs of Microservices • Graham Lea • Application Resilience Engineering & Operations at Netflix • Ben Christensen • arpinum/alexandria-api