Slide 1

Slide 1 text

Scale-oriented Architecture with APIs John Sheehan Co-founder, CEO @Runscope

Slide 2

Slide 2 text

Scale-oriented Architecture with APIs MICROSERVICES

Slide 3

Slide 3 text

API DEBUGGING API MONITORING FOR TEAMS

Slide 4

Slide 4 text

30,000+ developers use Runscope

Slide 5

Slide 5 text

MICROSERVICES at Runscope

Slide 6

Slide 6 text

MICROSERVICES = SOA + DevOps

Slide 7

Slide 7 text

If you don't invest in INFRASTRUCTURE don't invest in MICROSERVICES

Slide 8

Slide 8 text

In the beginning...

Slide 9

Slide 9 text

runscope.com Runscope URLs Identity Request Vault api.runscope.com Eventador Calculon Courier Mission Control Passageway go-proxy Warp Pipe go-radar Events Auth Service File Cabinet Script Processor Atlas Archivist Prometheus Billing Scorekeeper

Slide 10

Slide 10 text

Today 40+ internal services 9 engineers

Slide 11

Slide 11 text

How micro should services be?

Slide 12

Slide 12 text

MICROSERVICES GOALS

Slide 13

Slide 13 text

Scaling the Stack GOAL #1

Slide 14

Slide 14 text

Independent Deployability

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

7,789 Deployments in 2014 31+ Per work day

Slide 20

Slide 20 text

Service-level Isolation

Slide 21

Slide 21 text

Independent Scalability

Slide 22

Slide 22 text

Network Resiliency

Slide 23

Slide 23 text

Scaling the Team GOAL #2

Slide 24

Slide 24 text

Network Mindset

Slide 25

Slide 25 text

Isolate Breakage

Slide 26

Slide 26 text

Human Modularity

Slide 27

Slide 27 text

Uniform Interface

Slide 28

Slide 28 text

Developer Experience

Slide 29

Slide 29 text

Smart Client

Slide 30

Slide 30 text

• Service discovery • service://identity/... • Retry failed GETs • Run HTTP requests asynchronously • Log with Runscope Traffic Inspector Smart Client

Slide 31

Slide 31 text

url = "https://ec2-23-212-199-23.us-west-2.amazonaws.com" resp = requests.get(url) if resp.ok: return resp.json() else: # retry? return None def get_user(id): def main(): user = get_user(id) print user["name"]

Slide 32

Slide 32 text

class Identity def get_user(id): url = "service://identity/users/" + id resp = smart_client.get(url) if resp.ok: return User(resp.json()) return AnonymousUser() from Identity import get_user def main(): user = get_user(id) print user.name Auto-locate service Smart retries

Slide 33

Slide 33 text

Smart Service

Slide 34

Slide 34 text

• Built-in healthcheck/heartbeat endpoints • Automatic, realm-aware service registry • Common logging and metrics framework • Simplified dependency management Smart Service

Slide 35

Slide 35 text

Testing & Monitoring

Slide 36

Slide 36 text

API Testing API Monitoring Functionality Availability Performance Correctness In Development In Production "Transactions" "Endpoints"

Slide 37

Slide 37 text

Runscope Radar Functionality Availability Performance Correctness Any Environment API Testing & Monitoring Transactions & Endpoints

Slide 38

Slide 38 text

Try Runscope, free. runscope.com Stop by our table for your free t-shirt!