Slide 1

Slide 1 text

© 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

Slide 2

Slide 2 text

© Copyright 2014 Pivotal. All rights reserved. What is Continuous Delivery? 2 $ Business Development QA Operations Customer

Slide 3

Slide 3 text

© Copyright 2014 Pivotal. All rights reserved. What is Continuous Delivery? 3 $

Slide 4

Slide 4 text

© Copyright 2014 Pivotal. All rights reserved. 4 Continuous Delivery - How?

Slide 5

Slide 5 text

© 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

Slide 6

Slide 6 text

© Copyright 2014 Pivotal. All rights reserved. 6 Iterative Development Design Develop Test Customer Feedback Customer Delivery Analytics

Slide 7

Slide 7 text

© Copyright 2014 Pivotal. All rights reserved. Horizontal Scale 7 Slow/Expensive Fast/Cheap

Slide 8

Slide 8 text

© 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.

Slide 9

Slide 9 text

© 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

Slide 10

Slide 10 text

© Copyright 2014 Pivotal. All rights reserved. 10 New Architectural Constraints • Pivotal CF optimizes for 12 Factor Linux applications

Slide 11

Slide 11 text

© 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

Slide 12

Slide 12 text

© 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.”

Slide 13

Slide 13 text

© 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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

© Copyright 2014 Pivotal. All rights reserved. © Copyright 2014 Pivotal. All rights reserved. Microservices Overview 15

Slide 16

Slide 16 text

© 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

Slide 17

Slide 17 text

© Copyright 2014 Pivotal. All rights reserved. Monolithic Architecture 17 Relational Database Data Access Service HTML JavaScript MVC Service Monolithic Application Browser

Slide 18

Slide 18 text

© 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

Slide 19

Slide 19 text

© Copyright 2014 Pivotal. All rights reserved. Microservice Architecture 19 … HTTP HTTP HTTP HTTP HTTP HTTP AMQP AMQP Relational DB Key/Value Store Graph DB

Slide 20

Slide 20 text

© 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

Slide 21

Slide 21 text

© 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

Slide 22

Slide 22 text

© 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

Slide 23

Slide 23 text

© 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)

Slide 24

Slide 24 text

© Copyright 2014 Pivotal. All rights reserved. Bounded Contexts 24 Movie Movie Actor Genre Media Type Media Type Kiosk Location Media Product Catalog Inventory

Slide 25

Slide 25 text

© Copyright 2014 Pivotal. All rights reserved. Polyglot Persistence 25 REST X You shall not pass…

Slide 26

Slide 26 text

© Copyright 2014 Pivotal. All rights reserved. 26 UNIX Pipes and Filters cut -d" " -f1 < access.log | sort | uniq -c | sort -rn | less

Slide 27

Slide 27 text

© 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

Slide 28

Slide 28 text

© 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

Slide 29

Slide 29 text

© 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

Slide 30

Slide 30 text

© 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

Slide 31

Slide 31 text

© Copyright 2014 Pivotal. All rights reserved. It’s gonna take a platform… 31 Pivotal CF Spring Cloud

Slide 32

Slide 32 text

© 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

Slide 33

Slide 33 text

© Copyright 2014 Pivotal. All rights reserved. 33 http://projects.spring.io/spring-cloud

Slide 34

Slide 34 text

© Copyright 2014 Pivotal. All rights reserved. 34 • Eureka • Hystrix + Turbine • Ribbon • Feign • Zuul • Archaius + http://netflix.github.io

Slide 35

Slide 35 text

© Copyright 2014 Pivotal. All rights reserved. Pivotal CF + Spring Cloud + Netflix OSS! 35

Slide 36

Slide 36 text

© Copyright 2014 Pivotal. All rights reserved. 36 DEMO

Slide 37

Slide 37 text

© Copyright 2014 Pivotal. All rights reserved. Supporting Rapid Change 37 Microservices is the first architectural style developed: POST POST & Continuous Delivery DevOps ∆

Slide 38

Slide 38 text

© Copyright 2014 Pivotal. All rights reserved. 38 Architecture is abstract until it is operationalized. Neal Ford

Slide 39

Slide 39 text

© Copyright 2014 Pivotal. All rights reserved. 39 Architectures that aren’t operationalized exist only on whiteboards. Matt Stine

Slide 40

Slide 40 text

© Copyright 2014 Pivotal. All rights reserved. OPERATIONALIZED ARCHITECTURE 40 Microservices Pivotal CF Spring Cloud

Slide 41

Slide 41 text

A NEW PLATFORM FOR A NEW ERA