Top Banner
@chipchilder Chip Childers, VP Technolog Cloud Foundry Foundatio Going Cloud Native with Cloud Foundry
50

Going Cloud Native with Cloud Foundry

Feb 13, 2017

Download

Technology

Chip Childers
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Going Cloud Native with Cloud Foundry

@chipchildersChip Childers, VP Technology

Cloud Foundry Foundation

Going Cloud Native with Cloud Foundry

Page 2: Going Cloud Native with Cloud Foundry

Why does Cloud Native matter?

Page 3: Going Cloud Native with Cloud Foundry

Since 2000, 52% of the Fortune 500 are no longer

on the list

Page 4: Going Cloud Native with Cloud Foundry

Continuous Innovation

Page 5: Going Cloud Native with Cloud Foundry

There is a rough consensus on many Cloud Native traits. Containers as an atomic unit, for example. Micro-services as the means of both construction and communication. Platform independence. Multiple language support. Automation as a feature of everything from build to deployment. High uptime. Ephemeral infrastructure (cattle not pets). And so on.

Stephen O’Grady, Redmonkhttp://redmonk.com/sogrady/2015/07/24/cloud-native-implications/

Page 6: Going Cloud Native with Cloud Foundry

There is a rough consensus on many Cloud Native traits. Containers as an atomic unit, for example. Micro-services as the means of both construction and communication. Platform independence. Multiple language support. Automation as a feature of everything from build to deployment. High uptime. Ephemeral infrastructure (cattle not pets). And so on.

Stephen O’Grady, Redmonkhttp://redmonk.com/sogrady/2015/07/24/cloud-native-implications/

Page 7: Going Cloud Native with Cloud Foundry

There is a rough consensus on many Cloud Native traits. Containers as an atomic unit, for example. Micro-services as the means of both construction and communication. Platform independence. Multiple language support. Automation as a feature of everything from build to deployment. High uptime. Ephemeral infrastructure (cattle not pets). And so on.

Stephen O’Grady, Redmonkhttp://redmonk.com/sogrady/2015/07/24/cloud-native-implications/

Page 8: Going Cloud Native with Cloud Foundry

There is a rough consensus on many Cloud Native traits. Containers as an atomic unit, for example. Micro-services as the means of both construction and communication. Platform independence. Multiple language support. Automation as a feature of everything from build to deployment. High uptime. Ephemeral infrastructure (cattle not pets). And so on.

Stephen O’Grady, Redmonkhttp://redmonk.com/sogrady/2015/07/24/cloud-native-implications/

Page 9: Going Cloud Native with Cloud Foundry

There is a rough consensus on many Cloud Native traits. Containers as an atomic unit, for example. Micro-services as the means of both construction and communication. Platform independence. Multiple language support. Automation as a feature of everything from build to deployment. High uptime. Ephemeral infrastructure (cattle not pets). And so on.

Stephen O’Grady, Redmonkhttp://redmonk.com/sogrady/2015/07/24/cloud-native-implications/

Page 10: Going Cloud Native with Cloud Foundry

There is a rough consensus on many Cloud Native traits. Containers as an atomic unit, for example. Micro-services as the means of both construction and communication. Platform independence. Multiple language support. Automation as a feature of everything from build to deployment. High uptime. Ephemeral infrastructure (cattle not pets). And so on.

Stephen O’Grady, Redmonkhttp://redmonk.com/sogrady/2015/07/24/cloud-native-implications/

Page 11: Going Cloud Native with Cloud Foundry

There is a rough consensus on many Cloud Native traits. Containers as an atomic unit, for example. Micro-services as the means of both construction and communication. Platform independence. Multiple language support. Automation as a feature of everything from build to deployment. High uptime. Ephemeral infrastructure (cattle not pets). And so on.

Stephen O’Grady, Redmonkhttp://redmonk.com/sogrady/2015/07/24/cloud-native-implications/

Page 12: Going Cloud Native with Cloud Foundry

The Cloud Native Advantage:

Simple PatternsHighly AutomatedScaled with Ease

Page 13: Going Cloud Native with Cloud Foundry

Fast, Safe, Scalable… Pick 3

Page 14: Going Cloud Native with Cloud Foundry

Fast – Focus on Takt TimeDefinition: the desired time between units of production output,

synchronized to customer demand

http://www.strategosinc.com/takt_time.htm

Page 15: Going Cloud Native with Cloud Foundry

SafeA.B.T. - Always Be Testing (automatically)

Page 16: Going Cloud Native with Cloud Foundry

Safe – Runtime Characteristics Matter• Visibility – Measure all the things. Translate data into knowledge.

(see: OODA loop)

• Fault Isolation – Smaller applications, released independently, isolate the scope of a fault condition.

• Fault Tolerance – Failures happen (see: Circuit Breaker Pattern / Design for Failure)

• Autonomic Recovery – Humans have better things to do at night

Page 17: Going Cloud Native with Cloud Foundry

Scale – Prepare (as best you can) to Succeed• Demand elastic infrastructure

• Separate concerns - Isolated ephemeral services, Solve persistence independently

• Accept that the scalability of a system can be a series of plateaus

Page 18: Going Cloud Native with Cloud Foundry
Page 19: Going Cloud Native with Cloud Foundry

“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

Page 20: Going Cloud Native with Cloud Foundry

Microservices are great, but they require:

rapid provisioningbasic monitoring

rapid application deploymentdevops culture

Martin Fowler

Page 21: Going Cloud Native with Cloud Foundry
Page 22: Going Cloud Native with Cloud Foundry

• Use declarative formats for setup automation, to minimize time and cost for new developers joining the project;

• Have a clean contract with the underlying OS, offering maximum portability between execution environments;

• Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration;

• Minimize divergence between development and production, enabling continuous deployment for maximum agility;

• And can scale up without significant changes to tooling, architecture, or development practices.

Page 23: Going Cloud Native with Cloud Foundry

But even that’s not enough…

Page 24: Going Cloud Native with Cloud Foundry

• Role based access to resources: the right people should be able to do things and the wrong people shouldn’t

• Run specified bits on demand: take code, put it together with all the rest of the things it needs and and get it running

• Coordinate cross service configurations: in a service oriented world, services need to be configured to connect with each other

• Route public requests to running bits: the next big thing needs access to the internet

• Read and write persistent data: data has to live somewhere

• Add and remove resources: scaling is a great problem to have, but still

• Isolate resources and failures without isolation and decoupling, that is one big distributed single point of failure

• Measure performance/health: can’t manage what you don’t measure

• Detect and determine failure: sometimes, things get real… but how do you know

• Recover failures: someone is going to have to clean this mess

• Work tomorrow: when everything you’ve thought to be true has been shown not to

Page 25: Going Cloud Native with Cloud Foundry

You must be this tall…

Page 26: Going Cloud Native with Cloud Foundry

We’re going to need a platform

Page 27: Going Cloud Native with Cloud Foundry

Unit of Value

IaaS == Virtual Machine• Opaque to the system• Orchestration is post-hoc• System changes are

imperative (“launch” stuff)

App Platform == Application• Containers are transparent• Lifecycle is fully managed• System changes are

declarative (manifest.yml)

Page 28: Going Cloud Native with Cloud Foundry

Unit of Value

IaaS == Virtual Machine• Opaque to the system• Orchestration is post-hoc• System changes are

imperative (“launch” stuff)

App Platform == Application Time to release a feature or App• Containers are transparent• Lifecycle is fully managed• System changes are

declarative (manifest.yml)

Page 29: Going Cloud Native with Cloud Foundry

Platforms make promises

Constraints are the contract that allows a platform to

keep promises

Page 30: Going Cloud Native with Cloud Foundry

Here is my source codeRun it on the cloud for meI do not care how

Cloud Foundry HaikuOnsi Fakhouri

Page 31: Going Cloud Native with Cloud Foundry
Page 32: Going Cloud Native with Cloud Foundry

.war .jar

dependencies

libraries

service manifest

App App App

LB

DB

Multi-server run time environment(s)

.tar.gz

Turning this: Into this:

Page 33: Going Cloud Native with Cloud Foundry

https://blog.appdynamics.com/devops/the-future-of-ops/

Or even this…

Page 34: Going Cloud Native with Cloud Foundry

BUILD APPLICATION

PUSH FIRST RELEASE

MAINTAIN APPLICATION

UPDATE APPLICATIONS

RETIRE APPLICATIONS

• Auto-detect frameworks• Link to App Platform

• Self-service deploy• Dynamic routing

• A/B versioning• Live upgrades

• Self-service removal

• Elastic scale• Integrated HA• Log aggregation• Policy and Auth

Page 35: Going Cloud Native with Cloud Foundry

target <mycf>push <myapp>create-service <myservice>bind <myapp> <myservice>start <myapp>scale <myapp> -i 100…

cf

App

DB

LB

App App

Page 36: Going Cloud Native with Cloud Foundry

Where’s the container in this story?

Page 37: Going Cloud Native with Cloud Foundry
Page 38: Going Cloud Native with Cloud Foundry

= + +Contents Processes

??Isolation Rules

PIDUser

Network

cgroups cflinuxfs2

What is a “Container”?

Page 39: Going Cloud Native with Cloud Foundry

Let’s talk about Buildpacks / Staging

• Ruby code that detects language, frameworks, whatnot…

• Compiles the code into executable binaries (*)

/bin/detect < Am I supposed to run?/bin/compile < Build the thing/bin/release < Pass along potential metadata

cflinuxfs2

Page 40: Going Cloud Native with Cloud Foundry

Prescriptive

CHRO

NO

S

sche

dule

r.nex

t

container.next

Assembly

Page 41: Going Cloud Native with Cloud Foundry

Prescriptive

CHRO

NO

S

sche

dule

r.nex

t

container.next

Assembly

runC

Page 42: Going Cloud Native with Cloud Foundry

Prescriptive

CHRO

NO

S

sche

dule

r.nex

t

gorouter

Clou

d Co

ntro

ller

Auth

Loggregator

Staging

Buildpacks

BOSH

Service Broker

Diego

Garden

etcd

Core Services

container.next

Assembly

runC

Page 43: Going Cloud Native with Cloud Foundry

Prescriptive Assembly

CHRO

NO

S

sche

dule

r.nex

t

gorouter

Clou

d Co

ntro

ller

Auth

Loggregator

Staging

Buildpacks

BOSH

Service Broker

Diego

etcd

Core Services

container.nextrunC

Page 44: Going Cloud Native with Cloud Foundry

That was all about 12 factor apps…

What about services?

Page 45: Going Cloud Native with Cloud Foundry

CF and Services

- Development infrastructure components (DBs, Cache, Queue, etc…)

- Loopback to other CF hosted apps- Reaching out to your “legacy”- External providers

Page 46: Going Cloud Native with Cloud Foundry
Page 47: Going Cloud Native with Cloud Foundry
Page 48: Going Cloud Native with Cloud Foundry

.war .jar

dependencies

libraries

service manifest

App App App

LB

DB

Multi-server run time environment(s)

.tar.gz

Turning this: Into this:

Page 49: Going Cloud Native with Cloud Foundry

The Cloud Native Advantage:

Simple PatternsHighly AutomatedScaled with Ease

Page 50: Going Cloud Native with Cloud Foundry

cloudfoundry.org