2013 05-fite-club-working-models-cloud-growing-up

66
Working Models ... or how cloud is growing up and thinking about applications Alex Heneveld / @ahtweetin Fite Club, 22 May 2013

Upload: alexheneveld

Post on 15-Jan-2015

259 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 2013 05-fite-club-working-models-cloud-growing-up

Working Models ...or how cloud is growing up and thinking about applications

Alex Heneveld / @ahtweetinFite Club, 22 May 2013

Page 2: 2013 05-fite-club-working-models-cloud-growing-up

Cloud

Page 3: 2013 05-fite-club-working-models-cloud-growing-up

CloudIt’s not just about VM’s...

Page 4: 2013 05-fite-club-working-models-cloud-growing-up

It’s about storage, networking, maas, ...

It’s not just about VM’s...

Cloud

Page 5: 2013 05-fite-club-working-models-cloud-growing-up

It’s not just about VM’s...

Ultimately it’s about applications.

Cloud

Page 6: 2013 05-fite-club-working-models-cloud-growing-up

Declarative — AWS CloudFormation and OpenStack HeatProcedural — Apache Whirr and Cloudsoft BrooklynOpenStack Summit — Red Hat, RAX, IBM, OASIS TOSCA and CAMPDSLs in Progress — OpenStack Heat and CAMP PDP

Ultimately it’s about applications.

Page 7: 2013 05-fite-club-working-models-cloud-growing-up

AWS CloudFormation

{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "WordPress is web software …", "Parameters" : { "KeyName" : { "Description" : "Name of an existing EC2 KeyPair for SSH access", "Type" : "String" }, ... }, "Mappings" : { "AWSInstanceType2Arch" : { "m1.small" : { "Arch" : "64" }, "m1.large" : { "Arch" : "64" }, ... }, "AWSRegionArch2AMI" : { "us-east-1" : { "32" : "ami-31814f58", "64" : "ami-1b814f72" }, ... } }, "Resources" : { "WebServer": { "Type": "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : { "packages" : { "yum" : { "gcc-c++" : [], "make" : [],

...

Page 8: 2013 05-fite-club-working-models-cloud-growing-up

{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "WordPress is web software …", "Parameters" : { "KeyName" : { "Description" : "Name of an existing EC2 KeyPair for SSH access", "Type" : "String" }, ... }, "Mappings" : { "AWSInstanceType2Arch" : { "m1.small" : { "Arch" : "64" }, "m1.large" : { "Arch" : "64" }, ... }, "AWSRegionArch2AMI" : { "us-east-1" : { "32" : "ami-31814f58", "64" : "ami-1b814f72" }, ... } }, "Resources" : { "WebServer": { "Type": "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : { "packages" : { "yum" : { "gcc-c++" : [], "make" : [],

...

"Resources" : { "WebServer": { "Type": "AWS::EC2::Instance"

AWS CloudFormation

Page 9: 2013 05-fite-club-working-models-cloud-growing-up

"Resources" : { "WebServer": { "Type": "AWS::EC2::Instance"

Parameters

Mappings(config metadata)

WaitConditions &WaitHandles

(orchestration)

Outputs

Functions

AWS CloudFormation

Page 10: 2013 05-fite-club-working-models-cloud-growing-up

"Resources" : { "WebServer": { "Type": "AWS::EC2::Instance"

AWS CloudFormation

Page 11: 2013 05-fite-club-working-models-cloud-growing-up

"Resources" : { "WebServer": { "Type": "AWS::EC2::Instance"

AWS CloudFormation

Page 12: 2013 05-fite-club-working-models-cloud-growing-up

"Type": "AWS::AutoScaling::AutoScalingGroup"

"Type": "AWS::EC2::EIP"

"Resources" : { "WebServer": { "Type": "AWS::EC2::Instance"

"Type": "AWS::SQS::Queue"

"Type": "AWS::CloudFormation::Stack"

"Type": "AWS::S3::Bucket"

AWS CloudFormation

Page 13: 2013 05-fite-club-working-models-cloud-growing-up

"Type": "AWS::AutoScaling::AutoScalingGroup"

"Type": "AWS::EC2::EIP"

"Resources" : { "WebServer": { "Type": "AWS::EC2::Instance"

"Type": "AWS::SQS::Queue"

"Type": "AWS::CloudFormation::Stack"

"Type": "AWS::S3::Bucket"

AWS CloudFormation

Composition!

Page 14: 2013 05-fite-club-working-models-cloud-growing-up

— Limited to AWS cloud

— Limited to AWS concepts

— Cumbersome to write

— Limited dependency injection

Nice, but:

AWS CloudFormation

Page 15: 2013 05-fite-club-working-models-cloud-growing-up

— CloudFormation clone

— Targetting OpenStack resources and AWS compatibility

— Adds YAML support (comments and easier)

— Multi-cloud support using Apache Deltacloud

OpenStack Heat

Page 16: 2013 05-fite-club-working-models-cloud-growing-up

(AWS CloudFormation){ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "WordPress is web software …", "Parameters" : { "KeyName" : { "Description" : "Name of an existing EC2 KeyPair for SSH access", "Type" : "String" }, ... }, "Mappings" : { "AWSInstanceType2Arch" : { "m1.small" : { "Arch" : "64" }, "m1.large" : { "Arch" : "64" }, ... }, "AWSRegionArch2AMI" : { "us-east-1" : { "32" : "ami-31814f58", "64" : "ami-1b814f72" }, ... } }, "Resources" : { "WebServer": { "Type": "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : { "packages" : { "yum" : { "gcc-c++" : [], "make" : [],

...

OpenStack Heat

Page 17: 2013 05-fite-club-working-models-cloud-growing-up

OpenStack Heat

HeatTemplateFormatVersion: 2012-12-12 Description: WordPress is web software ... Parameters:   KeyName: Description: Name of an existing EC2 KeyPair for SSH access Type: String ... Mappings:   AWSInstanceType2Arch:     m1.small: {Arch: '32'}     m1.large: {Arch: '64'} ...   DistroArch2AMI:     F18: {'32': F18-i386-cfntools, '64': F18-x86_64-cfntools}, ... Resources:   WebServer:     Type: AWS::EC2::Instance     Metadata:       AWS::CloudFormation::Init:         config:           packages:             yum:               gcc-c++: []               make: []

...

Page 18: 2013 05-fite-club-working-models-cloud-growing-up

— CloudFormation clone

— Targetting OpenStack resources and AWS compatibility

— Adds YAML support (comments and easier)

— Multi-cloud support using Apache Deltacloud

OpenStack Heat

Available NOW in Grizzly!

Page 19: 2013 05-fite-club-working-models-cloud-growing-up

OpenStack Heat

— Still limited to selected clouds

— Still limited in concepts

— Only slightly less cumbersome to write

— Very limited dependency injection

But...

Page 20: 2013 05-fite-club-working-models-cloud-growing-up

Procedural Approach

10 INPUT "What app do you like? ", A$20 INPUT "What cloud do you like? ", C$30 GOSUB 10040 END

100 REM deploy C$ to A$110 RETURN

Page 21: 2013 05-fite-club-working-models-cloud-growing-up

Apache Whirr

provision

install

configure

manage

— Apache top level project

— Deploy multi-node applications— Hadoop, Hama, Mahout, web,

Cassandra & many more

— Define topologies declaratively— Add new roles, configuration,

constraints and wiring procedurally

Page 22: 2013 05-fite-club-working-models-cloud-growing-up

$ whirr launch-cluster \ --cluster-name=hbase \ --instance-templates='1 hbase-master,6 hbase-regionserver'

— Define topologies declaratively

Apache Whirr

Page 23: 2013 05-fite-club-working-models-cloud-growing-up

— Add new roles, configuration,constraints and wiring procedurally

spec = new ClusterSpec();spec.setProvider("cloudservers-uk");spec.setIdentity(apikey);spec.setCredential(secret);spec.setClusterName("hbase");spec.setInstanceTemplates(ImmutableList.of( new InstanceTemplate(1, "hbase-master"), new InstanceTemplate(6, "hbase-regionserver")));

cluster = new ClusterController().launchCluster(spec);

Apache Whirr

Page 24: 2013 05-fite-club-working-models-cloud-growing-up

— Limited parameterisation

— Defining new roles requires coding

— Strict phases limit applicability

But...

— Composable to one dimension

— Portable locations support

— Pluggable with Chef, Puppet, and more

Apache Whirr

Page 25: 2013 05-fite-club-working-models-cloud-growing-up

Brooklyn & Cloudsoft AMP

• Brooklyn = Apache-licensed OSS

• AMP = Enterprise + Support

• Deployment and Management

• Hierarchical Autonomic Policies

Page 26: 2013 05-fite-club-working-models-cloud-growing-up

Brooklyn

Contention ManagementCustom PaaSBig Data

Page 27: 2013 05-fite-club-working-models-cloud-growing-up

Region #1

Presentation

GeographicDNS Load

Balancer

Tomcat

Processing (Monterey)

Data (Gemfire)

Tomcat

Tomcat

Region #2

Presentation

LoadBalancer

Tomcat

Processing (Monterey)

Data (Gemfire)

Tomcat

TomcatProvisioning

Monitoring

Management

Brooklyn: Example, Physical Architecture

Page 28: 2013 05-fite-club-working-models-cloud-growing-up

Data (Gemfire)Processing (Monterey)

Region #1

Presentation

GeographicDNS

LoadBalancer

Tomcat

Processing (Monterey) Data (Gemfire)

Tomcat

Tomcat

Region #2

Presentation

LoadBalancer

Tomcat

Processing (Monterey) Data (Gemfire)

Tomcat

Tomcat

Provisioning Monitoring Management

WebappFabric

TomcatNodes

NginxNode

LoadBalancedWebAppCluster

TomcatNodes

NginxNode

LoadBalancedWebAppCluster

WebappGeoDnsFabric MontereyFabric

MontereyCluster

MontereyNodes

MontereyNodes

MontereySegments

GemfireFabric

MontereyCluster

GemfireCluster

GemfireClusterGeoscaling

Brooklynand friends

GemfireNodes

GemfireNodes

Brooklyn: Example, Logical Architecture

Page 29: 2013 05-fite-club-working-models-cloud-growing-up

Processing (Monterey) Data (Gemfire)

Autonomic Hierarchical Management

GeographicDNS

Presentation

LoadBalancer

Tomcat Tomcat

WebappFabric

LoadBalancedWebAppCluster

Cluster Cluster Cluster Cluster

MyApplication

Policy

follow-the-{sun,moon,X}

Policy

resizer

Policy

restart-2x

Policy

Brooklynand friends

WebappGeoDnsFabric MontereyFabric GemfireFabric

Brooklyn

Page 30: 2013 05-fite-club-working-models-cloud-growing-up

Processing (Monterey) Data (Gemfire)

Typed Blueprintsreplace groups with PaaS tools andhave the same sensors and policies

GeographicDNS

Presentation

WebappFabric

PaaS

Cluster Cluster Service Cluster

MyApplication

Brooklynand friends

WebappGeoDnsFabric MontereyFabric GemfireFabric

Brooklyn

Policy

follow-the-{sun,moon,X}

Policy

resizer

Policy

restart-2x

Policy

Page 31: 2013 05-fite-club-working-models-cloud-growing-up

Data (Gemfire)

Data (Gemfire)

Processing (Monterey)

Presentation

GeographicDNS

LoadBalancer

Tomcat

Processing (Monterey)

Tomcat

Tomcat

Presentation

LoadBalancer

Tomcat

Processing (Monterey) Data (Gemfire)

Tomcat

Tomcat

Provisioning Monitoring Management

WebappFabric

TomcatNodes

NginxNode

LoadBalancedWebAppCluster

TomcatNodes

NginxNode

LoadBalancedWebAppCluster

WebappGeoDnsFabric MontereyFabric

MontereyCluster

MontereyNodes

MontereyNodes

MontereySegments

GemfireFabric

MontereyCluster

GemfireCluster

GemfireClusterGeoscaling

GemfireNodes

GemfireNodes fixed IP

&c

Brooklyn: Run in Many Locations

Page 32: 2013 05-fite-club-working-models-cloud-growing-up

Data (Gemfire)

Data (Gemfire)

Processing (Monterey)

Presentation

GeographicDNS

LoadBalancer

Tomcat

Processing (Monterey)

Tomcat

Tomcat

Presentation

LoadBalancer

Tomcat

Processing (Monterey) Data (Gemfire)

Tomcat

Tomcat

Provisioning Monitoring Management

WebappFabric

TomcatNodes

NginxNode

LoadBalancedWebAppCluster

TomcatNodes

NginxNode

LoadBalancedWebAppCluster

WebappGeoDnsFabric MontereyFabric

MontereyCluster

MontereyNodes

MontereyNodes

MontereySegments

GemfireFabric

MontereyCluster

GemfireCluster

GemfireClusterGeoscaling

GemfireNodes

GemfireNodes

Policies

Policies

WARfile

code schema

credentials

GeoDNSconfig actor

descriptor

Regions

Brooklyn: finally { Simplify }

Page 33: 2013 05-fite-club-working-models-cloud-growing-up

public class MyWebCluster extends AbstractApplication implements MyWebClusterConstants { public void init() { MySqlNode mysql = addChild(EntitySpecs.spec(MySqlNode.class) .configure("creationScriptUrl", DB_SETUP_SQL_URL)); ControlledDynamicWebAppCluster web = addChild(EntitySpecs.spec( ControlledDynamicWebAppCluster.class) .configure(WebAppService.HTTP_PORT, PortRanges.fromString("8080+")) .configure(JavaWebAppService.ROOT_WAR, WAR_PATH) .configure(javaSysProp("brooklyn.example.db.url"), formatString("jdbc:%s%s?user=%s\\&password=%s", attributeWhenReady(mysql, MySqlNode.MYSQL_URL), DB_TABLE, DB_USERNAME, DB_PASSWORD)) ); }}

Brooklyn: Nested Elastic Blueprints

Page 34: 2013 05-fite-club-working-models-cloud-growing-up

public class MyWebCluster extends AbstractApplication implements MyWebClusterConstants { public void init() { MySqlNode mysql = ...; ControlledDynamicWebAppCluster web = ...;

web.addEnricher(HttpLatencyDetector.builder().url(ROOT_URL). rollup(10, SECONDS).build());

web.getCluster().addPolicy(AutoScalerPolicy.builder(). metric(REQUESTS_PER_SECOND_IN_WINDOW_PER_NODE). metricRange(10, 100).sizeRange(2, 5).build());

addEnricher(SensorPropagatingEnricher.newInstanceListeningTo(web, ROOT_URL, REQUESTS_PER_SECOND_IN_WINDOW, REQUEST_LATENCY_IN_SECONDS_IN_WINDOW)); }

}

Brooklyn: Policies, Enrichers and KPI’s

Page 35: 2013 05-fite-club-working-models-cloud-growing-up

Brooklyn

— Defining blueprints requires coding

But...

— Easily parameterisable blueprints

— Composable and substitutable

— Portable and powerful locations support

— Pluggable with VM images, Heat, Chef, more

Page 36: 2013 05-fite-club-working-models-cloud-growing-up

Applications

— Components (IaaS-resources)

— DeclarativeInfrastructure

— Procedural

— Extensible (new resources)

— Composable (stacks)

— Management

— Portable (hybrid, metal)

Page 37: 2013 05-fite-club-working-models-cloud-growing-up

Heat in Grizzly

Man

agem

ent

Com

posa

ble

Decl

arat

ive

Com

pone

nts

Exte

nsib

le

Port

able

thanks largely to Red Hat

Page 38: 2013 05-fite-club-working-models-cloud-growing-up

Portland Design Summit — Heat

Man

agem

ent

Com

posa

ble

Decl

arat

ive

Port

able

Com

pone

nts

Exte

nsib

le

Page 39: 2013 05-fite-club-working-models-cloud-growing-up

Portland Design Summit — Heat

Man

agem

ent

Com

posa

ble

Decl

arat

ive

Port

able

Com

pone

nts

Exte

nsib

lelots of new blood (interest and ideas)

Page 40: 2013 05-fite-club-working-models-cloud-growing-up

Portland Design Summit — Heat

Com

posa

ble

Decl

arat

ive

Com

pone

nts

Man

agem

ent

Port

able

Ease

-of-

Use

Exte

nsib

leingredients from Brooklyn, Whirr, OoO and others

Page 41: 2013 05-fite-club-working-models-cloud-growing-up

Portland Design Summit — Heat

Com

posa

ble

Decl

arat

ive

Com

pone

nts

Man

agem

ent

Port

able

Exte

nsib

le

Auto

-wiri

nga special ingredient from Rackspace

Ease

-of-

Use

Page 42: 2013 05-fite-club-working-models-cloud-growing-up

Portland Design Summit — Heat

Com

posa

ble

Decl

arat

ive

Com

pone

nts

Man

agem

ent

Exte

nsib

le

Auto

-wiri

ng

Rela

tions

hips

Ease

-of-

Use

Port

able

a special ingredient from IBM

Page 43: 2013 05-fite-club-working-models-cloud-growing-up

Man

agem

ent

Com

posa

ble

Decl

arat

ive

Com

pone

nts

Auto

-wiri

ng

Rela

tions

hips

Exte

nsib

le

Ease

-of-

Use

Port

able

Portland Design Summit — Heat

Page 44: 2013 05-fite-club-working-models-cloud-growing-up

Heat in Havana

Man

agem

ent

Com

posa

ble

Decl

arat

ive

Com

pone

nts

Auto

-wiri

ng

Rela

tions

hips

Exte

nsib

le

Ease

-of-

Use

Port

able

ConcurrentDistributedResilientFunctions / DI

Page 45: 2013 05-fite-club-working-models-cloud-growing-up

Heat in Havana

Man

agem

ent

Com

posa

ble

Decl

arat

ive

Com

pone

nts

Auto

-wiri

ng

Rela

tions

hips

Exte

nsib

le

Ease

-of-

Use

Port

able

ConcurrentDistributedResilientFunctions / DIStandards ?

Page 46: 2013 05-fite-club-working-models-cloud-growing-up

OasisTOSCA

http://www.oasis-open.org/committees/tosca/

Topology and Orchestration Specification for Cloud Applications

Page 47: 2013 05-fite-club-working-models-cloud-growing-up

Modeling Topologies with TOSCA Service  Topologies  are  described  using  the  TOSCA  “Meta-model”:

Artifacts Describe Installables and Executables required to

instantiate and manage a service. Currently, they include:

Implementation Artifacts: – Executables or Plans that implement  a  Node’s  

or  Relationship’s  Operations (e.g. a Bash script) Deployment Artifacts:

– Installables of the components (e.g. a TAR file)

A  service’s  Topology Model is included in a TOSCA Service Template which is packaged and shared, along with all dependent artifacts, as a TOSCA Cloud Service Archive (CSAR)

Service Templates Group the nodes and relationships that make up

a  service’s  topology – Allowing modeling of sub-topologies

Service Templates “look  like  nodes” enabling: Composition of applications from one or more

service templates Substitution of abstract Node types with

available service templates of the same type

Nodes Represent Components of an application or service

and their Properties. Example nodes include: – Infrastructure: Compute, Network, Storage, etc. – Platform: OS, VM, DB, Web Server, etc. – Granular: functional Libraries, Modules, etc.

Include Operations which are the management functions for the node – e.g. deploy(), start(), stop(), connect(), etc.

Export their dependencies on other nodes as Requirement and Capabilities

Relationships Represent the logical Relationships between

nodes – e.g.  “hostedOn”,  “connectsTo”,  etc.

Describes the valid Source and Target nodes they are designed to couple – e.g. source  “web application”  node  is  designed  

to  “connectTo”  a  target  “database”  node Have their own Properties and Constraints

Slide origin: IBM

TOSCA: Modelling Topologies

Page 48: 2013 05-fite-club-working-models-cloud-growing-up

<Definitions id="PayrollDefinitions" targetNamespace="http://www.example.com/ste" xmlns:pay="http://www.example.com/ste/Types"> <Import namespace="http://www.example.com/ste/Types" location="http://.../PayrollTypes.tosca" importType=" http://docs.oasis-open.org/tosca/ns/2011/12"/> <ServiceTemplate id="Payroll" name="Payroll Service Template"> <TopologyTemplate ID="PayrollTemplate"> <NodeTemplate id="Payroll Application" type="pay:ApplicationNodeType"> <DeploymentArtifacts> <DeploymentArtifact name="PayrollEAR" type="http://..../CSARref"> EARs/Payroll.ear </DeploymentArtifact> </DeploymentArtifacts> </NodeTemplate> <NodeTemplate id="Application Server" type="pay:ApplicationServerNodeType"> <DeploymentArtifacts> <DeploymentArtifact name="ApplicationServerImage" type="http://.../AMIref"> ami-edf2cf99 </DeploymentArtifact> </DeploymentArtifacts> </NodeTemplate> <RelationshipTemplate id="deployed_on" type="pay:deployed_on"> <SourceElement ref="Payroll Application"/> <TargetElement ref="Application Server"/> </RelationshipTemplate> </TopologyTemplate> </ServiceTemplate></Definitions>

TOSCA: Sample Definition

Page 49: 2013 05-fite-club-working-models-cloud-growing-up

— Fails the “ease-of-use” test

— Does not standardise an API

But...

— Powerful and broad modelling coverage

— Workflow, locations, substitution

— Relatively mature

TOSCA

Page 50: 2013 05-fite-club-working-models-cloud-growing-up

OasisCAMP

www.cloudspecs.org

Cloud Application Management Platform

http://www.oasis-open.org/committees/camp/

Page 51: 2013 05-fite-club-working-models-cloud-growing-up

CAMP: Objectives and Non-Objectives

— Software

— an Orchestration Spec

— a Modelling System

But CAMP is NOT

— a REST API

— for Deployment and Management

— of Applications

It provides a flexible way to use many platforms.Interoperability.

Page 52: 2013 05-fite-club-working-models-cloud-growing-up

CAMP: Key Concepts

Clients

REST

Platform

PlatformComponent

Template

RequirementType

PlatformComponent

TemplatePlatformComponent

Template

RequirementType

App ComponentType

App ComponentType

Page 53: 2013 05-fite-club-working-models-cloud-growing-up

Clients Platform

PlatformComponent

Template

RequirementType

PlatformComponent

TemplatePlatformComponent

Template

RequirementType

App ComponentType

App ComponentType

PDP = Platform Deployment Plan

(blueprint)

— Deployment PlanCAMP: Key Concepts

DSL & REST

Page 54: 2013 05-fite-club-working-models-cloud-growing-up

App ComponentType

PDP = Platform Deployment Plan

(blueprint)

CAMP: Key Concepts

Clients

REST

Platform

PlatformComponent

Template

RequirementType

PlatformComponent

TemplatePlatformComponent

Template

RequirementType

App ComponentType

— Creating Templates

POST

Page 55: 2013 05-fite-club-working-models-cloud-growing-up

App ComponentTemplate

Clients

REST

Platform

PlatformComponent

Template

RequirementType

PlatformComponent

TemplatePlatformComponent

Template

RequirementType

App ComponentType

App ComponentType

— ResolutionCAMP: Key Concepts

AssemblyTemplate(blueprint)

PDP = Platform Deployment Plan

(blueprint)POST

Page 56: 2013 05-fite-club-working-models-cloud-growing-up

CAMP: Key Concepts

Clients

REST

Platform

PlatformComponent

Template

RequirementType

PlatformComponent

TemplatePlatformComponent

Template

RequirementType

App ComponentType

App ComponentType

App ComponentTemplate

RequirementType

PlatformComponent

Template

RequirementType

App ComponentType

— Resolution

AssemblyTemplate(blueprint)

POST

Page 57: 2013 05-fite-club-working-models-cloud-growing-up

AssemblyTemplate(blueprint)

CAMP: Key Concepts

Clients

REST

Platform

PlatformComponent

Template

RequirementType

PlatformComponent

TemplatePlatformComponent

Template

RequirementType

App ComponentType

App ComponentType

App ComponentTemplate

— Resolution

200

AssemblyTemplate

POST

Page 58: 2013 05-fite-club-working-models-cloud-growing-up

AssemblyTemplate(blueprint)

CAMP: Key Concepts

Clients

REST

Platform

PlatformComponent

Template

RequirementType

PlatformComponent

TemplatePlatformComponent

Template

RequirementType

App ComponentType

App ComponentType

App ComponentTemplate

— Deployment

Page 59: 2013 05-fite-club-working-models-cloud-growing-up

Assembly(blueprint) Platform

Component

PlatformComponent

App Component

AssemblyTemplate(blueprint)

CAMP: Key Concepts

Clients

REST

Platform

PlatformComponent

Template

RequirementType

RequirementType

App ComponentType

App ComponentType

App ComponentTemplate

— Deployment

POST

PlatformComponent

Template

PlatformComponent

Template

Page 60: 2013 05-fite-club-working-models-cloud-growing-up

Assembly(blueprint) Platform

Component

PlatformComponent

App Component

CAMP: Key Concepts

Clients

REST

Platform

— Deployment

Assembly(blueprint) Platform

Component

PlatformComponent

App Component

AssemblyTemplate(blueprint)

PlatformComponent

Template

App ComponentTemplate

PlatformComponent

Template

POST

200

Assembly

Page 61: 2013 05-fite-club-working-models-cloud-growing-up

CAMP

— depends on orchestrations supporting this

— wants standardised requirement and component types

— still needs a nice DSL

But...

— all very general

— designed to map on to a wide range of orchestrationsPaaS, TOSCA, Brooklyn, Heat

— OSS code in progressgithub.com/brooklyncentral/camp-server

Page 62: 2013 05-fite-club-working-models-cloud-growing-up

CAMP: PDP/Blueprint DSL (work in progress)

Parameters

Components

Requirements

Functionsparameters & sensors

Outputs

*

*

Page 63: 2013 05-fite-club-working-models-cloud-growing-up

CAMP: PDP/Blueprint DSL (work in progress)

Parameters

Functionsparameters & sensors

Outputs

*

*

components: my_app: type: WAR content: { href: hello.war } requirements: hosted_on: javaVersion: [1.7,)

Page 64: 2013 05-fite-club-working-models-cloud-growing-up

Mappings(config metadata)

WaitConditions &WaitHandles

(orchestration)

Parameters

components: my_instance: type: server ram: 2048m requires: connects_to: target: my_database

Heat: New HOT DSL (also work in progress)

Functions

Outputs

HeatOrchestration

Template

Coming inHavana

Page 65: 2013 05-fite-club-working-models-cloud-growing-up

Wrap-Up

Declarative — AWS CloudFormation and OpenStack HeatProcedural — Apache Whirr and Cloudsoft BrooklynOpenStack Summit — Red Hat, RAX, IBM, OASIS TOSCA and CAMPDSLs in Progress — OpenStack Heat and CAMP PDP

It’s about the apps.Come get involved!

Page 66: 2013 05-fite-club-working-models-cloud-growing-up

Thank [email protected]

@ahtweetin