SlideShare a Scribd company logo
© 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
© 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.5B valuation
Travel & Hospitality
$3.5B valuation
Transportation
$3.2B Acquisition by Google
Home Automation
$20B valuation
Entertainment
$26B valuation
Tesla--Automotive
$19.5B
© 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
© Copyright 2014 Pivotal. All rights reserved. 5
Iterative Development
Design
Develop
Test
Customer
Feedback
Customer
Delivery
Analytics
© 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/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. 8
Continuous Delivery
© 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
© 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.”
© 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
© Copyright 2014 Pivotal. All rights reserved.
A Mutualistic Symbiotic Relationship…
12
Cloud Foundry
Microservices
http://en.wikipedia.org/wiki/Symbiosis#Mutualism
© 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
• Easy
• ease < aise < adjacens
• lie near
• vs hard
© Copyright 2014 Pivotal. All rights reserved.
Monolithic Architecture
15
Relational Database
Data Access
Service
HTML JavaScript MVC
Service
Monolithic ApplicationBrowser
© 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
© Copyright 2014 Pivotal. All rights reserved.
Microservice Architecture
17
…
HTTP
HTTP
HTTP
HTTP
HTTP
HTTP
AMQP
AMQP
Relational
DB
Key/Value
Store
Graph
DB
© 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
© 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
© 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
© 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)
© Copyright 2014 Pivotal. All rights reserved. 22
UNIX Pipes and Filters
cut -d" " -f1 < access.log | sort | uniq -c | sort -rn | less
© 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
© Copyright 2014 Pivotal. All rights reserved.© Copyright 2014 Pivotal. All rights reserved. 24
Overview
http://12factor.net
© 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
© 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
© 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
© 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.
© 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…
© 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)
© 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
© 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
© 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
© 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
© 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
© 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 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
© 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
© 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!
© Copyright 2014 Pivotal. All rights reserved.
A Mutualistic Symbiotic Relationship
41
Cloud Foundry
Microservices
http://en.wikipedia.org/wiki/Symbiosis#Mutualism
A NEW PLATFORM FOR A NEW ERA

More Related Content

PDF
Circuit breaker mechanism for Microservices based architecture
PPTX
Cloud Foundry Technical Overview at IBM Interconnect 2016
PDF
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
PPTX
Cloud Foundry - Second Generation Code (CCNG). Technical Overview
PDF
Part 3: Enabling Continuous Delivery (Pivotal Cloud Platform Roadshow)
PPTX
Cloud Foundry: Hands-on Deployment Workshop
KEY
Cloud Foundry Bootcamp
PDF
Devops: Enabled Through a Recasting of Operational Roles
Circuit breaker mechanism for Microservices based architecture
Cloud Foundry Technical Overview at IBM Interconnect 2016
Part 4: Custom Buildpacks and Data Services (Pivotal Cloud Platform Roadshow)
Cloud Foundry - Second Generation Code (CCNG). Technical Overview
Part 3: Enabling Continuous Delivery (Pivotal Cloud Platform Roadshow)
Cloud Foundry: Hands-on Deployment Workshop
Cloud Foundry Bootcamp
Devops: Enabled Through a Recasting of Operational Roles

What's hot (20)

PDF
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
PDF
Cloud Foundry Overview
PDF
Part 2: Architecture and the Operator Experience (Pivotal Cloud Platform Road...
PPTX
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
PDF
Cloud Foundry Introduction and Overview
PDF
Cloud Foundry Compared With Other PaaSes (Cloud Foundry Summit 2014)
PPTX
Declarative Infrastructure with Cloud Foundry BOSH
PPTX
Cloud foundry architecture and deep dive
PPTX
Running your Spring Apps in the Cloud Javaone 2014
PDF
Cloud Foundry for PHP developers
PDF
Cloudfoundry Introduction
PDF
Run your Java code on Cloud Foundry
PPTX
Architecture & Operations
PDF
Introduction to Platform-as-a-Service and Cloud Foundry
PDF
Part 1: The Developer Experience (Pivotal Cloud Platform Roadshow)
PDF
Cloud Foundry Technical Overview
PPTX
What's new in Pivotal Cloud Foundry 1.6
PPTX
Pivotal cloud foundry introduction
PDF
As a Service: Cloud Foundry on OpenStack - Lessons Learnt
PDF
Introduction into Cloud Foundry and Bosh | anynines
Introducing Cloud Native, Event Driven, Serverless, Micrsoservices Framework ...
Cloud Foundry Overview
Part 2: Architecture and the Operator Experience (Pivotal Cloud Platform Road...
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
Cloud Foundry Introduction and Overview
Cloud Foundry Compared With Other PaaSes (Cloud Foundry Summit 2014)
Declarative Infrastructure with Cloud Foundry BOSH
Cloud foundry architecture and deep dive
Running your Spring Apps in the Cloud Javaone 2014
Cloud Foundry for PHP developers
Cloudfoundry Introduction
Run your Java code on Cloud Foundry
Architecture & Operations
Introduction to Platform-as-a-Service and Cloud Foundry
Part 1: The Developer Experience (Pivotal Cloud Platform Roadshow)
Cloud Foundry Technical Overview
What's new in Pivotal Cloud Foundry 1.6
Pivotal cloud foundry introduction
As a Service: Cloud Foundry on OpenStack - Lessons Learnt
Introduction into Cloud Foundry and Bosh | anynines
Ad

Similar to Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship (20)

PDF
Keynote: Architecting for Continuous Delivery (Pivotal Cloud Platform Roadshow)
PPTX
Developing Enterprise Applications for the Cloud, from Monolith to Microservices
PDF
Developing Enterprise Applications for the Cloud, from Monolith to Microservice
PDF
Made for Each Other: Microservices + PaaS
PPTX
Introduction to Microservices and Cloud Native Application Architecture
PDF
To Microservices and Beyond
PDF
Cloud Foundry - Platform as a Service for vSphere
PDF
Microservices Architecture
PDF
Adopting PCF At An Automobile Manufacturer
PDF
Adopting PCF At An Automobile Manufacturer
PDF
20160930 cloud foundry_overview
PPTX
Cloud foundry: The Platform for Forging Cloud Native Applications
PPTX
Microservices approach for Websphere commerce
PDF
Production-Ready_Microservices_excerpt.pdf
PDF
20141210 - Microservice Container
PDF
Integration in the Cloud, by Rob Davies
PDF
Cloud Foundry Introduction for CF Meetup Tokyo March 2016
PDF
Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...
PDF
The journey to Native Cloud Architecture & Microservices, tracing the footste...
PPTX
Cloud Foundry a Developer's Perspective
Keynote: Architecting for Continuous Delivery (Pivotal Cloud Platform Roadshow)
Developing Enterprise Applications for the Cloud, from Monolith to Microservices
Developing Enterprise Applications for the Cloud, from Monolith to Microservice
Made for Each Other: Microservices + PaaS
Introduction to Microservices and Cloud Native Application Architecture
To Microservices and Beyond
Cloud Foundry - Platform as a Service for vSphere
Microservices Architecture
Adopting PCF At An Automobile Manufacturer
Adopting PCF At An Automobile Manufacturer
20160930 cloud foundry_overview
Cloud foundry: The Platform for Forging Cloud Native Applications
Microservices approach for Websphere commerce
Production-Ready_Microservices_excerpt.pdf
20141210 - Microservice Container
Integration in the Cloud, by Rob Davies
Cloud Foundry Introduction for CF Meetup Tokyo March 2016
Continuous Delivery for Microservice Architectures with Concourse & Cloud Fou...
The journey to Native Cloud Architecture & Microservices, tracing the footste...
Cloud Foundry a Developer's Perspective
Ad

More from Matt Stine (20)

PDF
Architectures That Bend but Don't Break
PDF
Cloud Native Architecture Patterns Tutorial
PDF
Resilient Architecture
PDF
Cloud Foundry: The Best Place to Run Microservices
PDF
Reactive Fault Tolerant Programming with Hystrix and RxJava
PDF
Lattice: A Cloud-Native Platform for Your Spring Applications
PDF
The Cloud Native Journey
PDF
To Microservices and Beyond
PDF
Deploying Microservices to Cloud Foundry
PDF
Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
PDF
Building Distributed Systems with Netflix OSS and Spring Cloud
PDF
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
PDF
A Recovering Java Developer Learns to Go
PDF
Agile Development with OSGi
PDF
It's the End of the Cloud as We Know It
PDF
Vert.x
PDF
Functional solid
PDF
The Seven Wastes of Software Development
PPTX
Information Sciences Solutions to Core Facility Problems at St. Jude Children...
PDF
Achieve Your Goals
Architectures That Bend but Don't Break
Cloud Native Architecture Patterns Tutorial
Resilient Architecture
Cloud Foundry: The Best Place to Run Microservices
Reactive Fault Tolerant Programming with Hystrix and RxJava
Lattice: A Cloud-Native Platform for Your Spring Applications
The Cloud Native Journey
To Microservices and Beyond
Deploying Microservices to Cloud Foundry
Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
Building Distributed Systems with Netflix OSS and Spring Cloud
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
A Recovering Java Developer Learns to Go
Agile Development with OSGi
It's the End of the Cloud as We Know It
Vert.x
Functional solid
The Seven Wastes of Software Development
Information Sciences Solutions to Core Facility Problems at St. Jude Children...
Achieve Your Goals

Recently uploaded (20)

PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
A Presentation on Artificial Intelligence
PDF
Empathic Computing: Creating Shared Understanding
PDF
Approach and Philosophy of On baking technology
PDF
Modernizing your data center with Dell and AMD
PDF
Electronic commerce courselecture one. Pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Encapsulation_ Review paper, used for researhc scholars
Diabetes mellitus diagnosis method based random forest with bat algorithm
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Unlocking AI with Model Context Protocol (MCP)
20250228 LYD VKU AI Blended-Learning.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Review of recent advances in non-invasive hemoglobin estimation
Digital-Transformation-Roadmap-for-Companies.pptx
A Presentation on Artificial Intelligence
Empathic Computing: Creating Shared Understanding
Approach and Philosophy of On baking technology
Modernizing your data center with Dell and AMD
Electronic commerce courselecture one. Pdf
Big Data Technologies - Introduction.pptx
Spectral efficient network and resource selection model in 5G networks

Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship

  • 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. © Copyright 2014 Pivotal. All rights reserved. 2 “Software Keeps Eating the World”
  • 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. © 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. © Copyright 2014 Pivotal. All rights reserved. 5 Iterative Development Design Develop Test Customer Feedback Customer Delivery Analytics
  • 6. © Copyright 2014 Pivotal. All rights reserved. Horizontal Scale 6 Slow/Expensive Fast/Cheap
  • 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. © Copyright 2014 Pivotal. All rights reserved. 8 Continuous Delivery
  • 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. © 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. © 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. © Copyright 2014 Pivotal. All rights reserved. A Mutualistic Symbiotic Relationship… 12 Cloud Foundry Microservices http://en.wikipedia.org/wiki/Symbiosis#Mutualism
  • 13. © Copyright 2014 Pivotal. All rights reserved.© Copyright 2014 Pivotal. All rights reserved. Microservices Overview 13
  • 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. © Copyright 2014 Pivotal. All rights reserved. Monolithic Architecture 15 Relational Database Data Access Service HTML JavaScript MVC Service Monolithic ApplicationBrowser
  • 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. © 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. © 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. © 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. © 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. © 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. © Copyright 2014 Pivotal. All rights reserved. 22 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 23 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. 24 Overview http://12factor.net
  • 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. © 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. © 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. © 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. © 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. © 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. © 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. © 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. © 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. © 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. © 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. © Copyright 2014 Pivotal. All rights reserved. 36
  • 37. © Copyright 2014 Pivotal. All rights reserved. No Open Source Tooling? 37
  • 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. © 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. © 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. © Copyright 2014 Pivotal. All rights reserved. A Mutualistic Symbiotic Relationship 41 Cloud Foundry Microservices http://en.wikipedia.org/wiki/Symbiosis#Mutualism
  • 42. A NEW PLATFORM FOR A NEW ERA