© Copyright 2014 Pivotal. All rights reserved.© Copyright 2014 Pivotal. All rights reserved.
Cloud Foundry and Microservic...
© Copyright 2014 Pivotal. All rights reserved. 2
“Software Keeps Eating the World”
© Copyright 2014 Pivotal. All rights reserved. 3
Software Keeps Changing Industries
$3.5B valuation
Financial Services
$3....
© Copyright 2014 Pivotal. All rights reserved. 4
Warner Music: Software Factories
Warner Software Factory Platform
• New a...
© Copyright 2014 Pivotal. All rights reserved. 5
Iterative Development
Design
Develop
Test
Customer
Feedback
Customer
Deli...
© Copyright 2014 Pivotal. All rights reserved.
Horizontal Scale
6
Slow/Expensive Fast/Cheap
© Copyright 2014 Pivotal. All rights reserved.
Diversity of Clients
7
http://money.cnn.com/2014/02/28/technology/mobile/mo...
© Copyright 2014 Pivotal. All rights reserved. 8
Continuous Delivery
© Copyright 2014 Pivotal. All rights reserved. 9
Software Factories
Feedback Rapid Iteration
Horizontal Scale
Diversity of...
© Copyright 2014 Pivotal. All rights reserved. 10
New Architectural Constraints
• CF optimizes for 12 Factor Linux applica...
© Copyright 2014 Pivotal. All rights reserved.
How XP Practices Support Each Other
11
http://www.kusmin.eu/wiki/index.php/...
© Copyright 2014 Pivotal. All rights reserved.
A Mutualistic Symbiotic Relationship…
12
Cloud Foundry
Microservices
http:/...
© Copyright 2014 Pivotal. All rights reserved.© Copyright 2014 Pivotal. All rights reserved.
Microservices
Overview
13
© Copyright 2014 Pivotal. All rights reserved. 14
Simple vs. Easy
• Simple
• sim- plex
• one fold/braid
• vs complex
• Eas...
© Copyright 2014 Pivotal. All rights reserved.
Monolithic Architecture
15
Relational Database
Data Access
Service
HTML Jav...
© Copyright 2014 Pivotal. All rights reserved. 16
Monolithic Architectures
• Complex / Easy
• Modularity Dependent Upon La...
© Copyright 2014 Pivotal. All rights reserved.
Microservice Architecture
17
…
HTTP
HTTP
HTTP
HTTP
HTTP
HTTP
AMQP
AMQP
Rela...
© Copyright 2014 Pivotal. All rights reserved. 18
Microservice Architectures
• Simple / Hard
• Modularity Based on Compone...
© Copyright 2014 Pivotal. All rights reserved.
Conway’s Law
19
Any organization that designs a system (defined broadly) wi...
© Copyright 2014 Pivotal. All rights reserved.
Organize Around Business Capabilities
20
Data Access
Service
HTML JavaScrip...
© Copyright 2014 Pivotal. All rights reserved. 21
Partitioning Strategies
• By Noun (e.g. product info service)
• By Verb ...
© Copyright 2014 Pivotal. All rights reserved. 22
UNIX Pipes and Filters
cut -d" " -f1 < access.log | sort | uniq -c | sor...
© Copyright 2014 Pivotal. All rights reserved.
Choreography over Orchestration
23
https://www.flickr.com/photos/gabrielsal...
© Copyright 2014 Pivotal. All rights reserved.© Copyright 2014 Pivotal. All rights reserved. 24
Overview
http://12factor.n...
© Copyright 2014 Pivotal. All rights reserved. 25
Twelve Factor + Cloud Foundry
• One codebase tracked in revision control...
© Copyright 2014 Pivotal. All rights reserved. 26
Twelve Factor + Cloud Foundry
• Store config in the environment
• Nicely...
© Copyright 2014 Pivotal. All rights reserved. 27
Twelve Factor + Cloud Foundry
• Execute the app as one or more stateless...
© Copyright 2014 Pivotal. All rights reserved. 28
Twelve Factor + Cloud Foundry
• Maximize robustness with fast startup an...
© Copyright 2014 Pivotal. All rights reserved. 29
Twelve Factor + Cloud Foundry
• Treat logs as event streams
• CF Loggreg...
© Copyright 2014 Pivotal. All rights reserved. 30
Twelve Factor + Microservices
• Fully compatible architectural style
• F...
© Copyright 2014 Pivotal. All rights reserved.© Copyright 2014 Pivotal. All rights reserved. 31
http://highscalability.com...
© Copyright 2014 Pivotal. All rights reserved. 32
Paying for your lunch…
• Significant Operations Overhead
• Substantial D...
© Copyright 2014 Pivotal. All rights reserved. 33
Paying for your lunch…
• Significant Operations Overhead
• Substantial D...
© Copyright 2014 Pivotal. All rights reserved. 34
Significant Operations Overhead
• Mitigate polyglot language/environment...
© Copyright 2014 Pivotal. All rights reserved. 35
Currently, there is not much in terms of frameworks and open source tool...
© Copyright 2014 Pivotal. All rights reserved. 36
© Copyright 2014 Pivotal. All rights reserved.
No Open Source Tooling?
37
© Copyright 2014 Pivotal. All rights reserved. 38
Substantial DevOps Skills Required
• This is a Good Thing™ in any archit...
© Copyright 2014 Pivotal. All rights reserved. 39
Distributed System Complexity
• Agreed: Microservices imply distributed ...
© Copyright 2014 Pivotal. All rights reserved. 40
Testability Challenges
• With CF, it is NOT difficult to recreate enviro...
© Copyright 2014 Pivotal. All rights reserved.
A Mutualistic Symbiotic Relationship
41
Cloud Foundry
Microservices
http://...
A NEW PLATFORM FOR A NEW ERA
Upcoming SlideShare
Loading in …5
×

Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship

3,480 views

Published on

With businesses built around software now disrupting multiple industries that appeared to have stable leaders, the need has emerged for enterprises to create "software factories" built around the following principles:

Streaming customer feedback directly into rapid, iterative cycles of application development
Horizontally scaling applications to meet user demand
Compatibility with an enormous diversity of clients, with mobility (smartphones, tablets, etc.) taking the lead
Continuous delivery of value, shrinking the cycle time from concept to cash
Infrastructure has taken the lead in adapting to meet these needs with the move to the cloud, and Platform as a Service (PaaS) has raised the level of abstraction to a focus on an ecosystem of applications and services. However, most applications are still developed as if we're living in the previous generation of both business and infrastructure: the monolithic application. Microservices - small, loosely coupled applications that follow the Unix philosophy of "doing one thing well" - represent the application development side of enabling rapid, iterative development, horizontal scale, polyglot clients, and continuous delivery. They also enable us to scale application development and eliminate long term commitments to a single technology stack.

While microservices are simple, they are certainly not easy. It's recently been said that "microservices are not a free lunch". Interestingly enough, if you look at the concerns expressed here about microservices, you'll find that they are exactly the challenges that a PaaS is intended to address. So while microservices do not necessarily imply cloud (and vice versa), there is in fact a symbiotic relationship between the two, with each approach somehow compensating for the limitations of the other, much like the practices of eXtreme Programming.

Published in: Technology

Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship

  1. 1. © Copyright 2014 Pivotal. All rights reserved.© Copyright 2014 Pivotal. All rights reserved. Cloud Foundry and Microservices A Mutualistic Symbiotic Relationship 1 Matt Stine Cloud Foundry Platform Engineer CF Summit 2014
  2. 2. © Copyright 2014 Pivotal. All rights reserved. 2 “Software Keeps Eating the World”
  3. 3. © Copyright 2014 Pivotal. All rights reserved. 3 Software Keeps Changing Industries $3.5B valuation Financial Services $3.5B valuation Travel & Hospitality $3.5B valuation Transportation $3.2B Acquisition by Google Home Automation $20B valuation Entertainment $26B valuation Tesla--Automotive $19.5B
  4. 4. © Copyright 2014 Pivotal. All rights reserved. 4 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
  5. 5. © Copyright 2014 Pivotal. All rights reserved. 5 Iterative Development Design Develop Test Customer Feedback Customer Delivery Analytics
  6. 6. © Copyright 2014 Pivotal. All rights reserved. Horizontal Scale 6 Slow/Expensive Fast/Cheap
  7. 7. © Copyright 2014 Pivotal. All rights reserved. Diversity of Clients 7 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.
  8. 8. © Copyright 2014 Pivotal. All rights reserved. 8 Continuous Delivery
  9. 9. © Copyright 2014 Pivotal. All rights reserved. 9 Software Factories Feedback Rapid Iteration Horizontal Scale Diversity of Clients Continuous Delivery Infrastructure Applications Monoliths Microservices Physical/Virtual Cloud Foundry
  10. 10. © Copyright 2014 Pivotal. All rights reserved. 10 New Architectural Constraints • 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.”
  11. 11. © Copyright 2014 Pivotal. All rights reserved. How XP Practices Support Each Other 11 http://www.kusmin.eu/wiki/index.php/How_XP_Practices_Support_Each_Other
  12. 12. © Copyright 2014 Pivotal. All rights reserved. A Mutualistic Symbiotic Relationship… 12 Cloud Foundry Microservices http://en.wikipedia.org/wiki/Symbiosis#Mutualism
  13. 13. © Copyright 2014 Pivotal. All rights reserved.© Copyright 2014 Pivotal. All rights reserved. Microservices Overview 13
  14. 14. © Copyright 2014 Pivotal. All rights reserved. 14 Simple vs. Easy • Simple • sim- plex • one fold/braid • vs complex • Easy • ease < aise < adjacens • lie near • vs hard
  15. 15. © Copyright 2014 Pivotal. All rights reserved. Monolithic Architecture 15 Relational Database Data Access Service HTML JavaScript MVC Service Monolithic ApplicationBrowser
  16. 16. © Copyright 2014 Pivotal. All rights reserved. 16 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
  17. 17. © Copyright 2014 Pivotal. All rights reserved. Microservice Architecture 17 … HTTP HTTP HTTP HTTP HTTP HTTP AMQP AMQP Relational DB Key/Value Store Graph DB
  18. 18. © Copyright 2014 Pivotal. All rights reserved. 18 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
  19. 19. © Copyright 2014 Pivotal. All rights reserved. Conway’s Law 19 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
  20. 20. © Copyright 2014 Pivotal. All rights reserved. Organize Around Business Capabilities 20 Data Access Service HTML JavaScript MVC Service UISpecialists Middleware Specialists DBAs BusinessCapability BusinessCapability BusinessCapability Siloed Functional Teams http://martinfowler.com/articles/microservices.html#OrganizedAroundBusinessCapabilities Siloed Application Architectures Cross- functional Teams Microservice Architectures
  21. 21. © Copyright 2014 Pivotal. All rights reserved. 21 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)
  22. 22. © Copyright 2014 Pivotal. All rights reserved. 22 UNIX Pipes and Filters cut -d" " -f1 < access.log | sort | uniq -c | sort -rn | less
  23. 23. © Copyright 2014 Pivotal. All rights reserved. Choreography over Orchestration 23 https://www.flickr.com/photos/gabrielsaldana/5896491978 https://www.flickr.com/photos/chrisbrenschmidt/2223763842 http://martinfowler.com/articles/microservices.html#SmartEndpointsAndDumbPipes
  24. 24. © Copyright 2014 Pivotal. All rights reserved.© Copyright 2014 Pivotal. All rights reserved. 24 Overview http://12factor.net
  25. 25. © Copyright 2014 Pivotal. All rights reserved. 25 Twelve Factor + Cloud Foundry • One codebase tracked in revision control, many deploys • Multiple = Distributed System • Consistent with CF application unit • Explicitly declare and isolate dependencies • CF emphasis on deployable units (e.g. Java WAR) • CF Buildpacks provide runtime dependencies
  26. 26. © Copyright 2014 Pivotal. All rights reserved. 26 Twelve Factor + Cloud Foundry • Store config in the environment • Nicely facilitated via CF • Treat backing services as attached resources • cf create-service / cf bind-service • Strictly separate build and run stages • CF Buildpacks + immutable Warden containers
  27. 27. © Copyright 2014 Pivotal. All rights reserved. 27 Twelve Factor + Cloud Foundry • Execute the app as one or more stateless processes • CF Warden containers - no clustered memory, no shared FS. • Challenge for the monolith! • Export services via port binding • CF provides HTTP/HTTPS today, more future (TCP?) • Scale out via the process model • cf scale app -i 1000
  28. 28. © Copyright 2014 Pivotal. All rights reserved. 28 Twelve Factor + Cloud Foundry • Maximize robustness with fast startup and graceful shutdown • CF scales quickly, but can only move as fast as your app can bootstrap (challenge for the monolith!) • Keep development, staging, and production as similar as possible • CF is CF! Spaces provide separation of concerns without technical differences.
  29. 29. © Copyright 2014 Pivotal. All rights reserved. 29 Twelve Factor + Cloud Foundry • Treat logs as event streams • CF Loggregator! • Run admin/management tasks as one-off processes • Still a challenge to be addressed…
  30. 30. © Copyright 2014 Pivotal. All rights reserved. 30 Twelve Factor + Microservices • Fully compatible architectural style • Frameworks tend to optimize around same ideas • Examples: • Spring Boot + Cloud • http://projects.spring.io/spring-boot • http://projects.spring.io/spring-cloud • Dropwizard (https://dropwizard.github.io/dropwizard)
  31. 31. © Copyright 2014 Pivotal. All rights reserved.© Copyright 2014 Pivotal. All rights reserved. 31 http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html
  32. 32. © Copyright 2014 Pivotal. All rights reserved. 32 Paying for your lunch… • Significant Operations Overhead • Substantial DevOps Skills Required • Implicit Interfaces • Duplication of Effort • Distributed System Complexity • Asynchronicity is Difficult! • Testability Challenges
  33. 33. © Copyright 2014 Pivotal. All rights reserved. 33 Paying for your lunch… • Significant Operations Overhead • Substantial DevOps Skills Required • Implicit Interfaces • Duplication of Effort • Distributed System Complexity • Asynchronicity is Difficult! • Testability Challenges
  34. 34. © Copyright 2014 Pivotal. All rights reserved. 34 Significant Operations Overhead • Mitigate polyglot language/environment provisioning complexity via CF Buildpacks • Mitigate failover and resilience concerns via CF Scale, CF Health Monitor, and future CF App AZ’s (http://blog.gopivotal.com/cloud-foundry-pivotal/products/the-four-levels-of- ha-in-pivotal-cf) • Mitigate routing/load balancing and plumbing concerns via CF Router and CF Services • High quality monitoring = CF BP agent-based tooling, future CF metric streams • High quality operations infrastructure = CF BOSH! • Robust release/deployment automation = CF API, scriptable CF CLI, Maven/Gradle Plugins, Strong Cloudbees/Jenkins partnerships
  35. 35. © Copyright 2014 Pivotal. All rights reserved. 35 Currently, there is not much in terms of frameworks and open source tooling to support this from an operational perspective. It's likely therefore that a team rolling out Microservices will need to make significant investment in custom scripting or development to manage these processes before they write a line of code that delivers business value. ! Operations is the most obvious and commonly held objection towards the model, though it is too easily brushed aside by proponents of this architecture. http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html
  36. 36. © Copyright 2014 Pivotal. All rights reserved. 36
  37. 37. © Copyright 2014 Pivotal. All rights reserved. No Open Source Tooling? 37
  38. 38. © Copyright 2014 Pivotal. All rights reserved. 38 Substantial DevOps Skills Required • This is a Good Thing™ in any architecture! • CF keeps your microservices up and available (and your monoliths too!) • CF = development and production parity! • Polyglot persistence without all the fuss: CF BOSH and Service Brokers
  39. 39. © Copyright 2014 Pivotal. All rights reserved. 39 Distributed System Complexity • Agreed: Microservices imply distributed systems. • All of the CF platform features we’ve discussed help to mitigate these concerns: • latent/unreliable networks • fault tolerance • load variability
  40. 40. © Copyright 2014 Pivotal. All rights reserved. 40 Testability Challenges • With CF, it is NOT difficult to recreate environments in a consistent way for either manual or automated testing! • Idiomatic Microservices involves placing less emphasis on testing and more on monitoring • Not sure where this idea comes from… • CF is an enabler of both!
  41. 41. © Copyright 2014 Pivotal. All rights reserved. A Mutualistic Symbiotic Relationship 41 Cloud Foundry Microservices http://en.wikipedia.org/wiki/Symbiosis#Mutualism
  42. 42. A NEW PLATFORM FOR A NEW ERA

×