microservices design patterns

37
1 Microservices Design Patterns – Friday 17 th March

Upload: rodders-caldas

Post on 22-Mar-2017

100 views

Category:

Software


4 download

TRANSCRIPT

Page 1: Microservices Design Patterns

1

Microservices Design Patterns – Friday 17th March

Page 2: Microservices Design Patterns

2

Rodrigo CaldasSoftware Engineer

Page 3: Microservices Design Patterns

3

Why do we ask where do we come from?

Page 4: Microservices Design Patterns

4

Where do Microservices come from?

• Domain Driven Design• Continuous Delivery• On Demand Virtualization• Small Autonomous Teams• Scalability

Page 5: Microservices Design Patterns

5

Quick Recap… Domain Driven Design

Strategic Design Patterns

Tactical Design Patterns

Page 6: Microservices Design Patterns

6

What to build

How to build

Quick Recap… Domain Driven Design

Page 7: Microservices Design Patterns

7

Tactical Patterns

• Domain Events• Domain Services• Anti Corruption Layer• Repository• Unit of Work• Entities• Aggregates• Value Objects• Commands• Queries• Helpers

Page 8: Microservices Design Patterns

8

Strategic Patterns

• Ubiquitous Language• Domain Model• Bounded Contexts

Building software is already hard enough.Strategic patterns distil the domain knowledge.

Page 9: Microservices Design Patterns

9

Bounded Contexts at WorldRemit

PayIn

TransactionMonitor

Page 10: Microservices Design Patterns

10

Systems are not bounded contexts!

NO!

Page 11: Microservices Design Patterns

11

Bounded Contexts at WorldRemit

CorrespondentIntegrationsCompliancePayments

CustomerServicePresentation

Page 12: Microservices Design Patterns

12

Where some systems live…

CorrespondentIntegrations

ComplianceTransaction

Monitor

PaymentsPayIn

Service OfferingApi Calculator

PresentationWebsite

Android AppIOS App

CustomerService

Control MoneySalesforce

Page 13: Microservices Design Patterns

13

MicroservicesDesignPatterns

Page 14: Microservices Design Patterns

14

Service Orchestration Pattern

Service Choreography Pattern

Page 15: Microservices Design Patterns

15

Orchestrator Pattern

Page 16: Microservices Design Patterns

16

Pitfalls of the Orchestrator Pattern

• There is a service rich in Domain knowledge• There are many dumb services

Advantages of the Orchestrator Pattern

• Synchronous services are easier to create

Page 17: Microservices Design Patterns

17

Choreography Pattern

Page 18: Microservices Design Patterns

18

Advantages of the Choreography Pattern

• Loose coupling• Adaptive to change

Page 19: Microservices Design Patterns

19

Choreography Pattern

Page 20: Microservices Design Patterns

20

Access by Reference Pattern

Access by Value Pattern

Page 21: Microservices Design Patterns

21

Access by Reference

“this” happened

Sacrifices availability

Page 22: Microservices Design Patterns

22

Access by Value“what” happened

Sacrifices consistency

Page 23: Microservices Design Patterns

23

“Freshness” approach

Page 24: Microservices Design Patterns

24

(Eric Brewer)

1. Consistency2. Availability3. Partition

The CAP theorem

You only get to pick two.

Page 25: Microservices Design Patterns

25

But the basic premise of a constellation of Microservices is that its Partitioned.

So…

1. Consistency and Partitioning.

2. Availability and Partitioning.

This leaves us with only two options.

Page 26: Microservices Design Patterns

26

Why does this all matter?

Page 27: Microservices Design Patterns

27

One of many reasons… The execution timeVisual Basic

Vs.

C++

Which is faster?What if C++ implementation has one IO call?

IO time is everything

Page 28: Microservices Design Patterns

28

Bulkheads

and

Circuit Breakers

Page 29: Microservices Design Patterns

29

Bulkheads

• They are the compartments in ships that prevent the whole ship from flooding if the hull is breached.

• They are the staple of Microservices that can handle failure instead of failing

Page 30: Microservices Design Patterns

30

An example of failure without Bulkheads

Page 31: Microservices Design Patterns

31

An example of failure with Bulkheads

“ Life is good “

Page 32: Microservices Design Patterns

32

What about the Error Queue?

Page 33: Microservices Design Patterns

33

Circuit Breakers

• You have them at home!

• They are your strategy for how to handle failure.

Page 34: Microservices Design Patterns

34

API Gateway Pattern

Page 35: Microservices Design Patterns

35

The Problem

Page 36: Microservices Design Patterns

36

The API Gateway Pattern

Page 37: Microservices Design Patterns

37

Questions?