0% found this document useful (0 votes)
128 views

Cloud Computing

Cloud Foundry is an open source Platform as a Service (PaaS) that allows developers to build, deploy, and run applications on the cloud. It is an open PaaS (OpenPaaS) that supports multiple languages, frameworks, services, clouds and data centers. Cloud Foundry uses a decentralized architecture of independent components that communicate through messaging to provide scalability, reliability and flexibility. Key components include routers to route traffic, cloud controllers to manage applications and services, health managers to monitor system health, and DEAs to run application instances.

Uploaded by

afjeie
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
128 views

Cloud Computing

Cloud Foundry is an open source Platform as a Service (PaaS) that allows developers to build, deploy, and run applications on the cloud. It is an open PaaS (OpenPaaS) that supports multiple languages, frameworks, services, clouds and data centers. Cloud Foundry uses a decentralized architecture of independent components that communicate through messaging to provide scalability, reliability and flexibility. Key components include routers to route traffic, cloud controllers to manage applications and services, health managers to monitor system health, and DEAs to run application instances.

Uploaded by

afjeie
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 63

Design and Architecture

Derek Collison

What is Cloud Foundry?

The Open Platform as a Service

What is PaaS?

Or more specifically, aPaaS?

aPaaS

Application Platform as a Service Applications and Services

aPaaS

Application Platform as a Service Applications and Services Not


VMs Memory Storage Networks CPU

What is OpenPaaS?

OpenPaaS

Multi-Language Multi-Framework Multi-Services Multi-Cloud, Multi-IaaS Hybrid - Public or Private or Both OpenSource
9

OpenPaaS

Multi-Language

Ruby, Java, Scala, Node.js, Erlang, Python, PHP.. Multi-Framework

Multi-Services

Rails, Sinatra, Spring, Grails, Express, Lift

MySQL, Postgres, MongoDB, Redis, RabbitMQ Multi-Cloud, Multi-IaaS

vSphere, MicroCloud, OpenStack,

AWS

10

The Open PaaS

Ap pli

Int e

Data Services

rfa

vFabric Postgres

Private Clouds

dP

ro

Msg Services

vid

vFabric RabbitMQTM

Other Services

11

Cl

ou

er

ti ca on Se c rvi nte eI rfa ce

Micro Clouds

ce

Public Clouds

What is our Goal?

12

What was our Goal? Raise the unit of currency to be the application and its associated services, not the infrastructure

13

What was our Goal? Best of breed delivery platform for all modern applications and frameworks

14

What was our Goal? Favor Choice and Openness

15

How was it Built?

16

How was it Built?

Kernel (CloudFoundry OSS) Kernel and Orchestrator Shells Orchestrator


orchestration

Core PaaS System

Layered on top of IaaS

IaaS creation, management and

17

High Level
Clients (VMC, STS, Browser)

CF Kernel

Orchestrator

IaaS

Hardware - CPU/Memory/Disk/Network

18

Basic Premises

Fail Fast Self Healing Horizontally Scalable Components Distributed State No Single Point of Failure Should be as simple as possible
19

Basic Patterns

Event-Driven Asynchronous Non-blocking Independent, Idempotent Message Passing Eventually Consistent


20

Basic Design

All components loosely coupled Messaging as foundation


Few Classes, many Instances Addressing and Component Discovery Command and Control

JSON payloads HTTP or File/Blob for data transport


21

Kernel Components

All dynamically discoverable Launch and scale in any order Can come and go as needed Monitor via HTTP and JSON Location independent

22

Kernel Components

Router CloudController DEA HealthManager Service Provisioning Agent Messaging System


23

Logical View
VMC client STS plugin Browser (user app access)

Routers

CloudControllers

App

App HealthManager

Services

DEA Pool

Messaging

24

25

Architecture

Messaging

26

Messaging
The Nervous System

27

Messaging
VMC client STS plugin Browser (user app access)

Routers

CloudControllers

App

App HealthManager

Services

DEA Pool

Messaging

28

Messaging
Addressing and Discovery Command and Control Central communication system Dial tone, fire and forget Protects *itself* at all costs Idempotent semantics
29

No static IPs or DNS lookups reqd Just Layer 4

Router

30

Router
Traffic Cop

31

Router
VMC client STS plugin Browser (user app access)

Routers

CloudControllers

App

App HealthManager

Services

DEA Pool

Messaging

32

Router

Handles all HTTP traffic Maintains distributed routing state Routes URLs to applications Distributes load among instances Realtime distributed updates to
routing tables from DEAs

33

CloudController

34

CloudController
The King

35

CloudController
VMC client STS plugin Browser (user app access)

Routers

CloudControllers

App

App HealthManager

Services

DEA Pool

Messaging

36

CloudController

Handles all state transitions Deals with users, apps, and services Packages and Stages applications Binds Services to Applications Presents external REST API

37

HealthManager

38

HealthManager
Court Jester

39

HealthManager
VMC client STS plugin Browser (user app access)

Routers

CloudControllers

App

App HealthManager

Services

DEA Pool

Messaging

40

HealthManager

Monitors the state of the world Initial value with realtime delta

updates to intended vs real

Determines drift Complains to the CloudControllers


when something is not correct

No power to change state itself


41

DEA

42

DEA
Droplet Execution Agent

43

DEA
VMC client STS plugin Browser (user app access)

Routers

CloudControllers

App

App HealthManager

Services

DEA Pool

Messaging

44

(Droplet Execution Agent)

DEA


45

Responsible for running all applications Monitors all applications

CPU, Mem, IO, Threads, Disk, FDs, etc

All apps look same to DEA


start and stop

Express ability and desire to run an application


runtimes, options, cluster avoidance, memory/cpu

Alerts on any change in state of applications Provides secure/constrained OS runtime

Hypervisor, Unix File and User, Linux Containers* Single or Multi-Tenant

How does it all Work?

46

Pushing an App
Client (VMC/STS) pushes meta-data to CC Client optionally pushes resource
signatures (diff analysis, sys wide)

Client pushes app resources to CC CC puts app together CC stages app asynchronously CC binds and stages services Droplet ready
47

48

Architecture

Running an App

49

CC asks DEAs for help First DEA back wins! Simple CC sends start request to selected DEA DEA pushes the green button DEA waits and monitors pid and ephemeral port for app to bind When app is healthy, sends register message Register message is seen by HM and Routers Routers bind URL to host:port

DEAs answer?

DEAs first determine YES or NO Then calculate a Delay Taint


SHA hash of application memory cpu correct runtime, options, memory, etc

Taint allows balancing and selection


50

Scale up & down?

Exact steps as running the app


the first time

SHA1 taint helps avoid clustering memory/cpu taint helps distribute


as evenly as possible

Nothing pre-computed Nothing assumed


51

Crashes?
If your app stops and we did not tell
it to, that is a crash

Crashed apps are immediately


detected by DEA and messaged

Routers disconnect route instantly HM will signal CC CC will issue run sequence again
52

something is wrong

53

Architecture

Access to my App?
All routers understand where all
instances of your application are running

Will randomly pick backend, not


semantically aware.

Will remove routes that are stale or


unhealthy

Session stickiness and replication


available, but best to avoid if possible
54

What about Services?

55

Services
VMC client STS plugin Browser (user app access)

Routers

CloudControllers

App

App HealthManager

Services

DEA Pool

Messaging

56

Services

Service Advertisement Service Provisioning Gateway fronts multi-backends Service Nodes scale independent App and service talk directly API to register into system Closure for additional value
57

Provisioning
VMC/STS

1 2

Routers

CloudControllers
6 5

Services Gateway
3 4

Application

Service Node MySQL

Service Node Redis

Service Node Redis

Messaging

58

Access (Direct)
Browser (user app access)

Routers

CloudControllers

Services Gateway

Application

Service Node MySQL


2

Service Node Redis

Service Node Redis

Messaging

59

Services
VMware Dev Tools
Cloud Foundry consume

Partner Dev Tools Enterprise Services

apps

consume bind

provision/bind service controller


core services
Relational DB

Data Director

service broker
SQLFire

vSphere

60

Learn more:
www.cloudfoundry.org blog.cloudfoundry.com support.cloudfoundry.com

61

Thank You

62

Questions?
[email protected] [email protected] twitter: derekcollison

63

You might also like