Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Architecting for Continuous Delivery: Microserv...

Matt Stine
October 21, 2014

Architecting for Continuous Delivery: Microservices with Pivotal CF and Spring Cloud

Matt Stine

October 21, 2014
Tweet

Other Decks in Technology

Transcript

  1. © Copyright 2014 Pivotal. All rights reserved. © Copyright 2014

    Pivotal. All rights reserved. Microservices with Pivotal CF and Spring Cloud 1 Matt Stine (@mstine) Platform Engineer Pivotal Cloud Platform Roadshow Architecting for Continuous Delivery
  2. © Copyright 2014 Pivotal. All rights reserved. What is Continuous

    Delivery? 2 $ Business Development QA Operations Customer
  3. © Copyright 2014 Pivotal. All rights reserved. 5 Warner Music:

    Software Factories Warner Software Factory Platform • New applications and major updates - Before: 6 months, team of 10 developers - After: 6 weeks, same team - Speed/Agility: 400% faster on new platform - HR Hard Savings: $1.1M per application update delivered
  4. © Copyright 2014 Pivotal. All rights reserved. 6 Iterative Development

    Design Develop Test Customer Feedback Customer Delivery Analytics
  5. © Copyright 2014 Pivotal. All rights reserved. Diversity of Clients

    8 http://money.cnn.com/2014/02/28/technology/mobile/mobile-apps-internet/ In January 2014, mobile devices accounted for 55% of Internet usage in the United States. Apps made up 47% of Internet traffic and 8% of traffic came from mobile browsers.
  6. © Copyright 2014 Pivotal. All rights reserved. 9 Infrastructure Applications

    Monoliths Microservices Physical/Virtual Pivotal CF Continuous Delivery Software Factories Feedback Rapid Iteration Horizontal Scale Diversity of Clients
  7. © Copyright 2014 Pivotal. All rights reserved. 10 New Architectural

    Constraints • Pivotal CF optimizes for 12 Factor Linux applications
  8. © Copyright 2014 Pivotal. All rights reserved. 11 Twelve Factors

    • One Codebase/Many Deploys • Explicit Isolated Dependencies • Config via Environment • Attached Backing Services • Separate Build/Release/Run • Stateless Processes • Export Services via Port Bindings • Scale Out via Processes • Disposable Instances • Dev/Prod Parity • Logs == Event Streams • Admin Tasks == Processes http://12factor.net
  9. © Copyright 2014 Pivotal. All rights reserved. 12 New Architectural

    Constraints • Pivotal CF optimizes for 12 Factor Linux applications • Microservices: a radical departure from traditional monolithic applications • In both cases, the enterprise is 
 forced to “think different.”
  10. © Copyright 2014 Pivotal. All rights reserved. How XP Practices

    Support Each Other 13 http://www.kusmin.eu/wiki/index.php/How_XP_Practices_Support_Each_Other
  11. © Copyright 2014 Pivotal. All rights reserved. A Mutualistic Symbiotic

    Relationship… 14 Microservices http://en.wikipedia.org/wiki/Symbiosis#Mutualism Pivotal CF
  12. © Copyright 2014 Pivotal. All rights reserved. © Copyright 2014

    Pivotal. All rights reserved. Microservices Overview 15
  13. © Copyright 2014 Pivotal. All rights reserved. 16 Simple vs.

    Easy • Simple • sim- plex • one fold/braid • vs complex • Easy • ease < aise < adjacens • lie near • vs hard
  14. © Copyright 2014 Pivotal. All rights reserved. Monolithic Architecture 17

    Relational Database Data Access Service HTML JavaScript MVC Service Monolithic Application Browser
  15. © Copyright 2014 Pivotal. All rights reserved. 18 Monolithic Architectures

    • Complex / Easy • Modularity Dependent Upon Language / Frameworks • Change Cycles Tightly Coupled / Obstacle to Frequent Deploys • Inefficient Scaling • Can Be Intimidating to New Developers • Obstacle to Scaling Development • Requires Long-Term Commitment to Technical Stack
  16. © Copyright 2014 Pivotal. All rights reserved. Microservice Architecture 19

    … HTTP HTTP HTTP HTTP HTTP HTTP AMQP AMQP Relational DB Key/Value Store Graph DB
  17. © Copyright 2014 Pivotal. All rights reserved. 20 Microservice Architectures

    • Simple / Hard • Modularity Based on Component Services • Change Cycles Decoupled / Enable Frequent Deploys • Efficient Scaling • Individual Components Less Intimidating to New Developers • Enables Scaling of Development • Eliminates Long-Term Commitment to Technical Stack
  18. © Copyright 2014 Pivotal. All rights reserved. Conway’s Law 21

    Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure. Melvyn Conway, 1967 http://martinfowler.com/articles/microservices.html#OrganizedAroundBusinessCapabilities
  19. © Copyright 2014 Pivotal. All rights reserved. Organize Around Business

    Capabilities 22 Data Access Service HTML JavaScript MVC Service UI Specialists Middleware Specialists DBAs Business Capability Business Capability Business Capability Siloed Functional Teams http://martinfowler.com/articles/microservices.html#OrganizedAroundBusinessCapabilities Siloed Application Architectures Cross- functional Teams Microservice Architectures
  20. © Copyright 2014 Pivotal. All rights reserved. 23 Partitioning Strategies

    • By Noun (e.g. product info service) • By Verb (e.g. shipping service) • Single Responsibility Principle
 (http://programmer.97things.oreilly.com/wiki/index.php/ The_Single_Responsibility_Principle) • Bounded Context (http://martinfowler.com/bliki/ BoundedContext.html)
  21. © Copyright 2014 Pivotal. All rights reserved. Bounded Contexts 24

    Movie Movie Actor Genre Media Type Media Type Kiosk Location Media Product Catalog Inventory
  22. © Copyright 2014 Pivotal. All rights reserved. 26 UNIX Pipes

    and Filters cut -d" " -f1 < access.log | sort | uniq -c | sort -rn | less
  23. © Copyright 2014 Pivotal. All rights reserved. Choreography over Orchestration

    27 https://www.flickr.com/photos/gabrielsaldana/5896491978 https://www.flickr.com/photos/chrisbrenschmidt/2223763842 http://martinfowler.com/articles/microservices.html#SmartEndpointsAndDumbPipes
  24. © Copyright 2014 Pivotal. All rights reserved. © Copyright 2014

    Pivotal. All rights reserved. 28 http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html
  25. © Copyright 2014 Pivotal. All rights reserved. 29 Paying for

    your lunch… • Significant Operations Overhead • Substantial DevOps Skills Required • Implicit Interfaces • Duplication of Effort • Distributed System Complexity • Asynchronicity is Difficult! • Testability Challenges
  26. © Copyright 2014 Pivotal. All rights reserved. You must be

    this tall to use Microservices… 30 http://martinfowler.com/bliki/MicroservicePrerequisites.html https://www.flickr.com/photos/gusset/3723961589 • RAPID PROVISIONING • BASIC MONITORING • RAPID APPLICATION DEPLOYMENT • DEVOPS CULTURE
  27. © Copyright 2014 Pivotal. All rights reserved. 32 Platform Features

    • Environment Provisioning • On-Demand/Automatic Scaling • Failover/Resilience • Routing/Load Balancing • Data Service Operations • Monitoring • Distributed/Versioned Config • Service Registration/Discovery • Routing/Load Balancing • Service Integration • Fault Tolerance • Asynchronous Messaging
  28. © Copyright 2014 Pivotal. All rights reserved. 34 • Eureka

    • Hystrix + Turbine • Ribbon • Feign • Zuul • Archaius + http://netflix.github.io
  29. © Copyright 2014 Pivotal. All rights reserved. Supporting Rapid Change

    37 Microservices is the first architectural style developed: POST POST & Continuous Delivery DevOps ∆
  30. © Copyright 2014 Pivotal. All rights reserved. 38 Architecture is

    abstract until it is operationalized. Neal Ford
  31. © Copyright 2014 Pivotal. All rights reserved. 39 Architectures that

    aren’t operationalized exist only on whiteboards. Matt Stine