Slide 1

Slide 1 text

12-factor microservices @ONSdigital ONSdigital Software Engineer Community of Practice
 29th November 2016

Slide 2

Slide 2 text

Hi, I’m Ian @iankent ian-kent

Slide 3

Slide 3 text

12-factor microservices • What is 12-factor? • What are microservices? • What are distributed systems? • What is event driven architecture?

Slide 4

Slide 4 text

The twelve factors

Slide 5

Slide 5 text

The twelve factors • Portability between environments • Suitable for modern platforms • Supports continuous deployment • Can scale without significant changes Why use 12-factor?

Slide 6

Slide 6 text

The twelve factors • Codebase • Dependencies • Config • Backing services • Build, release, run • Processes • Port binding • Concurrency • Disposability • Dev/prod parity • Logs • Admin processes More info https://12factor.net

Slide 7

Slide 7 text

Any questions? The twelve factors

Slide 8

Slide 8 text

A baby names API

Slide 9

Slide 9 text

A baby names API What does it do? • One endpoint: GET /top10 • Simple JSON response:

Slide 10

Slide 10 text

A baby names API

Slide 11

Slide 11 text

A baby names API

Slide 12

Slide 12 text

Microservices

Slide 13

Slide 13 text

Microservices Microservice myths • Can be rewritten in two weeks • Less than 50 lines of code • More difficult to design • More difficult to build and deploy

Slide 14

Slide 14 text

Microservices What is a microservice? • Single responsibility • Bounded context • Well defined interfaces • Composable

Slide 15

Slide 15 text

Microservices Why use microservices? • Clear, concise code • Better fault tolerance • Lower risk deployments • Flexible technology choices

Slide 16

Slide 16 text

Microservices What are the challenges? • Interfaces • Distributed systems • Complex architecture • Build and deployment

Slide 17

Slide 17 text

Any questions? Microservices

Slide 18

Slide 18 text

Distributed systems

Slide 19

Slide 19 text

Distributed systems What are they? • Spread across physical servers, datacentre’s and continents • Coordinate by passing messages • Fail often, in unexpected ways • Suffers from CAP theorem

Slide 20

Slide 20 text

Distributed systems The fallacies • The network is reliable • Bandwidth is infinite • Topology doesn't change • Transport cost is zero • Latency is zero • The network is secure • There is one administrator • The network is homogeneous

Slide 21

Slide 21 text

Any questions? Distributed systems

Slide 22

Slide 22 text

A baby names API

Slide 23

Slide 23 text

A baby names API

Slide 24

Slide 24 text

A baby names API New requirement Registrars can provide data electronically

Slide 25

Slide 25 text

A baby names API What does it do? • One endpoint: POST /baby • Simple JSON input:

Slide 26

Slide 26 text

A baby names API

Slide 27

Slide 27 text

A baby names API So why not? • Complexity • Security • Scaling • Risk

Slide 28

Slide 28 text

A baby names API

Slide 29

Slide 29 text

Event driven architecture

Slide 30

Slide 30 text

Event driven architecture What is it? • Asynchronous • Fault tolerant • Scalable • Resilient under load

Slide 31

Slide 31 text

Any questions? Event driven architecture

Slide 32

Slide 32 text

A baby names API

Slide 33

Slide 33 text

A baby names API

Slide 34

Slide 34 text

A baby names API New requirement Provide a real-time stream of baby names

Slide 35

Slide 35 text

A baby names API What does it do? • One endpoint: GET /stream • Simple JSON output stream:

Slide 36

Slide 36 text

A baby names API

Slide 37

Slide 37 text

A baby names API So why not? • ~2k new babies per day • Atomic database updates • Top 10 changes infrequently • How does streaming work?

Slide 38

Slide 38 text

A baby names API Baby name events • New baby registration • Send to streaming API users • Update database • Has top 10 changed? • Notify output API

Slide 39

Slide 39 text

A baby names API

Slide 40

Slide 40 text

TL;DR

Slide 41

Slide 41 text

12-factor microservices • What is 12-factor? • What are microservices? • What are distributed systems? • What is event driven architecture?

Slide 42

Slide 42 text

Thank you! @iankent ian-kent