Slide 1

Slide 1 text

μServices { } March 2014 Will Hamill

Slide 2

Slide 2 text

DISCLAIMER: I am not an expert We are working (somewhat) in this direction on some projects But this is based mostly on content from QCon London 2014

Slide 3

Slide 3 text

Applications are getting larger

Slide 4

Slide 4 text

Services are getting smaller

Slide 5

Slide 5 text

Services have been getting smaller for some time

Slide 6

Slide 6 text

Monolithic

Slide 7

Slide 7 text

Layered

Slide 8

Slide 8 text

Service-Oriented

Slide 9

Slide 9 text

Micro-Services

Slide 10

Slide 10 text

How?

Slide 11

Slide 11 text

A micro-service typically does only one thing User Authentication and Role Based Authorisation Service User Authentication Role Based Authorisation

Slide 12

Slide 12 text

Anatomy of a micro service HTTP Logic Monitoring Storage

Slide 13

Slide 13 text

Techs: no hard and fast rules Simpler, lighter, self-contained services need simpler and lighter technologies

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Why?

Slide 16

Slide 16 text

Simplicity (at the service level)

Slide 17

Slide 17 text

3,000 LOC vs 200 LOC 100 LOC 500 LOC 400 LOC 200 LOC

Slide 18

Slide 18 text

Scale (distribute load and apps across machines)

Slide 19

Slide 19 text

Scaling the monolith

Slide 20

Slide 20 text

Scaling the monolith

Slide 21

Slide 21 text

Scaling the monolith …

Slide 22

Slide 22 text

Scaling micro-services

Slide 23

Slide 23 text

Scaling micro-services

Slide 24

Slide 24 text

Scaling micro-services

Slide 25

Slide 25 text

Scaling micro-services …

Slide 26

Slide 26 text

Scale 2: Scale Harder (many teams one on project)

Slide 27

Slide 27 text

Division of labour

Slide 28

Slide 28 text

Division of labour

Slide 29

Slide 29 text

Responding to change (decoupling delivery)

Slide 30

Slide 30 text

Release Schedule Every 6 months

Slide 31

Slide 31 text

Every 2 weeks Every week Every 4 weeks About every 4 days

Slide 32

Slide 32 text

Fault tolerance (fault acceptance)

Slide 33

Slide 33 text

Fragile Robust Antifragile

Slide 34

Slide 34 text

Who?

Slide 35

Slide 35 text

Netflix Twitter Amazon Yammer MailOnline

Slide 36

Slide 36 text

Not Quite There Yet

Slide 37

Slide 37 text

BandwagonDB

Slide 38

Slide 38 text

DRY-ed Out “core”

Slide 39

Slide 39 text

Service-Oriented Monolith

Slide 40

Slide 40 text

Difficulties

Slide 41

Slide 41 text

Testing everything is harder (but testing services is easier)

Slide 42

Slide 42 text

Fast, automated deployment and application monitoring are super-important

Slide 43

Slide 43 text

Versioning can be tricky www.semver.org

Slide 44

Slide 44 text

Conway’s Law

Slide 45

Slide 45 text

This Is New

Slide 46

Slide 46 text

This is an emerging approach Find which tradeoffs work best for your particular situation

Slide 47

Slide 47 text

“It depends” ¯\_(ツ)_/¯

Slide 48

Slide 48 text

Further Reading http://www.infoq.com/presentations/Micro-Services http://vimeo.com/user22258446/review/79288222/cbb24b224c http://yobriefca.se/blog/2013/04/29/micro-service-architecture/ http://martinfowler.com/articles/microservices.html http://davidmorgantini.blogspot.co.uk/2013/08/micro-services- introduction.html http://qconlondon.com/dl/qcon-london-2014/slides/ AdrianCockcroft_MigratingToMicroservices.pdf

Slide 49

Slide 49 text

No content