140
Microservices: Why, what, and how to get there Adrian Cockcroft @adrianco Technology Fellow - Battery Ventures March 2016

Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Microservices: Why, what, and how to get there

Adrian Cockcroft @adriancoTechnology Fellow - Battery Ventures

March 2016

Page 2: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What does @adrianco do?

@adrianco

Technology Due Diligence on Deals

Presentations at Conferences

Presentations at Companies

Technical Advice for Portfolio

Companies

Program Committee for Conferences

Networking with Interesting PeopleTinkering with

Technologies

Maintain Relationship with Cloud Vendors

Page 3: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Why am I here?

%*&!”

By Simon Wardley http://enterpriseitadoption.com/

Page 4: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Why am I here?

%*&!”

By Simon Wardley http://enterpriseitadoption.com/

2009

Page 5: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Why am I here?

%*&!”

By Simon Wardley http://enterpriseitadoption.com/

2009

Page 6: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Why am I here?

@adrianco’s job at the intersection of cloud and Enterprise IT, looking for disruption and opportunities.

%*&!”

By Simon Wardley http://enterpriseitadoption.com/

20142009

Disruptions in 2016 coming from server-less computing and teraservices.

Page 7: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What I learned from my time at Netflix

Page 8: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What I learned from my time at Netflix

•Speed wins in the marketplace

Page 9: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What I learned from my time at Netflix

•Speed wins in the marketplace•Remove friction from product development

Page 10: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What I learned from my time at Netflix

•Speed wins in the marketplace•Remove friction from product development•High trust, low process, no hand-offs between teams

Page 11: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What I learned from my time at Netflix

•Speed wins in the marketplace•Remove friction from product development•High trust, low process, no hand-offs between teams•Freedom and responsibility culture

Page 12: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What I learned from my time at Netflix

•Speed wins in the marketplace•Remove friction from product development•High trust, low process, no hand-offs between teams•Freedom and responsibility culture•Don’t do your own undifferentiated heavy lifting

Page 13: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What I learned from my time at Netflix

•Speed wins in the marketplace•Remove friction from product development•High trust, low process, no hand-offs between teams•Freedom and responsibility culture•Don’t do your own undifferentiated heavy lifting•Use simple patterns automated by tooling

Page 14: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What I learned from my time at Netflix

•Speed wins in the marketplace•Remove friction from product development•High trust, low process, no hand-offs between teams•Freedom and responsibility culture•Don’t do your own undifferentiated heavy lifting•Use simple patterns automated by tooling•Self service cloud makes impossible things instant

Page 15: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 16: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

In 2014 Enterprises finally embraced public cloud and in 2015 began replacing entire datacenters.

Page 17: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

In 2014 Enterprises finally embraced public cloud and in 2015 began replacing entire datacenters.

Oct 2014

Page 18: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

In 2014 Enterprises finally embraced public cloud and in 2015 began replacing entire datacenters.

Oct 2014 Oct 2015

Page 19: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

In 2014 Enterprises finally embraced public cloud and in 2015 began replacing entire datacenters.

Oct 2014 Oct 2015

Page 20: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 21: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Security Blanket Failure

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

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

Page 22: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What needs to change?

Page 23: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Developer responsibilities: Faster, cheaper, safer

Page 24: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Value Chain Mapping

Simon Wardley http://blog.gardeviance.org/2014/11/how-to-get-to-strategy-in-ten-steps.html Related tools and training http://www.wardleymaps.com/

Page 25: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Value Chain Mapping

Simon Wardley http://blog.gardeviance.org/2014/11/how-to-get-to-strategy-in-ten-steps.html Related tools and training http://www.wardleymaps.com/

Your unique product - Agile

Page 26: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Value Chain Mapping

Simon Wardley http://blog.gardeviance.org/2014/11/how-to-get-to-strategy-in-ten-steps.html Related tools and training http://www.wardleymaps.com/

Your unique product - Agile Best of breed as a Service - Lean

Page 27: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Value Chain Mapping

Simon Wardley http://blog.gardeviance.org/2014/11/how-to-get-to-strategy-in-ten-steps.html Related tools and training http://www.wardleymaps.com/

Your unique product - Agile

Undifferentiated utility suppliers - 6sigma

Best of breed as a Service - Lean

Page 28: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Observe

Orient

Decide

Act Continuous Delivery

Page 29: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Measure Customers

Continuous Delivery

Page 30: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

INNOVATION

Measure Customers

Continuous Delivery

Page 31: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Analysis

Model Hypotheses

INNOVATION

Measure Customers

Continuous Delivery

Page 32: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Analysis

Model Hypotheses

BIG DATA

INNOVATION

Measure Customers

Continuous Delivery

Page 33: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 34: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 35: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 36: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 37: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 38: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 39: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Breaking Down the SILOs

Page 40: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Breaking Down the SILOs

QA DBA Sys Adm

Net Adm

SAN AdmDevUXProd

Mgr

Page 41: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Breaking Down the SILOs

QA DBA Sys Adm

Net Adm

SAN AdmDevUXProd

Mgr

Product Team Using Monolithic DeliveryProduct Team Using Monolithic Delivery

Page 42: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Breaking Down the SILOs

QA DBA Sys Adm

Net Adm

SAN AdmDevUXProd

MgrProduct Team Using Microservices

Product Team Using Monolithic Delivery

Product Team Using MicroservicesProduct Team Using Microservices

Product Team Using Monolithic Delivery

Page 43: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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 MicroservicesProduct Team Using Microservices

Product Team Using Monolithic Delivery

Page 44: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Breaking Down the SILOs

QA DBA Sys Adm

Net Adm

SAN AdmDevUXProd

MgrProduct Team Using Microservices

Product Team Using Monolithic Delivery

Platform TeamAPI

Product Team Using MicroservicesProduct Team Using Microservices

Product Team Using Monolithic Delivery

Page 45: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Breaking Down the SILOs

QA DBA Sys Adm

Net Adm

SAN AdmDevUXProd

MgrProduct Team Using Microservices

Product Team Using Monolithic Delivery

Platform Team

Re-Org from project teams to product teams

API

Product Team Using MicroservicesProduct Team Using Microservices

Product Team Using Monolithic Delivery

Page 46: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 47: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 48: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 49: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 50: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 51: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 52: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 53: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 54: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Configure

Configure

Developer

Developer

Developer

Release Plan

Release Plan

Release Plan

Deploy Standardized

Services

Standardized container deployment saves time and effort

https://hub.docker.com

Page 55: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Configure

Configure

Developer

Developer

Developer

Release Plan

Release Plan

Release Plan

Deploy Standardized

Services

Deploy Feature to Production

Deploy Feature to Production

Deploy Feature to Production

Bugs

Deploy Feature to Production

Standardized container deployment saves time and effort

https://hub.docker.com

Page 56: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Developer Developer

Run What You Wrote

Developer Developer

Page 57: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Developer Developer

Run What You Wrote

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Developer Developer

Page 58: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

DeveloperDeveloper Developer

Run What You Wrote

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Developer Developer

Monitoring Tools

Page 59: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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% customersuccess rate

Page 60: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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% customersuccess rate

Page 61: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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% customersuccess rate

Page 62: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Change One Thing at a Time!

Page 63: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What Happened?Rate of change

increased

Cost and size and risk of change

reduced

Page 64: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Low Cost of Change Using Docker

Developers• Compile/Build• Seconds

Extend container• Package dependencies• Seconds

PaaS deploy Container• Docker startup• Seconds

Page 65: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 66: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Disruptor: Continuous Delivery with

Containerized Microservices

Page 67: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Microservices

Page 68: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

A Microservice Definition

Loosely coupled service oriented architecture with bounded contexts

Page 69: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 70: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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.

Page 71: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Speeding Up The Platform

Datacenter Snowflakes• Deploy in months• Live for years

Page 72: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Speeding Up The Platform

Datacenter Snowflakes• Deploy in months• Live for years

Virtualized and Cloud• Deploy in minutes• Live for weeks

Page 73: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Speeding Up The Platform

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

Page 74: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Speeding Up The Platform

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

Lambda Deployments• Deploy in milliseconds• Live for seconds

Page 75: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Speeding Up The Platform

AWS Lambda is leading exploration of serverless architectures in 2016

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

Lambda Deployments• Deploy in milliseconds• Live for seconds

Page 76: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Inspiration

Page 77: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

http://www.infoq.com/presentations/Twitter-Timeline-Scalabilityhttp://www.infoq.com/presentations/twitter-soa

http://www.infoq.com/presentations/Zipkinhttp://www.infoq.com/presentations/scale-gilt Go-Kit https://www.youtube.com/watch?v=aL6sd4d4hxk

http://www.infoq.com/presentations/circuit-breaking-distributed-systemshttps://speakerdeck.com/mattheath/scaling-micro-services-in-go-highload-plus-plus-2014

State of the Art in Web Scale Microservice Architectures

AWS Re:Invent : Asgard to Zuul https://www.youtube.com/watch?v=p7ysHhs5hl0Resiliency at Massive Scale https://www.youtube.com/watch?v=ZfYJHtVL1_w

Microservice Architecture https://www.youtube.com/watch?v=CriDUYtfrjsNew projects for 2015 and Docker Packaging https://www.youtube.com/watch?v=hi7BDAtjfKY

Spinnaker deployment pipeline https://www.youtube.com/watch?v=dwdVwE52KkUhttp://www.infoq.com/presentations/spring-cloud-2015

Page 78: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Microservice Concerns

ConfigurationTooling Discovery Routing Observability

Development: Languages and Container

Operational: Orchestration and Deployment Infrastructure

Datastores

Policy: Architectural and Security Compliance

Page 79: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Microservices

EddaArchaius

Configuration

SpinnakerSpringCloud

Tooling

EurekaPrana

Discovery

DenominatorZuul

Ribbon

Routing

HystrixPytheus

Atlas

Observability

Development using Java, Groovy, Scala, Clojure, Python with AMI and Docker Containers

Orchestration with Autoscalers on AWS, exploring Mesos & ECS for Docker

Ephemeral datastores using Dynomite, Memcached, Astyanax, Staash, Priam, Cassandra

Policy via the Simian Army - Chaos Monkey, Chaos Gorilla, Conformity Monkey, Security Monkey

Page 80: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

! Edda - the “black box flight recorder” for configuration state

! Chaos Monkey - enforcing stateless business logic

! Chaos Gorilla - enforcing zone isolation/replication

! Chaos Kong - enforcing region isolation/replication

! Security Monkey - watching for insecure configuration settings

! See over 100 NetflixOSS projects at netflix.github.com

! Get “Technical Indigestion” reading techblog.netflix.com

Trust with Verification

Page 81: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Cloud Native Monitoring and Microservices

Page 82: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Cloud Native Microservices! High rate of change

Code pushes can cause floods of new instances and metrics Short baseline for alert threshold analysis – everything looks unusual

! Ephemeral Configurations Short lifetimes make it hard to aggregate historical views Hand tweaked monitoring tools take too much work to keep running

! Microservices with complex calling patterns End-to-end request flow measurements are very important Request flow visualizations get overwhelmed

Page 83: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Whoops! I didn’t mean that! Reverting…

Not cool if it takes 5 minutes to see it failed and 5 more to see a fix No-one notices if it only takes 5 seconds to detect and 5 to see a fix

Page 84: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

NetflixOSS Hystrix/Turbine Circuit Breaker

http://techblog.netflix.com/2012/12/hystrix-dashboard-and-turbine.html

Page 85: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

NetflixOSS Hystrix/Turbine Circuit Breaker

http://techblog.netflix.com/2012/12/hystrix-dashboard-and-turbine.html

Page 86: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Low Latency SaaS Based Monitors

https://www.datadoghq.com/ http://www.instana.com/ www.bigpanda.io www.vividcortex.com signalfx.com wavefront.com sysdig.com

Page 87: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Metric to display latency needs to be less than human attention span (~10s)

Page 88: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Challenges for Microservice

Platforms

Page 89: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Managing Scale

Page 90: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 91: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Flow

Page 92: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Some tools can show the request flow

across a few services

Page 93: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

Page 94: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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

KaryonBusinessLogic

StaashDataAccessLayerPriam CassandraDatastore

ThreeAvailabilityZones

Page 95: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Spigo Nanoservice Structurefunc Start(listener chan gotocol.Message) { ... for { select { case msg := <-listener:

flow.Instrument(msg, name, hist) switch msg.Imposition { case gotocol.Hello: // get named by parent ... case gotocol.NameDrop: // someone new to talk to ... case gotocol.Put: // upstream request handler ... outmsg := gotocol.Message{gotocol.Replicate, listener, time.Now(), msg.Ctx.NewParent(), msg.Intention} flow.AnnotateSend(outmsg, name) outmsg.GoSend(replicas) } case <-eurekaTicker.C: // poll the service registry ... } } }

Skeleton code for replicating a Put message

Instrument incoming requests

Instrument outgoing requests

update trace context

Page 96: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Flow Trace Recording

riak2us-east-1

zoneC

riak9us-west-2

zoneA

Put s896

Replicate

riak3us-east-1

zoneA

riak8us-west-2

zoneC

riak4us-east-1

zoneB

riak10us-west-2

zoneB

us-east-1.zoneC.riak2 t98p895s896 Put us-east-1.zoneA.riak3 t98p896s908 Replicate us-east-1.zoneB.riak4 t98p896s909 Replicate us-west-2.zoneA.riak9 t98p896s910 Replicate us-west-2.zoneB.riak10 t98p910s912 Replicate us-west-2.zoneC.riak8 t98p910s913 Replicate

staashus-east-1

zoneC

s910 s908s913s909s912

Replicate Put

Page 97: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Open Zipkin

A common format for trace annotations A Java tool for visualizing traces Standardization effort to fold in other formats Driven by Adrian Cole (currently at Pivotal) Extended to load Spigo generated trace files

Page 98: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Trace for one Spigo Flow

Page 99: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Definition of an architecture

{ "arch": "lamp", "description":"Simple LAMP stack", "version": "arch-0.0", "victim": "webserver", "services": [ { "name": "rds-mysql", "package": "store", "count": 2, "regions": 1, "dependencies": [] }, { "name": "memcache", "package": "store", "count": 1, "regions": 1, "dependencies": [] }, { "name": "webserver", "package": "monolith", "count": 18, "regions": 1, "dependencies": ["memcache", "rds-mysql"] }, { "name": "webserver-elb", "package": "elb", "count": 0, "regions": 1, "dependencies": ["webserver"] }, { "name": "www", "package": "denominator", "count": 0, "regions": 0, "dependencies": ["webserver-elb"] } ] }

Header includeschaos monkey victim

New tier name

Tier package

0 = non Regional

Node count

List of tier dependencies

Page 100: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Running Spigo$ ./spigo -a lamp -j -d 2 2016/01/26 23:04:05 Loading architecture from json_arch/lamp_arch.json 2016/01/26 23:04:05 lamp.edda: starting 2016/01/26 23:04:05 Architecture: lamp Simple LAMP stack 2016/01/26 23:04:05 architecture: scaling to 100% 2016/01/26 23:04:05 lamp.us-east-1.zoneB.eureka01....eureka.eureka: starting 2016/01/26 23:04:05 lamp.us-east-1.zoneA.eureka00....eureka.eureka: starting 2016/01/26 23:04:05 lamp.us-east-1.zoneC.eureka02....eureka.eureka: starting 2016/01/26 23:04:05 Starting: {rds-mysql store 1 2 []} 2016/01/26 23:04:05 Starting: {memcache store 1 1 []} 2016/01/26 23:04:05 Starting: {webserver monolith 1 18 [memcache rds-mysql]} 2016/01/26 23:04:05 Starting: {webserver-elb elb 1 0 [webserver]} 2016/01/26 23:04:05 Starting: {www denominator 0 0 [webserver-elb]} 2016/01/26 23:04:05 lamp.*.*.www00....www.denominator activity rate 10ms 2016/01/26 23:04:06 chaosmonkey delete: lamp.us-east-1.zoneC.webserver02....webserver.monolith 2016/01/26 23:04:07 asgard: Shutdown 2016/01/26 23:04:07 lamp.us-east-1.zoneB.eureka01....eureka.eureka: closing 2016/01/26 23:04:07 lamp.us-east-1.zoneA.eureka00....eureka.eureka: closing 2016/01/26 23:04:07 lamp.us-east-1.zoneC.eureka02....eureka.eureka: closing 2016/01/26 23:04:07 spigo: complete 2016/01/26 23:04:07 lamp.edda: closing

-a architecture lamp-j graph json/lamp.json-d run for 2 seconds

Page 101: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Riak IoT Architecture{ "arch": "riak", "description":"Riak IoT ingestion example for the RICON 2015 presentation", "version": "arch-0.0", "victim": "", "services": [ { "name": "riakTS", "package": "riak", "count": 6, "regions": 1, "dependencies": ["riakTS", "eureka"]}, { "name": "ingester", "package": "staash", "count": 6, "regions": 1, "dependencies": ["riakTS"]}, { "name": "ingestMQ", "package": "karyon", "count": 3, "regions": 1, "dependencies": ["ingester"]}, { "name": "riakKV", "package": "riak", "count": 3, "regions": 1, "dependencies": ["riakKV"]}, { "name": "enricher", "package": "staash", "count": 6, "regions": 1, "dependencies": ["riakKV", "ingestMQ"]}, { "name": "enrichMQ", "package": "karyon", "count": 3, "regions": 1, "dependencies": ["enricher"]}, { "name": "analytics", "package": "karyon", "count": 6, "regions": 1, "dependencies": ["ingester"]}, { "name": "analytics-elb", "package": "elb", "count": 0, "regions": 1, "dependencies": ["analytics"]}, { "name": "analytics-api", "package": "denominator", "count": 0, "regions": 0, "dependencies": ["analytics-elb"]}, { "name": "normalization", "package": "karyon", "count": 6, "regions": 1, "dependencies": ["enrichMQ"]}, { "name": "iot-elb", "package": "elb", "count": 0, "regions": 1, "dependencies": ["normalization"]}, { "name": "iot-api", "package": "denominator", "count": 0, "regions": 0, "dependencies": ["iot-elb"]}, { "name": "stream", "package": "karyon", "count": 6, "regions": 1, "dependencies": ["ingestMQ"]}, { "name": "stream-elb", "package": "elb", "count": 0, "regions": 1, "dependencies": ["stream"]}, { "name": "stream-api", "package": "denominator", "count": 0, "regions": 0, "dependencies": ["stream-elb"]} ] }

New tier name

Tier package

Node count

List of tier dependencies

0 = non Regional

Page 102: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Single Region Riak IoT

Page 103: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Single Region Riak IoT

IoT Ingestion Endpoint

Stream Endpoint

Analytics Endpoint

Page 104: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Single Region Riak IoT

IoT Ingestion Endpoint

Stream Endpoint

Analytics Endpoint

Load Balancer

Load Balancer

Load Balancer

Page 105: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Single Region Riak IoT

IoT Ingestion Endpoint

Stream Endpoint

Analytics Endpoint

Load Balancer

Normalization Services

Load Balancer

Load Balancer

Stream Service

Analytics Service

Page 106: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Single Region Riak IoT

IoT Ingestion Endpoint

Stream Endpoint

Analytics Endpoint

Load Balancer

Normalization Services

Enrich Message Queue Riak KV

Enricher Services

Load Balancer

Load Balancer

Stream Service

Analytics Service

Page 107: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Single Region Riak IoT

IoT Ingestion Endpoint

Stream Endpoint

Analytics Endpoint

Load Balancer

Normalization Services

Enrich Message Queue Riak KV

Enricher Services

Ingest Message Queue

Load Balancer

Load Balancer

Stream Service

Analytics Service

Page 108: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Single Region Riak IoT

IoT Ingestion Endpoint

Stream Endpoint

Analytics Endpoint

Load Balancer

Normalization Services

Enrich Message Queue Riak KV

Enricher Services

Ingest Message Queue

Load Balancer

Load Balancer

Stream Service Riak TS

Analytics Service

Ingester Service

Page 109: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Two Region Riak IoT

IoT Ingestion Endpoint

Stream Endpoint

Analytics Endpoint

East Region Ingestion

West Region Ingestion

Multi Region TS Analytics

Page 110: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Two Region Riak IoT

IoT Ingestion Endpoint

Stream Endpoint

Analytics Endpoint

East Region Ingestion

West Region Ingestion

Multi Region TS Analytics

What’s the response time of the stream

endpoint?

Page 111: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Response Times

Page 112: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What’s the response time of a simple service?

memcached

rds-msql

rds-msqlwebservers

elb

www

Page 113: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What’s the response time of an even simpler storage backed web service?

memcached

mysql

disk volumeweb service

load generator

Page 114: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Measuring Response Time With

Histograms

Page 115: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Changes made to codahale/hdrhistogram

Changes made to go-kit/kit/metrics

Implementation in adrianco/spigo/collect

Page 116: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What to measure?

Client ServerGetRequest

GetResponse

Client Time

Client Send CS

Server Receive SR

Server Send SS

Client Receive CR

Server Time

Page 117: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What to measure?

Client ServerGetRequest

GetResponse

Client Time

Client Send CS

Server Receive SR

Server Send SS

Client Receive CR

Response CR-CS

Service SS-SR

Network SR-CS

Network CR-SS

Net Round Trip (SR-CS) + (CR-SS) (CR-CS) - (SS-SR)

Server Time

Page 118: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Spigo Histogram Resultsname: storage.*.*.load00....load.denominator_resp count: 1978 gauges: map[50:126975 99:278527] From, To, Count, Prob, Bar 28672, 29695, 1, 0.0005, : 31744, 32767, 1, 0.0005, : 34816, 36863, 2, 0.0010, :# 36864, 38911, 8, 0.0040, |###### 38912, 40959, 13, 0.0066, |########## 40960, 43007, 18, 0.0091, |############## 43008, 45055, 12, 0.0061, |######### 45056, 47103, 26, 0.0131, |#################### 47104, 49151, 24, 0.0121, |################## 49152, 51199, 33, 0.0167, |######################### 51200, 53247, 29, 0.0147, |###################### 53248, 55295, 35, 0.0177, |########################### 55296, 57343, 39, 0.0197, |############################## 57344, 59391, 35, 0.0177, |########################### 59392, 61439, 43, 0.0217, |################################# 61440, 63487, 31, 0.0157, |######################## 63488, 65535, 39, 0.0197, |############################## 65536, 69631, 74, 0.0374, |######################################################### 69632, 73727, 65, 0.0329, |################################################## 73728, 77823, 57, 0.0288, |############################################ 77824, 81919, 37, 0.0187, |############################ 81920, 86015, 37, 0.0187, |############################ 86016, 90111, 30, 0.0152, |####################### 90112, 94207, 39, 0.0197, |############################## 94208, 98303, 28, 0.0142, |##################### 98304, 102399, 30, 0.0152, |####################### 102400, 106495, 31, 0.0157, |######################## 106496, 110591, 20, 0.0101, |############### 110592, 114687, 26, 0.0131, |#################### 114688, 118783, 44, 0.0222, |################################## 118784, 122879, 41, 0.0207, |############################### 122880, 126975, 54, 0.0273, |########################################## 126976, 131071, 51, 0.0258, |####################################### 131072, 139263, 114, 0.0576, |######################################################################################## 139264, 147455, 123, 0.0622, |############################################################################################### 147456, 155647, 127, 0.0642, |################################################################################################### 155648, 163839, 102, 0.0516, |############################################################################### 163840, 172031, 90, 0.0455, |###################################################################### 172032, 180223, 65, 0.0329, |################################################## 180224, 188415, 43, 0.0217, |################################# 188416, 196607, 60, 0.0303, |############################################## 196608, 204799, 54, 0.0273, |########################################## 204800, 212991, 29, 0.0147, |###################### 212992, 221183, 21, 0.0106, |################ 221184, 229375, 25, 0.0126, |################### 229376, 237567, 18, 0.0091, |############## 237568, 245759, 15, 0.0076, |########### 245760, 253951, 9, 0.0046, |####### 253952, 262143, 8, 0.0040, |###### 262144, 278527, 10, 0.0051, |####### 278528, 294911, 6, 0.0030, |#### 294912, 311295, 2, 0.0010, |# 327680, 344063, 2, 0.0010, :# 344064, 360447, 1, 0.0005, | 376832, 393215, 1, 0.0005, :

name: storage.*.*.load00....load.denominator_resp count: 1978 gauges: map[50:126975 99:278527] From, To, Count, Prob, Bar 28672, 29695, 1, 0.0005, : 31744, 32767, 1, 0.0005, : 34816, 36863, 2, 0.0010, :# 36864, 38911, 8, 0.0040, |###### 38912, 40959, 13, 0.0066, |##########

Normalized probability

Response time distribution measured in nanoseconds using High Dynamic Range Histogram

:# Zero counts skipped|# Contiguous buckets

Total count, median and 99th percentile values

Page 119: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

See http://www.getguesstimate.com/models/1307 https://github.com/getguesstimate/guesstimate-app by Ozzie Gooen

Page 120: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

See http://www.getguesstimate.com/models/1307 https://github.com/getguesstimate/guesstimate-app by Ozzie Gooen

Page 121: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

See http://www.getguesstimate.com/models/1307 https://github.com/getguesstimate/guesstimate-app by Ozzie Gooen

Page 122: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

See http://www.getguesstimate.com/models/1307 https://github.com/getguesstimate/guesstimate-app by Ozzie Gooen

Page 123: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Hit rates: memcached 40% mysql 70%

Page 124: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

memcached hit %

memcached response mysql response

service cpu time

memcached hit mode

mysql cache hit mode

mysql disk access mode

Hit rates: memcached 40% mysql 70%

Page 125: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Hit rates: memcached 60% mysql 70%

Page 126: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

memcached hit %

memcached response mysql response

service cpu time

memcached hit mode

mysql cache hit mode

mysql disk access mode

Hit rates: memcached 60% mysql 70%

Page 127: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Hit rates: memcached 20% mysql 90%

Page 128: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

memcached hit %

memcached response mysql response

service cpu time

memcached hit mode

mysql cache hit mode

mysql disk access mode

Hit rates: memcached 20% mysql 90%

Page 129: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Go Guesstimate Interfacehttps://github.com/adrianco/goguesstimate

{ "space": { "name": "gotest", "description": "Testing", "is_private": "true", "graph": { "metrics": [ {"id": "AB", "readableId": "AB", "name": "memcached", "location": {"row": 2, "column":4}}, {"id": "AC", "readableId": "AC", "name": "memcached percent", "location": {"row": 2, "column":3}}, {"id": "AD", "readableId": "AD", "name": "staash cpu", "location": {"row": 3, "column":3}}, {"id": "AE", "readableId": "AE", "name": "staash", "location": {"row": 3, "column":2}} ], "guesstimates": [ {"metric": "AB", "input": null, "guesstimateType": "DATA", "data": [119958,6066,13914,9595,6773,5867,2347,1333,9900,9404,13518,9021,7915,3733,10244,5461,12243,7931,9044,11706,5706,22861,9022,48661,15158,28995,16885,9564,17915,6610,7080,7065,12992,35431,11910,11465,14455,25790,8339,9991]}, {"metric": "AC", "input": "40", "guesstimateType": "POINT"}, {"metric": "AD", "input": "[1000,4000]", "guesstimateType": "NORMAL"}, {"metric": "AE", "input": "=100+((randomInt(0,100)>AC)?AB:AD)", "guesstimateType": "FUNCTION"} ] } } }

Page 130: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

See http://www.getguesstimate.com

Page 131: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

What’s Next?

Page 132: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Trends to watch for 2016:

Serverless Architectures - AWS Lambda

Teraservices - using terabytes of memory

Page 133: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Serverless Architectures

AWS Lambda getting some early wins

Google Cloud Functions alpha launched

IBM OpenWhisk - open sourced

Startup activity: iron.io , serverless.com, apex.run toolkit

Page 134: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Teraservices

Page 135: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Terabyte Memory Directions

Engulf dataset in memory for analytics

Balanced config for memory intensive workloads

Replace high end systems at commodity cost point

Explore non-volatile memory implications

Page 136: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Terabyte Memory Options

Now: Diablo DDR4 DIMM containing flash 64/128/256GB Migrates pages to/from companion DRAM DIMM Shipping now as volatile memory, future non-volatile

Announced but not shipped for 2016 AWS X1 Instance Type - over 2TB RAM Easy availability should drive innovation

Page 137: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Diablo Memory1: Flash DIMM

NO CHANGES to CPU or Server

NO CHANGES to Operating System

NO CHANGES to Applications✓ UP TO 256GB DDR4 MEMORY PER MODULE

✓ UP TO 4TB MEMORY IN 2 SOCKET SYSTEM

TM

Page 138: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Learn More…

Page 139: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

Q&AAdrian Cockcroft @adrianco

http://slideshare.com/adriancockcroftTechnology Fellow - Battery Ventures

See www.battery.com for a list of portfolio investments

Page 140: Microservices: Why, what, and how to get there - Meetupfiles.meetup.com/...CockCroft-Presentation-Microservices-Boston.pdf · Microservices: Why, what, and how to get there Adrian

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