Chad Fowler 1 r o w l e a d F C h i z e r t h a n - - PowerPoint PPT Presentation

chad fowler
SMART_READER_LITE
LIVE PREVIEW

Chad Fowler 1 r o w l e a d F C h i z e r t h a n - - PowerPoint PPT Presentation

From Homogeneous Monolith to Radically Heterogeneous Microservices Architecture Chad Fowler 1 r o w l e a d F C h i z e r t h a n s E u s t e m S y w l e r d f o @ c h a 2 HELLO WORLD!!!!!!!!!!!!!!!!! What


slide-1
SLIDE 1

1

From Homogeneous Monolith to Radically Heterogeneous Microservices Architecture

Chad Fowler

slide-2
SLIDE 2

2

C h a d F

  • w

l e r S y s t e m s E u t h a n i z e r @ c h a d f

  • w

l e r

slide-3
SLIDE 3

HELLO WORLD!!!!!!!!!!!!!!!!!

slide-4
SLIDE 4

What is Wunderlist?

Wunderlist is available on iPhone, iPad, Mac, Web, Android, Windows and Windows Phone

slide-5
SLIDE 5
slide-6
SLIDE 6
slide-7
SLIDE 7
slide-8
SLIDE 8

One Monolithic Application

slide-9
SLIDE 9

One Monolithic Database

slide-10
SLIDE 10

One (Backend) Language (Ruby)

slide-11
SLIDE 11

Test suite slow and brittle

slide-12
SLIDE 12

Caching required for survival

slide-13
SLIDE 13

Deployment was terrifying

slide-14
SLIDE 14

Logic buried in abstractions

slide-15
SLIDE 15

Fear Uncertainty Doubt

slide-16
SLIDE 16

Legacy

@chadfowler Systems Euthanizer

slide-17
SLIDE 17

“legacy"

slide-18
SLIDE 18
slide-19
SLIDE 19

successful challenged failed

slide-20
SLIDE 20

For business software that’s deployed, the average life expectancy is five years.*

(I made this up)

slide-21
SLIDE 21

OH SH*T!

slide-22
SLIDE 22

How do you CREATE Legacy software?

slide-23
SLIDE 23

richard p. gabriel

http://www.dreamsongs.com/Files/DesignBeyondHumanAbilitiesSimp.pdf

Design Beyond Human Abilities

“Biological systems are very much larger than anything (coherent) that people have built”

slide-24
SLIDE 24

“When a cell is not healthy, an outside cell that’s part of the immune system can command the cell to destroy itself without spreading toxins.”

slide-25
SLIDE 25

homeostasis

slide-26
SLIDE 26

What is a cell?

slide-27
SLIDE 27

What is a system?

slide-28
SLIDE 28

When do you build a system vs. a cell? Are you building the right one now?

slide-29
SLIDE 29

If we get these right, can we build systems that

  • utlive us?
slide-30
SLIDE 30
slide-31
SLIDE 31

“Please tell me I’m never going to hear you say you have to do this again.” - a board member

slide-32
SLIDE 32

How do you CREATE Legacy software?

slide-33
SLIDE 33

Heterogenous By Default

slide-34
SLIDE 34

Code is “this big”

slide-35
SLIDE 35

Disposable Software

slide-36
SLIDE 36

tiny databases

slide-37
SLIDE 37

Many tiny services

slide-38
SLIDE 38

HUGE JSON

client

server

client server server server server server server server server

tiny requests

slide-39
SLIDE 39

re-usable services > re-usable components

slide-40
SLIDE 40

Nodes are Disposable

slide-41
SLIDE 41

Never Upgrade Software

  • n an Existing Node

Immutable Deployments

slide-42
SLIDE 42

Threw away Chef

slide-43
SLIDE 43

“wake” = “wunder-make”

slide-44
SLIDE 44
slide-45
SLIDE 45
slide-46
SLIDE 46

multi-tiered architecture

  • Socket
  • Proxy
  • English
  • German
  • “Write layer”
slide-47
SLIDE 47

Message Queuing

  • Standardized Mutation flow
  • Feeds real-time synchronization to clients
  • Feeds anything else, by convention
slide-48
SLIDE 48

“real time” “smart” proxy

authentication authorization

slide-49
SLIDE 49

Convention Over Configuration

slide-50
SLIDE 50

Convention Over Configuration

slide-51
SLIDE 51

Service Resolution

YAML -> JSON -> Auto-generated JSON -> Consul

slide-52
SLIDE 52

https://codeascraft.com/2011/02/15/measure-anything-measure-everything/

slide-53
SLIDE 53
slide-54
SLIDE 54
slide-55
SLIDE 55

How We Migrated

  • Removed joins
  • Separated databases
  • New features prototyped new service approach (comments,

files)

  • New features prototyped real-time/mutation approach

(comments)

  • Replace database connections in old API with new APIs (some

ran as long as 7 months)

  • Test under crazy load/behavior (next slide)
slide-56
SLIDE 56

Böse Gurken

https://medium.com/tales-from-6w/saving-our-bacon-with-evil- cucumbers-2e3d26cebacc

slide-57
SLIDE 57
slide-58
SLIDE 58

The Big Little Rewrites

Socket “smart” proxy

authentica authorizat

slide-59
SLIDE 59

The Future

slide-60
SLIDE 60

homeostasis

slide-61
SLIDE 61

Global async validation middleware

slide-62
SLIDE 62

Cost Reduction

  • Make it work
  • Make it fast
  • Make it cheap
slide-63
SLIDE 63

http://hans.io/blog/2015/05/05/spot_instances/

slide-64
SLIDE 64

Deployment Speed

slide-65
SLIDE 65
slide-66
SLIDE 66

Investigate: How does this work in client code?

slide-67
SLIDE 67

Refactor to Monolith

slide-68
SLIDE 68

Questions?

Please remember to evaluate via the GOTO Guide App