105
Microservices The Good, Bad and Ugly Adrian Cockcroft @adrianco Technology Fellow - Battery Ventures June 2015

Microservices the Good Bad and the Ugly

Embed Size (px)

Citation preview

Page 1: Microservices the Good Bad and the Ugly

Microservices The Good, Bad and Ugly

Adrian Cockcroft @adrianco Technology Fellow - Battery Ventures

June 2015

Page 2: Microservices the Good Bad and the Ugly

When microservices are good and when you don’t need them What new problems they bring

Page 3: Microservices the Good Bad and the Ugly

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 4: Microservices the Good Bad and the Ugly
Page 5: Microservices the Good Bad and the Ugly

Key Goal of the CIO?

Page 6: Microservices the Good Bad and the Ugly

Key Goal of the CIO?Align IT with the business

Page 7: Microservices the Good Bad and the Ugly

Key Goal of the CIO?Align IT with the business

Note: Netflix doesn’t have a CIO…

Page 8: Microservices the Good Bad and the Ugly

Key Goal of the CIO?Align IT with the business

Note: Netflix doesn’t have a CIO…Product related IT is embedded in the business - totally aligned

Page 9: Microservices the Good Bad and the Ugly

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 10: Microservices the Good Bad and the Ugly

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 11: Microservices the Good Bad and the Ugly

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 12: Microservices the Good Bad and the Ugly

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 13: Microservices the Good Bad and the Ugly

Product Development

Processes

Page 14: Microservices the Good Bad and the Ugly

Assumption: Process prevents

problems

Page 15: Microservices the Good Bad and the Ugly

Organizations build up slow complex “Scar

tissue” processes

Page 16: Microservices the Good Bad and the Ugly

Observe

Orient

Decide

Act Continuous Delivery

Page 17: Microservices the Good Bad and the Ugly

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Measure Customers

Continuous Delivery

Page 18: Microservices the Good Bad and the Ugly

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

INNOVATION

Measure Customers

Continuous Delivery

Page 19: Microservices the Good Bad and the Ugly

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Analysis

Model Hypotheses

INNOVATION

Measure Customers

Continuous Delivery

Page 20: Microservices the Good Bad and the Ugly

Observe

Orient

Decide

Act

Land grab opportunity Competitive

Move

Customer Pain Point

Analysis

Model Hypotheses

BIG DATA

INNOVATION

Measure Customers

Continuous Delivery

Page 21: Microservices the Good Bad and the Ugly

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 22: Microservices the Good Bad and the Ugly

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 23: Microservices the Good Bad and the Ugly

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 24: Microservices the Good Bad and the Ugly

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 25: Microservices the Good Bad and the Ugly

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 26: Microservices the Good Bad and the Ugly

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 27: Microservices the Good Bad and the Ugly

Breaking Down the SILOs

Page 28: Microservices the Good Bad and the Ugly

Breaking Down the SILOs

QA DBA Sys Adm

Net Adm

SAN AdmDevUXProd

Mgr

Page 29: Microservices the Good Bad and the Ugly

Breaking Down the SILOs

QA DBA Sys Adm

Net Adm

SAN AdmDevUXProd

Mgr

Product Team Using Monolithic DeliveryProduct Team Using Monolithic Delivery

Page 30: Microservices the Good Bad and the Ugly

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

Page 31: Microservices the Good Bad and the Ugly

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

Page 32: Microservices the Good Bad and the Ugly

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

Page 33: Microservices the Good Bad and the Ugly

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

Page 34: Microservices the Good Bad and the Ugly

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 35: Microservices the Good Bad and the Ugly

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 36: Microservices the Good Bad and the Ugly

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 37: Microservices the Good Bad and the Ugly

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

Page 38: Microservices the Good Bad and the Ugly

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 39: Microservices the Good Bad and the Ugly

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 40: Microservices the Good Bad and the Ugly

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 41: Microservices the Good Bad and the Ugly

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 42: Microservices the Good Bad and the Ugly

Configure

Configure

Developer

Developer

Developer

Release Plan

Release Plan

Release Plan

Deploy Standardized

Services

Standardized portable container deployment saves time and effort

https://hub.docker.com

Page 43: Microservices the Good Bad and the Ugly

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 portable container deployment saves time and effort

https://hub.docker.com

Page 44: Microservices the Good Bad and the Ugly

Developer Developer

Run What You Wrote

Developer Developer

Page 45: Microservices the Good Bad and the Ugly

Developer Developer

Run What You Wrote

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Developer Developer

Page 46: Microservices the Good Bad and the Ugly

Developer Developer

Run What You Wrote

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Micro service

Developer Developer

Monitoring Tools

Page 47: Microservices the Good Bad and the Ugly

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 48: Microservices the Good Bad and the Ugly

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

Page 49: Microservices the Good Bad and the Ugly

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

Page 50: Microservices the Good Bad and the Ugly

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

Page 51: Microservices the Good Bad and the Ugly

Change One Thing at a Time!

Page 52: Microservices the Good Bad and the Ugly

What Happened?Rate of change

increased

Cost and size and risk of change

reduced

Page 53: Microservices the Good Bad and the Ugly

Low Cost of Change Using Docker

Developers • Compile/Build • Seconds

Extend container • Package dependencies • Seconds

PaaS deploy Container • Docker startup • Seconds

Page 54: Microservices the Good Bad and the Ugly

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 55: Microservices the Good Bad and the Ugly

Disruptor: Continuous Delivery with

Containerized Microservices

Page 56: Microservices the Good Bad and the Ugly

Microservices

Page 57: Microservices the Good Bad and the Ugly

A Microservice Definition

Loosely coupled service oriented architecture with bounded contexts

Page 58: Microservices the Good Bad and the Ugly

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 59: Microservices the Good Bad and the Ugly

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 60: Microservices the Good Bad and the Ugly

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

Page 61: Microservices the Good Bad and the Ugly

Non-Destructive Production Updates

● “Immutable Code” Service Pattern

● Existing services are unchanged, old code remains in service

● New code deploys as a new service group

● No impact to production until traffic routing changes

● A|B Tests, Feature Flags and Version Routing control traffic

● First users in the test cell are the developer and test engineers

● A cohort of users is added looking for measurable improvement

● Finally make default for everyone, keeping old code for a while

Page 62: Microservices the Good Bad and the Ugly

Speeding Up Deployments

Datacenter Snowflakes • Deploy in months • Live for years

Page 63: Microservices the Good Bad and the Ugly

Speeding Up Deployments

Datacenter Snowflakes • Deploy in months • Live for years

Virtualized and Cloud • Deploy in minutes • Live for weeks

Page 64: Microservices the Good Bad and the Ugly

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

Page 65: Microservices the Good Bad and the Ugly

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

Page 66: Microservices the Good Bad and the Ugly

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

Page 67: Microservices the Good Bad and the Ugly

Inspiration

Page 68: Microservices the Good Bad and the Ugly

http://www.infoq.com/presentations/scale-gilt

http://www.slideshare.net/mcculloughsean/itier-breaking-up-the-monolith-philly-ete

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

http://www.infoq.com/presentations/Zipkin

https://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=p7ysHhs5hl0 Resiliency at Massive Scale https://www.youtube.com/watch?v=ZfYJHtVL1_w

Microservice Architecture https://www.youtube.com/watch?v=CriDUYtfrjs

Page 69: Microservices the Good Bad and the Ugly

Microservice Concerns

ConfigurationTooling Discovery Routing Observability

Development: Languages and Container

Operational: Orchestration and Deployment Infrastructure

Datastores

Page 70: Microservices the Good Bad and the Ugly

Microservices

Edda Archaius

Configuration

Asgard Aminator

Tooling

Eureka Prana

Discovery

Denominator Zuul, Netty Ribbon 2.0

Routing

Hystrix Pytheus SALP

Observability

Java, Groovy, Scala, Clojure, Python, Node.js with AMI and Docker Containers

Manual Orchestration with Asgard and deployment on AWS or Eucalyptus

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

Page 71: Microservices the Good Bad and the Ugly

Microservices

Edda Archaius

Configuration

Asgard Aminator

Tooling

Eureka Prana

Discovery

Denominator Zuul, Netty Ribbon 2.0

Routing

Hystrix Pytheus SALP

Observability

Java, Groovy, Scala, Clojure, Python, Node.js with AMI and Docker Containers

Manual Orchestration with Asgard and deployment on AWS or Eucalyptus

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

Focus on global distribution, high scale and availability

Page 72: Microservices the Good Bad and the Ugly
Page 73: Microservices the Good Bad and the Ugly

NetflixOSS Components• See  “Zero  to  Docker”  to  try  out  Ne1lixOSS  in  seconds…  • Security  and  access  management  setup  -­‐  Security  Monkey  • Account  Management:  Asgard  to  deploy  &  Ice  for  cost  monitoring  • Build  Tools:  Aminator  to  automate  baking  AMIs  • Service  Registry  and  Searchable  Account  History:  Eureka  &  Edda  • ConfiguraOon  Management:  Archaius  dynamic  property  system  • Data  storage:  Cassandra,  Astyanax,  Priam,  EVCache,  SURO  logging  to  KaUa/ElasOc  • Dynamic  traffic  rouOng:  Denominator,  Zuul,  Ribbon,  Karyon  • Availability:  Simian  Army  (Chaos  Monkey),  Hystrix,  Turbine,  Atlas  monitoring  • Developer  producOvity:  Blitz4J,  GCViz,  Pytheas  dashboards,  RxJava  • Big  Data:  Genie  for  Hadoop  PaaS,  LipsOck  visualizer  for  Pig,  Pigpen  for  Clojure  • Apps  to  get  started:  SpringCloud,  RSS  Reader,  ACME  Air,  FluxCapacitor

Page 74: Microservices the Good Bad and the Ugly
Page 75: Microservices the Good Bad and the Ugly

Twitter Microservices

Decider

ConfigurationTooling

Finagle Zookeeper

Discovery

Finagle Netty

Routing

Zipkin

Observability

Scala with JVM Container

Orchestration using Aurora deployment in datacenters using Mesos

Custom Cassandra-like datastore: Manhattan

Page 76: Microservices the Good Bad and the Ugly

Twitter Microservices

Decider

ConfigurationTooling

Finagle Zookeeper

Discovery

Finagle Netty

Routing

Zipkin

Observability

Scala with JVM Container

Orchestration using Aurora deployment in datacenters using Mesos

Custom Cassandra-like datastore: Manhattan

Focus on efficient datacenter deployment at scale

Page 77: Microservices the Good Bad and the Ugly
Page 78: Microservices the Good Bad and the Ugly
Page 79: Microservices the Good Bad and the Ugly

Challenges for Microservices

Page 80: Microservices the Good Bad and the Ugly

Managing Scale

Page 81: Microservices the Good Bad and the Ugly

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 82: Microservices the Good Bad and the Ugly

Flow

Page 83: Microservices the Good Bad and the Ugly

Some tools can show the request flow

across a few services

Page 84: Microservices the Good Bad and the Ugly

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

Page 85: Microservices the Good Bad and the Ugly

Failures

Page 86: Microservices the Good Bad and the Ugly

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

Page 87: Microservices the Good Bad and the Ugly

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

Page 88: Microservices the Good Bad and the Ugly

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?

Page 89: Microservices the Good Bad and the Ugly

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?

Page 90: Microservices the Good Bad and the Ugly

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.

Page 91: Microservices the Good Bad and the Ugly

Testing

Page 92: Microservices the Good Bad and the Ugly

Testing monitoring tools at scale gets expensive quickly…

Page 93: Microservices the Good Bad and the Ugly

Simulation

Page 94: Microservices the Good Bad and the Ugly

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

Page 95: Microservices the Good Bad and the Ugly

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

Page 96: Microservices the Good Bad and the Ugly

How does Spigo work?

Creates and animates microservices Single Go program on this laptop Simulates 100,000+ instances Dynamic Go channels replace tcp/ip “gotocol” messages simulate http etc. About 250,000 messages/sec Supports social network architecture LAMP or NetflixOSS architectures

Page 97: Microservices the Good Bad and the Ugly

Spigo Nanoservice Structurefunc Start(listener chan gotocol.Message) { ... for { select { case msg := <-listener: switch msg.Imposition { case gotocol.Hello: // get named by parent ... case gotocol.NameDrop: // someone new to talk to ... case gotocol.GetRequest: // upstream request handler ... case gotocol.GetResponse:// downstream response handler ... case gotocol.Goodbye: // tell parent I’m going away now gotocol.Message{gotocol.Goodbye, nil, time.Now(), name}.GoSend(parent) return } case <-eurekaTicker.C: // poll the service registry ... } } }

Page 98: Microservices the Good Bad and the Ugly

Why Build Spigo?

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

Page 99: Microservices the Good Bad and the Ugly

Conference Driven Development…

OSCON Microservices Workshop

Page 100: Microservices the Good Bad and the Ugly

What’s Next?

Page 101: Microservices the Good Bad and the Ugly

Developer Concerns Agile, Lean & Rugged

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

Page 102: Microservices the Good Bad and the Ugly

Forward Thinking

Page 103: Microservices the Good Bad and the Ugly

Forward Thinking

Page 104: Microservices the Good Bad and the Ugly

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

Page 105: Microservices the Good Bad and the Ugly

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