Share
Embed
Architecting for Continuous Delivery: Microservices with Pivotal CF and Spring Cloud
Matt Stine
October 21, 2014
Transcript
41 slides
-
© 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 -
© Copyright 2014 Pivotal. All rights reserved. What is Continuous
Delivery? 2 $ Business Development QA Operations Customer -
© 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 -
© Copyright 2014 Pivotal. All rights reserved. 6 Iterative Development
Design Develop Test Customer Feedback Customer Delivery Analytics -
© Copyright 2014 Pivotal. All rights reserved. Horizontal Scale 7
Slow/Expensive Fast/Cheap -
© 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. -
© 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 -
© Copyright 2014 Pivotal. All rights reserved. 10 New Architectural
Constraints • Pivotal CF optimizes for 12 Factor Linux applications -
© 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 -
© 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.” -
© 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 -
© Copyright 2014 Pivotal. All rights reserved. A Mutualistic Symbiotic
Relationship… 14 Microservices http://en.wikipedia.org/wiki/Symbiosis#Mutualism Pivotal CF -
© Copyright 2014 Pivotal. All rights reserved. © Copyright 2014
Pivotal. All rights reserved. Microservices Overview 15 -
© 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 -
© Copyright 2014 Pivotal. All rights reserved. Monolithic Architecture 17
Relational Database Data Access Service HTML JavaScript MVC Service Monolithic Application Browser -
© 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 -
© Copyright 2014 Pivotal. All rights reserved. Microservice Architecture 19
… HTTP HTTP HTTP HTTP HTTP HTTP AMQP AMQP Relational DB Key/Value Store Graph DB -
© 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 -
© 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 -
© 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 -
© 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) -
© Copyright 2014 Pivotal. All rights reserved. Bounded Contexts 24
Movie Movie Actor Genre Media Type Media Type Kiosk Location Media Product Catalog Inventory -
© Copyright 2014 Pivotal. All rights reserved. Polyglot Persistence 25
REST X You shall not pass… -
© Copyright 2014 Pivotal. All rights reserved. 26 UNIX Pipes
and Filters cut -d" " -f1 < access.log | sort | uniq -c | sort -rn | less -
© 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 -
© 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 -
© 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 -
© 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 -
© Copyright 2014 Pivotal. All rights reserved. It’s gonna take
a platform… 31 Pivotal CF Spring Cloud -
© 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 -
© Copyright 2014 Pivotal. All rights reserved. 34 • Eureka
• Hystrix + Turbine • Ribbon • Feign • Zuul • Archaius + http://netflix.github.io -
© Copyright 2014 Pivotal. All rights reserved. Pivotal CF +
Spring Cloud + Netflix OSS! 35 -
© Copyright 2014 Pivotal. All rights reserved. Supporting Rapid Change
37 Microservices is the first architectural style developed: POST POST & Continuous Delivery DevOps ∆ -
© Copyright 2014 Pivotal. All rights reserved. 38 Architecture is
abstract until it is operationalized. Neal Ford -
© Copyright 2014 Pivotal. All rights reserved. 39 Architectures that
aren’t operationalized exist only on whiteboards. Matt Stine -
© Copyright 2014 Pivotal. All rights reserved. OPERATIONALIZED ARCHITECTURE 40
Microservices Pivotal CF Spring Cloud