when developers operate and operators develop

85
When developers operate, and operators develop… Adrian Cockcroft @adrianco Technology Fellow - Battery Ventures June 2015

Upload: adrian-cockcroft

Post on 03-Aug-2015

3.219 views

Category:

Technology


1 download

TRANSCRIPT

When developers operate, and operators develop…

Adrian Cockcroft @adrianco Technology Fellow - Battery Ventures

June 2015

“You build it, you run it.” Werner Vogels 2006

Key Goals of the CIO? Align IT with the business Develop products faster Try not to get breached

Security Blanket Failure

Insecure applications hidden behind firewalls make you feel safe until the breach happens…

http://peanuts.wikia.com/wiki/Linus'_security_blanket

What needs to change?

Developer responsibilities: Faster, cheaper, safer

Operator responsibilities: API driven platform automation

Product Development

Processes

Assumption: Process prevents

problems

Organizations build up slow complex “Scar

tissue” processes

Observe

Orient

Decide

Act Continuous Delivery

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Measure Customers

Continuous Delivery

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

INNOVATION

Measure Customers

Continuous Delivery

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Analysis

Model Hypotheses

INNOVATION

Measure Customers

Continuous Delivery

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Analysis

Model Hypotheses

BIG DATA

INNOVATION

Measure Customers

Continuous Delivery

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Analysis

JFDI

Plan Response

Share Plans

Model Hypotheses

BIG DATA

INNOVATION

Measure Customers

Continuous Delivery

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Analysis

JFDI

Plan Response

Share Plans

Model Hypotheses

BIG DATA

INNOVATION

CULTURE

Measure Customers

Continuous Delivery

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Analysis

JFDI

Plan Response

Share Plans

Incremental Features

Automatic Deploy

Launch AB Test

Model Hypotheses

BIG DATA

INNOVATION

CULTURE

Measure Customers

Continuous Delivery

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Analysis

JFDI

Plan Response

Share Plans

Incremental Features

Automatic Deploy

Launch AB Test

Model Hypotheses

BIG DATA

INNOVATION

CULTURE

CLOUD

Measure Customers

Continuous Delivery

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Analysis

JFDI

Plan Response

Share Plans

Incremental Features

Automatic Deploy

Launch AB Test

Model Hypotheses

BIG DATA

INNOVATION

CULTURE

CLOUD

Measure Customers

Continuous Delivery

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Analysis

JFDI

Plan Response

Share Plans

Incremental Features

Automatic Deploy

Launch AB Test

Model Hypotheses

BIG DATA

INNOVATION

CULTURE

CLOUD

Measure Customers

Continuous Delivery

Breaking Down the SILOs

Breaking Down the SILOs

QA DBA Sys Adm

Net Adm

SAN AdmDevUXProd

Mgr

Breaking Down the SILOs

QA DBA Sys Adm

Net Adm

SAN AdmDevUXProd

Mgr

Product Team Using Monolithic DeliveryProduct Team Using Monolithic Delivery

Breaking Down the SILOs

QA DBA Sys Adm

Net Adm

SAN AdmDevUXProd

MgrProduct Team Using Microservices

Product Team Using Monolithic Delivery

Product Team Using Microservices

Product Team Using Microservices

Product Team Using Monolithic Delivery

Breaking Down the SILOs

QA DBA Sys Adm

Net Adm

SAN AdmDevUXProd

MgrProduct Team Using Microservices

Product Team Using Monolithic Delivery

Platform TeamProduct Team Using Microservices

Product Team Using Microservices

Product Team Using Monolithic Delivery

Breaking Down the SILOs

QA DBA Sys Adm

Net Adm

SAN AdmDevUXProd

MgrProduct Team Using Microservices

Product Team Using Monolithic Delivery

Platform TeamA P IProduct Team Using Microservices

Product Team Using Microservices

Product Team Using Monolithic Delivery

Breaking Down the SILOs

QA DBA Sys Adm

Net Adm

SAN AdmDevUXProd

MgrProduct Team Using Microservices

Product Team Using Monolithic Delivery

Platform Team

DevOps is a Re-Org!

A P IProduct Team Using Microservices

Product Team Using Microservices

Product Team Using Monolithic Delivery

Release Plan

Developer

Developer

Developer

Developer

Developer

QA Release Integration

Ops Replace Old With New

Release

Monolithic service updates

Works well with a small number of developers and a single language like php, java or ruby

Release Plan

Developer

Developer

Developer

Developer

Developer

QA Release Integration

Ops Replace Old With New

Release

Bugs

Monolithic service updates

Works well with a small number of developers and a single language like php, java or ruby

Release Plan

Developer

Developer

Developer

Developer

Developer

QA Release Integration

Ops Replace Old With New

Release

Bugs

Bugs

Monolithic service updates

Works well with a small number of developers and a single language like php, java or ruby

Use monolithic apps for small teams, simple systems and when you must, to optimize for efficiency and latency

Developer

Developer

Developer

Developer

Developer

Old Release Still Running

Release Plan

Release Plan

Release Plan

Release Plan

Immutable microservice deployment scales, is faster with large teams and diverse platform components

Developer

Developer

Developer

Developer

Developer

Old Release Still Running

Release Plan

Release Plan

Release Plan

Release Plan

Deploy Feature to Production

Deploy Feature to Production

Deploy Feature to Production

Deploy Feature to Production

Immutable microservice deployment scales, is faster with large teams and diverse platform components

Developer

Developer

Developer

Developer

Developer

Old Release Still Running

Release Plan

Release Plan

Release Plan

Release Plan

Deploy Feature to Production

Deploy Feature to Production

Deploy Feature to Production

Deploy Feature to Production

Bugs

Immutable microservice deployment scales, is faster with large teams and diverse platform components

Developer

Developer

Developer

Developer

Developer

Old Release Still Running

Release Plan

Release Plan

Release Plan

Release Plan

Deploy Feature to Production

Deploy Feature to Production

Deploy Feature to Production

Deploy Feature to Production

Bugs

Deploy Feature to Production

Immutable microservice deployment scales, is faster with large teams and diverse platform components

Developer Developer

Run What You Wrote

Developer Developer

Developer Developer

Run What You Wrote

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Developer Developer

Developer Developer

Run What You Wrote

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Developer Developer

Monitoring Tools

DeveloperDeveloper Developer

Run What You Wrote

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Developer Developer

Monitoring Tools

DeveloperDeveloper Developer

Run What You Wrote

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Developer Developer

Site Reliability

Monitoring Tools

Availability Metrics

99.95% customer success rate

DeveloperDeveloper Developer

Run What You Wrote

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Developer Developer

Manager Manager

Site Reliability

Monitoring Tools

Availability Metrics

99.95% customer success rate

DeveloperDeveloper Developer

Run What You Wrote

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Developer Developer

Manager Manager

VP Engineering

Site Reliability

Monitoring Tools

Availability Metrics

99.95% customer success rate

Change One Thing at a Time!

What Happened?Rate of change

increased

Cost and size and risk of change

reduced

Low Cost of Change Using Docker

Developers • Compile/Build • Seconds

Extend container • Package dependencies • Seconds

PaaS deploy Container • Docker startup • Seconds

Low Cost of Change Using Docker

Fast tooling supports continuous delivery of many tiny changes

Developers • Compile/Build • Seconds

Extend container • Package dependencies • Seconds

PaaS deploy Container • Docker startup • Seconds

Disruptor: Continuous Delivery with

Containerized Microservices

Microservices

A Microservice Definition

Loosely coupled service oriented architecture with bounded contexts

A Microservice Definition

Loosely coupled service oriented architecture with bounded contexts

If every service has to be updated at the same time it’s not loosely coupled

A Microservice Definition

Loosely coupled service oriented architecture with bounded contexts

If every service has to be updated at the same time it’s not loosely coupled

If you have to know too much about surrounding services you don’t have a bounded context. See the Domain Driven Design book by Eric Evans.

Coupling Concerns

http://en.wikipedia.org/wiki/Conway's_law

●Conway’s Law - organizational coupling

●Centralized Database Schemas

●Enterprise Service Bus - centralized message queues

●Inflexible Protocol Versioning

Speeding Up Deployments

Datacenter Snowflakes • Deploy in months • Live for years

Speeding Up Deployments

Datacenter Snowflakes • Deploy in months • Live for years

Virtualized and Cloud • Deploy in minutes • Live for weeks

Speeding Up Deployments

Datacenter Snowflakes • Deploy in months • Live for years

Virtualized and Cloud • Deploy in minutes • Live for weeks

Container Deployments • Deploy in seconds • Live for minutes/hours

Speeding Up Deployments

Datacenter Snowflakes • Deploy in months • Live for years

Virtualized and Cloud • Deploy in minutes • Live for weeks

Container Deployments • Deploy in seconds • Live for minutes/hours

AWS Lambda Events • Respond in milliseconds • Live for seconds

Speeding Up Deployments

Measuring CPU usage once a minute makes no sense for containers… Coping with rate of change is the first challenge for monitoring tools.

Datacenter Snowflakes • Deploy in months • Live for years

Virtualized and Cloud • Deploy in minutes • Live for weeks

Container Deployments • Deploy in seconds • Live for minutes/hours

AWS Lambda Events • Respond in milliseconds • Live for seconds

Inspiration

Challenges for Microservice

Platforms

Managing Scale

A Possible Hierarchy Continents

Regions Zones

Services Versions

Containers Instances

How Many? 3 to 5

2-4 per Continent 1-5 per Region 100’s per Zone

Many per Service 1000’s per Version

10,000’s

It’s much more challenging than just a large number of

machines

Flow

Some tools can show the request flow

across a few services

But interesting architectures have a lot of microservices! Flow visualization is

a big challenge.

See http://www.slideshare.net/LappleApple/gilt-from-monolith-ruby-app-to-micro-service-scala-service-architecture

Failures

ELB Load Balancer

Zuul API Proxy

Karyon Business Logic

Staash Data Access Layer

Priam Cassandra Datastore

Simple NetflixOSS style microservices architecture on three AWS Availability Zones

ELB Load Balancer

Zuul API Proxy

Karyon Business Logic

Staash Data Access Layer

Priam Cassandra Datastore

Simple NetflixOSS style microservices architecture on three AWS Availability Zones

ELB Load Balancer

Zuul API Proxy

Karyon Business Logic

Staash Data Access Layer

Priam Cassandra Datastore

Simple NetflixOSS style microservices architecture on three AWS Availability Zones

Zone partition/failure What should you do? What should monitors show?

ELB Load Balancer

Zuul API Proxy

Karyon Business Logic

Staash Data Access Layer

Priam Cassandra Datastore

Simple NetflixOSS style microservices architecture on three AWS Availability Zones

Zone partition/failure What should you do? What should monitors show?

By design, everything works with 2 of 3 zones running. This is not an outage, inform but don’t touch anything! Halt deployments perhaps?

ELB Load Balancer

Zuul API Proxy

Karyon Business Logic

Staash Data Access Layer

Priam Cassandra Datastore

Simple NetflixOSS style microservices architecture on three AWS Availability Zones

Zone partition/failure What should you do? What should monitors show?

By design, everything works with 2 of 3 zones running. This is not an outage, inform but don’t touch anything! Halt deployments perhaps?

Challenge: understand and communicate common microservice failure patterns.

Testing

Testing monitoring tools at scale gets expensive quickly…

Simulation

Simulated Microservices

Model and visualize microservices Simulate interesting architectures Generate large scale configurations Eventually stress test real tools

See github.com/adrianco/spigo Simulate Protocol Interactions in Go Visualize with D3

ELB Load Balancer

Zuul API Proxy

Karyon Business Logic

Staash Data Access Layer

Priam Cassandra Datastore

Three Availability Zones

Definition of an architecture

{ "arch": "netflixoss", "description":"A very simple Netflix service. See http://netflix.github.io/ to decode the package names", "version": "arch-0.0", "victim": "homepage", "services": [ { "name": "cassSubscriber", "package": "priamCassandra", "count": 6, "regions": 1, "dependencies": ["cassSubscriber", "eureka"]}, { "name": "evcacheSubscriber","package": "store", "count": 3, "regions": 1, "dependencies": []}, { "name": "subscriber", "package": "staash", "count": 6, "regions": 1, "dependencies": ["cassSubscriber", "evcacheSubscriber"]}, { "name": "login", "package": "karyon", "count": 18, "regions": 1, "dependencies": ["subscriber"]}, { "name": "homepage", "package": "karyon", "count": 24, "regions": 1, "dependencies": ["subscriber"]}, { "name": "wwwproxy", "package": "zuul", "count": 6, "regions": 1, "dependencies": ["login", "homepage"]}, { "name": "www-elb", "package": "elb", "count": 0, "regions": 1, "dependencies": ["wwwproxy"]}, { "name": "www", "package": "denominator", "count": 0, "regions": 0, "dependencies": ["www-elb"]} ] }

Header includes chaos monkey victim

New tier name

Tier package

Region count: 1

Node count

List of tier dependencies

Why Build Spigo/Simianviz?

Generate test microservice configurations at scale Stress monitoring tools display capabilities

Eventually (i.e. not implemented yet) Dynamically vary configuration: autoscale, code push Chaos monkey for microservice, zone, region failures D3 websocket dynamic browser interface

Simulated Game Day Testing and

Training…

Conference Driven Development…

OSCON Microservices Workshop

What’s Next?

Developer Concerns Agile, Lean & Rugged

(Faster, Cheaper and Safer) See GOTO London Sept 2015

Forward Thinking

Forward Thinking

Any Questions?

Disclosure: some of the companies mentioned may be Battery Ventures Portfolio Companies See www.battery.com for a list of portfolio investments

● Battery Ventures http://www.battery.com ● Adrian’s Tweets @adrianco and Blog http://perfcap.blogspot.com ● Slideshare http://slideshare.com/adriancockcroft

● Monitorama Opening Keynote Portland OR - May 7th, 2014 ● GOTO Chicago Opening Keynote May 20th, 2014 ● Qcon New York – Speed and Scale - June 11th, 2014 ● Structure - Cloud Trends - San Francisco - June 19th, 2014 ● GOTO Copenhagen/Aarhus – Fast Delivery - Denmark – Sept 25th, 2014 ● DevOps Enterprise Summit - San Francisco - Oct 21-23rd, 2014 #DOES14 ● GOTO Berlin - Migrating to Microservices - Germany - Nov 6th, 2014 ● AWS Re:Invent - Cloud Native Cost Optimization - Las Vegas - November 14th, 2014 ● O’Reilly Software Architecture Conference - Fast Delivery, Monitoring Challenge - Boston March 16th 2015

Security

Visit http://www.battery.com/our-companies/ for a full list of all portfolio companies in which all Battery Funds have invested.

Palo Alto Networks

Enterprise IT

Operations & Management

Big DataCompute

Networking

Storage