State of the Art in Microservices Adrian Cockcroft @adrianco - - PowerPoint PPT Presentation

state of the art in microservices
SMART_READER_LITE
LIVE PREVIEW

State of the Art in Microservices Adrian Cockcroft @adrianco - - PowerPoint PPT Presentation

State of the Art in Microservices Adrian Cockcroft @adrianco Technology Fellow - Battery Ventures Microxchg Berlin - February 2015 Speeding up Development Microservice Architectures Whats Next Why am I here? %*&! By Simon Wardley


slide-1
SLIDE 1

State of the Art in Microservices

Adrian Cockcroft @adrianco Technology Fellow - Battery Ventures Microxchg Berlin - February 2015

slide-2
SLIDE 2

Speeding up Development Microservice Architectures What’s Next

slide-3
SLIDE 3

Why am I here?

%*&!”

By Simon Wardley http://enterpriseitadoption.com/

slide-4
SLIDE 4

Why am I here?

%*&!”

By Simon Wardley http://enterpriseitadoption.com/

2009

slide-5
SLIDE 5

Why am I here?

%*&!”

By Simon Wardley http://enterpriseitadoption.com/

2009

slide-6
SLIDE 6

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/

2014 2009

slide-7
SLIDE 7

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/

2014 2009 Example: Docker wasn’t on anyone’s roadmap for 2014. It’s

  • n everyone’s roadmap

for 2015.

slide-8
SLIDE 8

2014 was the year that Enterprises finally embraced cloud and DevOps.

slide-9
SLIDE 9

2014 was the year that Enterprises finally embraced cloud and DevOps.

slide-10
SLIDE 10

2014 was the year that Enterprises finally embraced cloud and DevOps.

slide-11
SLIDE 11

2014 was the year that Enterprises finally embraced cloud and DevOps.

slide-12
SLIDE 12

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 People Tinkering with Technologies Maintain Relationship with Cloud Vendors

slide-13
SLIDE 13

Product Development Processes

slide-14
SLIDE 14

Assumption: Process prevents problems

slide-15
SLIDE 15

Organizations build up slow complex “Scar tissue” processes

slide-16
SLIDE 16

Observe Orient Decide Act

Continuous Delivery

slide-17
SLIDE 17

Observe Orient Decide Act Land grab

  • pportunity

Competitive Move Customer Pain Point Measure Customers

Continuous Delivery

slide-18
SLIDE 18

Observe Orient Decide Act Land grab

  • pportunity

Competitive Move Customer Pain Point

INNOVATION

Measure Customers

Continuous Delivery

slide-19
SLIDE 19

Observe Orient Decide Act Land grab

  • pportunity

Competitive Move Customer Pain Point Analysis Model Hypotheses

INNOVATION

Measure Customers

Continuous Delivery

slide-20
SLIDE 20

Observe Orient Decide Act Land grab

  • pportunity

Competitive Move Customer Pain Point Analysis Model Hypotheses

BIG DATA INNOVATION

Measure Customers

Continuous Delivery

slide-21
SLIDE 21

Observe Orient Decide Act Land grab

  • pportunity

Competitive Move Customer Pain Point Analysis JFDI Plan Response Share Plans Model Hypotheses

BIG DATA INNOVATION

Measure Customers

Continuous Delivery

slide-22
SLIDE 22

Observe Orient Decide Act Land grab

  • pportunity

Competitive Move Customer Pain Point Analysis JFDI Plan Response Share Plans Model Hypotheses

BIG DATA INNOVATION CULTURE

Measure Customers

Continuous Delivery

slide-23
SLIDE 23

Observe Orient Decide Act Land grab

  • pportunity

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

slide-24
SLIDE 24

Observe Orient Decide Act Land grab

  • pportunity

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

slide-25
SLIDE 25

Observe Orient Decide Act Land grab

  • pportunity

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

slide-26
SLIDE 26

Observe Orient Decide Act Land grab

  • pportunity

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

slide-27
SLIDE 27

Breaking Down the SILOs

slide-28
SLIDE 28

Breaking Down the SILOs

QA DBA Sys Adm Net Adm SAN Adm Dev UX Prod Mgr

slide-29
SLIDE 29

Breaking Down the SILOs

QA DBA Sys Adm Net Adm SAN Adm Dev UX Prod Mgr

Product Team Using Monolithic Delivery Product Team Using Monolithic Delivery

slide-30
SLIDE 30

Breaking Down the SILOs

QA DBA Sys Adm Net Adm SAN Adm Dev UX Prod Mgr

Product Team Using Microservices Product Team Using Monolithic Delivery Product Team Using Microservices Product Team Using Microservices Product Team Using Monolithic Delivery

slide-31
SLIDE 31

Breaking Down the SILOs

QA DBA Sys Adm Net Adm SAN Adm Dev UX Prod Mgr

Product Team Using Microservices Product Team Using Monolithic Delivery Platform Team Product Team Using Microservices Product Team Using Microservices Product Team Using Monolithic Delivery

slide-32
SLIDE 32

Breaking Down the SILOs

QA DBA Sys Adm Net Adm SAN Adm Dev UX Prod Mgr

Product Team Using Microservices Product Team Using Monolithic Delivery Platform Team

A P I

Product Team Using Microservices Product Team Using Microservices Product Team Using Monolithic Delivery

slide-33
SLIDE 33

Breaking Down the SILOs

QA DBA Sys Adm Net Adm SAN Adm Dev UX Prod Mgr

Product Team Using Microservices Product Team Using Monolithic Delivery Platform Team

DevOps is a Re-Org!

A P I

Product Team Using Microservices Product Team Using Microservices Product Team Using Monolithic Delivery

slide-34
SLIDE 34

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

  • f developers and a single

language like php, java or ruby

slide-35
SLIDE 35

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

  • f developers and a single

language like php, java or ruby

slide-36
SLIDE 36

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

  • f developers and a single

language like php, java or ruby

slide-37
SLIDE 37

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

slide-38
SLIDE 38

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

slide-39
SLIDE 39

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

slide-40
SLIDE 40

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

slide-41
SLIDE 41

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

slide-42
SLIDE 42

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

slide-43
SLIDE 43

Developer Developer

Run What You Wrote

Developer Developer

slide-44
SLIDE 44

Developer Developer

Run What You Wrote

Micro service Micro service Micro service Micro service Micro service Micro service Micro service Developer Developer

slide-45
SLIDE 45

Developer Developer

Run What You Wrote

Micro service Micro service Micro service Micro service Micro service Micro service Micro service Developer Developer Monitoring Tools

slide-46
SLIDE 46

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

slide-47
SLIDE 47

Developer Developer 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

slide-48
SLIDE 48

Developer Developer 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

slide-49
SLIDE 49

Developer Developer 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

slide-50
SLIDE 50

What Happened?

Rate of change increased Cost and size and risk of change reduced

slide-51
SLIDE 51

Developing at the Speed of Docker

Developers

  • Compile/Build
  • Seconds

Extend container

  • Package dependencies
  • Seconds

PaaS deploy Container

  • Docker startup
  • Seconds
slide-52
SLIDE 52

Developing at the Speed of Docker

Speed is addictive, hard to go back to taking much longer to get things done

Developers

  • Compile/Build
  • Seconds

Extend container

  • Package dependencies
  • Seconds

PaaS deploy Container

  • Docker startup
  • Seconds
slide-53
SLIDE 53

Disruptor: Continuous Delivery with Containerized Microservices

slide-54
SLIDE 54

"This is the IT swamp draining manual for anyone who is neck deep in alligators.”

1984 2014

slide-55
SLIDE 55

Microservices

slide-56
SLIDE 56

A Microservice Definition

  • Loosely coupled service oriented

architecture with bounded contexts

slide-57
SLIDE 57

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

slide-58
SLIDE 58

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.

slide-59
SLIDE 59

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
slide-60
SLIDE 60

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
slide-61
SLIDE 61

Speeding Up The Platform

Datacenter Snowflakes

  • Deploy in months
  • Live for years
slide-62
SLIDE 62

Speeding Up The Platform

Datacenter Snowflakes

  • Deploy in months
  • Live for years

Virtualized and Cloud

  • Deploy in minutes
  • Live for weeks
slide-63
SLIDE 63

Speeding Up The Platform

Datacenter Snowflakes

  • Deploy in months
  • Live for years

Virtualized and Cloud

  • Deploy in minutes
  • Live for weeks

Docker Containers

  • Deploy in seconds
  • Live for minutes/hours
slide-64
SLIDE 64

Speeding Up The Platform

Datacenter Snowflakes

  • Deploy in months
  • Live for years

Virtualized and Cloud

  • Deploy in minutes
  • Live for weeks

Docker Containers

  • Deploy in seconds
  • Live for minutes/hours

AWS Lambda

  • Deploy in milliseconds
  • Live for seconds
slide-65
SLIDE 65

Speeding Up The Platform

Speed enables and encourages new microservice architectures

Datacenter Snowflakes

  • Deploy in months
  • Live for years

Virtualized and Cloud

  • Deploy in minutes
  • Live for weeks

Docker Containers

  • Deploy in seconds
  • Live for minutes/hours

AWS Lambda

  • Deploy in milliseconds
  • Live for seconds
slide-66
SLIDE 66

With AWS Lambda compute resources are charged by the 100ms, not the hour

First 1M node.js executions/month are free

slide-67
SLIDE 67

Inspiration

slide-68
SLIDE 68

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

slide-69
SLIDE 69

Microservice Concerns

Configuration Tooling Discovery Routing Observability Development: Languages and Container Operational: Orchestration and Deployment Infrastructure Datastores

slide-70
SLIDE 70

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

slide-71
SLIDE 71

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

slide-72
SLIDE 72
slide-73
SLIDE 73
slide-74
SLIDE 74

Twitter Microservices

Decider

  • Configuration

Tooling 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

slide-75
SLIDE 75

Twitter Microservices

Decider

  • Configuration

Tooling 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

slide-76
SLIDE 76
slide-77
SLIDE 77
slide-78
SLIDE 78

Gilt Microservices

Decider

  • Configuration

Ion Cannon SBT Rake

  • Tooling

Finagle Zookeeper

  • Discovery

Akka Finagle Netty

  • Routing

Zipkin

  • Observability

Scala and Ruby with Docker Containers Deployment on AWS Datastores per Microservice using MongoDB, Postgres, Voldemort

slide-79
SLIDE 79

Gilt Microservices

Decider

  • Configuration

Ion Cannon SBT Rake

  • Tooling

Finagle Zookeeper

  • Discovery

Akka Finagle Netty

  • Routing

Zipkin

  • Observability

Scala and Ruby with Docker Containers Deployment on AWS Datastores per Microservice using MongoDB, Postgres, Voldemort

Focus on fast development with Scala and Docker

slide-80
SLIDE 80
slide-81
SLIDE 81

Hailo Microservices

Configuration Hubot Janky Jenkins

  • Tooling

go-platform

  • Discovery

go-platform RabbitMQ

  • Routing

Request trace

  • Observability

Go using Docker Deployment on AWS Datastore based on Cassandra

slide-82
SLIDE 82

Hailo Microservices

Configuration Hubot Janky Jenkins

  • Tooling

go-platform

  • Discovery

go-platform RabbitMQ

  • Routing

Request trace

  • Observability

Go using Docker Deployment on AWS Datastore based on Cassandra

Focus on fast development at scale using Go

slide-83
SLIDE 83
slide-84
SLIDE 84

Node.js Microservices

Several different approaches

  • Mostly small simple microservices
  • Focus on easy interface with

presentation code in javascript

  • AWS Lambda - preview only

http://senecajs.org/ http://aws.amazon.com/lambda/

slide-85
SLIDE 85

Adrian’s Tinkering Projects

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

slide-86
SLIDE 86

What is Spigo?

Creates and animates microservices Single Go program on this laptop Generates 100,000+ instances About 250,000 messages/sec Uses Go channels rather than http Supports social network architecture Supports NetflixOSS architecture Simple code patterns to extend

slide-87
SLIDE 87

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 Simulate microservice, zone, region failures D3 websocket dynamic browser interface Timescale: Monitorama Conference June 2015

slide-88
SLIDE 88

Spigo Nanoservice Structure

func Start(listener chan gotocol.Message) { ... for { select { case msg := <-listener: switch msg.Imposition { case gotocol.Hello: ... case gotocol.NameDrop: ... case gotocol.Chat: ... case gotocol.GetResponse: ... case gotocol.Goodbye: gotocol.Message{gotocol.Goodbye, nil, time.Now(), name}.GoSend(netflixoss) return } case <-chatTicker.C: ... } } }

slide-89
SLIDE 89

What’s Next?

slide-90
SLIDE 90

Web Scale Characteristics

  • Brand new Microservices are deployed infrequently
  • New versions deployed automatically/frequently
  • No real need for general purpose orchestration
  • Architectures use hundreds of microservices
  • Each deployment is heavily customized
slide-91
SLIDE 91

Orchestration for Applications

  • Standard portable microservice based applications
  • New versions deployed automatically/frequently
  • Orchestration automated and standardized
  • Architectures likely based on tens of microservices
  • Opportunity: Docker Hub as the enterprise app store
slide-92
SLIDE 92

Next Generation Applications

?

  • Configuration

Docker? PaaS?

  • Tooling

Eureka? Consul?

  • Discovery

Ribbon? Finagle?

  • Routing

Zipkin? Metrics? Hystrix?

  • Observability

Development: Components assembled from Docker Hub as a composable “app store” Operational: Many orchestration choices across public and private clouds Datastores: Distributed Ephemeral, Orchestrated or DBaaS

slide-93
SLIDE 93

Next Generation Applications

?

  • Configuration

Docker? PaaS?

  • Tooling

Eureka? Consul?

  • Discovery

Ribbon? Finagle?

  • Routing

Zipkin? Metrics? Hystrix?

  • Observability

Development: Components assembled from Docker Hub as a composable “app store” Operational: Many orchestration choices across public and private clouds Datastores: Distributed Ephemeral, Orchestrated or DBaaS

Fill in the gaps, rapidly evolving ecosystem choices

slide-94
SLIDE 94

Forward Thinking

slide-95
SLIDE 95

Forward Thinking

slide-96
SLIDE 96

Forward Thinking

slide-97
SLIDE 97

Forward Thinking

http://eugenedvorkin.com/seven-micro-services-architecture-advantages/
slide-98
SLIDE 98

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 7

th, 2014

  • GOTO Chicago Opening Keynote May 20

th, 2014

  • Qcon New York – Speed and Scale - June 11

th, 2014

  • Structure - Cloud Trends - San Francisco - June 19th, 2014
  • GOTO Copenhagen/Aarhus – Fast Delivery - Denmark – Sept 25

th, 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 - Boston March 16th 2015