qcon sf 2017 - microservices: service-oriented development

50
Microservices: Service Oriented Development Rafael Schloming

Upload: datawire

Post on 21-Jan-2018

103 views

Category:

Software


4 download

TRANSCRIPT

Microservices:Service Oriented Development

Rafael Schloming

datawire.io

How do I break up my monolith?How do I architect my app with microservices?What infrastructure do I need in place before I

can benefit from microservices?

2

datawire.io

● Building a cloud application using microservices in 2013

● Distributed systems engineers● Multiple services● Prototyping was really fast

● … then we launched and things slowed down…

3

Microservices at Datawire ...

datawire.io

Debugging Velocity (or lack thereof)

4

datawire.io

ToolingArchitecture

Process!!!

5

datawire.io

Debugging our Pipeline

6

datawire.io

Velocity comes from Process, not Architecture

7

datawire.io

Service Oriented ArchitectureService Oriented Development

8

datawire.io 9

Stability/Maturity

Velocity

Prototype Production Mission critical

datawire.io 10

Stability/Maturity

Velocity

Prototype Production Mission critical

datawire.io

A single process is inefficient(Forces a single Stability vs Velocity Tradeoff)

11

datawire.io 12

Define

Code

Test

Release

Prod

datawire.io 13

Define

Code

Test

Release

Prod

Centralized process

● Specialized teams● Fixed policies (e.g.,

release criteria)

datawire.io

A single process doesn’t scale

14

datawire.io

How do I break up my monolith?How do I break up my process?

15

datawire.io 16

Microservices lets you run multiple processes!

datawire.io

Microservices is a distributed development architecture

workflow.

17

datawire.io 18

Stability/Maturity

Velocity

Prototype Production Mission critical

● How do I get to Continuous Deployment incrementally?● How do I limit the scope of PCI (audit process)?● How do I ship feature X as fast as possible?

datawire.io

Microservices is ...

● Multiple workflows○ Including your existing workflow!○ Workflows designed for different

stability/velocity tradeoffs● Simultaneous workflows

19

datawire.io

Doing things this way shifts how people operate!

● Requires both organizational and technical changes

20

datawire.io

Organizational Implementation

21

datawire.io

You gotta give in order to get

22

Education

● Everyone exposed to full dev cycle

Communication

● Nobody speaks the same language

Delegation

● Small teams own big important parts

datawire.io

But you get a lot

23

Education

● Specialists become generalists -> Better holistic systems● Learning, personal growth -> Job satisfaction

Communication

● Conflict -> Collaboration

Delegation

● Massive organizational scale

datawire.io

Create self-sufficient, autonomous software teams.

24

datawire.io

Why self-sufficiency and autonomy?

● Self-sufficient○ Team does not need to rely on other teams to achieve its goals

● Autonomy○ Team is able to independently make (process) decisions on how to achieve its goals

25

datawire.io

Eliminate centralized specialist functions

26

Centralized architecture Centralized infrastructure / ops*(You might need a platform team)

datawire.io

Think Spinoff

27

datawire.io 28

Monolith

datawire.io 29

Monolith

MicroserviceTeam

datawire.io

Technical Implementation

30

datawire.io

The Workflows

31

Prototype Production Users & Growth Mission CriticalStage

GoalsFast Feedback

from bothTools & Users

Add Features&

Don’t Disrupt Users

Stability

datawire.io

One Platform, Parallel Workflows, Seamless Transitions

32

Stage 1: Rapid development, early users

Stage 2: Users Stage 3: Internal users, couplingStage

Goals Doesn’t crash...Minimal disruption to users...

No cascade failures...

Stage 1: Rapid development, early users

Stage 2: Users Stage 3: Internal users, coupling

Stage 1: Rapid development, early users

Stage 2: Users Stage 3: Internal users, couplingPrototype Production Users

& Growth Mission Critical

Doesn’t crash...Minimal disruption to users...

No cascade failures...Doesn’t crash...

Minimal disruption to users...

No cascade failures...

Fast Feedbackfrom both

Tools & Users

Add Features&

Don’t Disrupt Users

Stability

datawire.io

Kubernetes / Docker / Envoy give you the infra you need

33

datawire.io

How do I actually use these technologies to build my workflows?

34

datawire.io 35

Stage 1: Prototyping

Org Problem:You need buy-in for prototyping in

production

Goal:Fast Feedback from both Tools and

Users

Tech Problem:You can’t run microservices locally

datawire.io 36

Strategy:Self Service Provisioning

&Development Containers

datawire.io

Make this fast and easy!

● Too much friction leads to accidental coupling

Provide fast self-service provisioning

37

datawire.io

Problem: Coding on remote infra is slow...

VM based pipeline:

● Deploy time: maybe 45 minutes?

Docker based pipeline:

● Deploy time: maybe a few minutes?

Hacking react on my laptop with live reload:

● Maybe 1-2 seconds?

Hacking flask on my laptop with live reload:

● Instantaneous

38

datawire.io

How can we do better?

39

datawire.io

Develop inside a container

Helps with onboarding and jumping between services:

● Single source of truth for build & dependencies● Consistent and portable dev environment

You can make a faster feedback loop:

1. Sync local files -> remote build2. Sync local files -> local build; snapshot image; deploy in seconds3. Sync local files -> local build; proxy into remote cluster

Shameless self promotion:

● See https://forge.sh for (2) and https://telepresence.io for (3)

40

datawire.io

Fast Deploy == Resilience

41

datawire.io 42

Stage 2: Production Users & Growth

Org Problems:Recognize the Tradeoff

&How to measure user impact

Goal:Add Features

&Don’t Disrupt Users

Tech Problem:Software Bugs

datawire.io 43

Strategy:Genetic Diversity

(Multiversion Deployment)

datawire.io

Multiple versions for software redundancy

44

End user

Primary version

Canary version

Dev version

datawire.io 45

Stage 3: Mission Critical

Org Problem:Avoid regressing

Goal:Stability

Tech Problem:L7 Observability

datawire.io 46

Strategy:Service Level Objectives

&L7 Observability

datawire.io

Cascade Failures

47

A B C D EX

datawire.io

Summary

1. Start with: “How do I break up my monolithic process?”2. Spinoff self sufficient & autonomous teams3. Build awesome tooling for Service Oriented Development

48

datawire.io

Thank you!

[email protected]● If you want to learn more about these ideas, check out our hands-on tutorial here:

○ https://datawire.io/faster

● If you’re interested in any of our open source tools, check them out:○ https://forge.sh for deployment○ https://www.telepresence.io for real-time live coding○ https://www.getambassador.io self-service API Gateway built on Envoy

49

END