Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship

Post on 08-Sep-2014

422 views 3 download

Tags:

description

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.

Transcript of Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship

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

Cloud Foundry and MicroservicesA 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 FactoriesWarner 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

InfrastructureApplications

MonolithsMicroservices

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 FoundryMicroservices

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

AMQPAMQP

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

UI S

pecialists

Middlew

are S

pecialists

DB

As

Business C

apability

Business C

apability

Business C

apabilitySiloed 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

Overviewhttp://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 FoundryMicroservices

http://en.wikipedia.org/wiki/Symbiosis#Mutualism

A NEW PLATFORM FOR A NEW ERA