Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Microxchg Microservices

7 381 vues

Publié le

Slides from Microxchg conference in Berlin, Feb 2015

Publié dans : Technologie
  • Soyez le premier à commenter

Microxchg Microservices

  1. 1. State of the Art in MicroservicesAdrian Cockcroft @adrianco Technology Fellow - Battery Ventures Microxchg Berlin - February 2015
  2. 2. Speeding up Development Microservice Architectures What’s Next
  3. 3. Why am I here? %*&!” By Simon Wardley http://enterpriseitadoption.com/
  4. 4. Why am I here? %*&!” By Simon Wardley http://enterpriseitadoption.com/ 2009
  5. 5. Why am I here? %*&!” By Simon Wardley http://enterpriseitadoption.com/ 2009
  6. 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
  7. 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 on everyone’s roadmap for 2015.
  8. 8. 2014 was the year that Enterprises finally embraced cloud and DevOps.
  9. 9. 2014 was the year that Enterprises finally embraced cloud and DevOps.
  10. 10. 2014 was the year that Enterprises finally embraced cloud and DevOps.
  11. 11. 2014 was the year that Enterprises finally embraced cloud and DevOps.
  12. 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 PeopleTinkering with Technologies Maintain Relationship with Cloud Vendors
  13. 13. Product Development Processes
  14. 14. Assumption: Process prevents problems
  15. 15. Organizations build up slow complex “Scar tissue” processes
  16. 16. Observe Orient Decide Act Continuous Delivery
  17. 17. Observe Orient Decide Act Land grab opportunity Competitive Move Customer Pain Point Measure Customers Continuous Delivery
  18. 18. Observe Orient Decide Act Land grab opportunity Competitive Move Customer Pain Point INNOVATION Measure Customers Continuous Delivery
  19. 19. Observe Orient Decide Act Land grab opportunity Competitive Move Customer Pain Point Analysis Model Hypotheses INNOVATION Measure Customers Continuous Delivery
  20. 20. Observe Orient Decide Act Land grab opportunity Competitive Move Customer Pain Point Analysis Model Hypotheses BIG DATA INNOVATION Measure Customers Continuous Delivery
  21. 21. 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
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. 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
  26. 26. 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
  27. 27. Breaking Down the SILOs
  28. 28. Breaking Down the SILOs QA DBA Sys Adm Net Adm SAN Adm DevUX Prod Mgr
  29. 29. Breaking Down the SILOs QA DBA Sys Adm Net Adm SAN Adm DevUX Prod Mgr Product Team Using Monolithic Delivery Product Team Using Monolithic Delivery
  30. 30. Breaking Down the SILOs QA DBA Sys Adm Net Adm SAN Adm DevUX Prod Mgr Product Team Using Microservices Product Team Using Monolithic Delivery Product Team Using Microservices Product Team Using Microservices Product Team Using Monolithic Delivery
  31. 31. Breaking Down the SILOs QA DBA Sys Adm Net Adm SAN Adm DevUX Prod Mgr Product Team Using Microservices Product Team Using Monolithic Delivery Platform TeamProduct Team Using Microservices Product Team Using Microservices Product Team Using Monolithic Delivery
  32. 32. Breaking Down the SILOs QA DBA Sys Adm Net Adm SAN Adm DevUX 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
  33. 33. Breaking Down the SILOs QA DBA Sys Adm Net Adm SAN Adm DevUX 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
  34. 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 of developers and a single language like php, java or ruby
  35. 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 of developers and a single language like php, java or ruby
  36. 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 of developers and a single language like php, java or ruby
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 43. Developer Developer Run What You Wrote Developer Developer
  44. 44. Developer Developer Run What You Wrote Micro service Micro service Micro service Micro service Micro service Micro service Micro service Developer Developer
  45. 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
  46. 46. DeveloperDeveloper Developer Run What You Wrote Micro service Micro service Micro service Micro service Micro service Micro service Micro service Developer Developer Monitoring Tools
  47. 47. 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
  48. 48. 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
  49. 49. 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
  50. 50. What Happened? Rate of change increased Cost and size and risk of change reduced
  51. 51. Developing at the Speed of Docker Developers • Compile/Build • Seconds Extend container • Package dependencies • Seconds PaaS deploy Container • Docker startup • Seconds
  52. 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
  53. 53. Disruptor: Continuous Delivery with Containerized Microservices
  54. 54. "This is the IT swamp draining manual for anyone who is neck deep in alligators.” 1984 2014
  55. 55. Microservices
  56. 56. A Microservice Definition ! Loosely coupled service oriented architecture with bounded contexts
  57. 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
  58. 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.
  59. 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
  60. 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
  61. 61. Speeding Up The Platform Datacenter Snowflakes • Deploy in months • Live for years
  62. 62. Speeding Up The Platform Datacenter Snowflakes • Deploy in months • Live for years Virtualized and Cloud • Deploy in minutes • Live for weeks
  63. 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
  64. 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
  65. 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
  66. 66. With AWS Lambda compute resources are charged by the 100ms, not the hour First 1M node.js executions/month are free
  67. 67. Inspiration
  68. 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
  69. 69. Microservice Concerns ConfigurationTooling Discovery Routing Observability Development: Languages and Container Operational: Orchestration and Deployment Infrastructure Datastores
  70. 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
  71. 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
  72. 72. 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
  73. 73. 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
  74. 74. 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
  75. 75. 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
  76. 76. 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
  77. 77. 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
  78. 78. 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/
  79. 79. 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
  80. 80. 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
  81. 81. 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
  82. 82. 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: ... } } }
  83. 83. What’s Next?
  84. 84. 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
  85. 85. 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
  86. 86. 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
  87. 87. 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
  88. 88. Forward Thinking
  89. 89. Forward Thinking
  90. 90. Forward Thinking
  91. 91. Forward Thinking http://eugenedvorkin.com/seven-micro-services-architecture-advantages/
  92. 92. 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

×