0
Working Models ...or how cloud is growing up and thinking about applicationsAlex Heneveld / @ahtweetinFite Club, 22 May 2013
Cloud
CloudIt’s not just about VM’s...
It’s about storage, networking, maas, ...It’s not just about VM’s...Cloud
It’s not just about VM’s...Ultimately it’s about applications.Cloud
Declarative — AWS CloudFormation and OpenStack HeatProcedural — Apache Whirr and Cloudsoft BrooklynOpenStack Summit — Red ...
AWS CloudFormation{"AWSTemplateFormatVersion" : "2010-09-09","Description" : "WordPress is web software …","Parameters" : ...
{"AWSTemplateFormatVersion" : "2010-09-09","Description" : "WordPress is web software …","Parameters" : {"KeyName" : {"Des...
"Resources" : {"WebServer": {"Type": "AWS::EC2::Instance"ParametersMappings(config metadata)WaitConditions &WaitHandles(orc...
"Resources" : {"WebServer": {"Type": "AWS::EC2::Instance"AWS CloudFormation
"Resources" : {"WebServer": {"Type": "AWS::EC2::Instance"AWS CloudFormation
"Type": "AWS::AutoScaling::AutoScalingGroup""Type": "AWS::EC2::EIP""Resources" : {"WebServer": {"Type": "AWS::EC2::Instanc...
"Type": "AWS::AutoScaling::AutoScalingGroup""Type": "AWS::EC2::EIP""Resources" : {"WebServer": {"Type": "AWS::EC2::Instanc...
— Limited to AWS cloud— Limited to AWS concepts— Cumbersome to write— Limited dependency injectionNice, but:AWS CloudForma...
— CloudFormation clone— Targetting OpenStack resources and AWS compatibility— Adds YAML support (comments and easier)— Mul...
(AWS CloudFormation){"AWSTemplateFormatVersion" : "2010-09-09","Description" : "WordPress is web software …","Parameters" ...
OpenStack HeatHeatTemplateFormatVersion: 2012-12-12Description: WordPress is web software ...Parameters:  KeyName:Descript...
— CloudFormation clone— Targetting OpenStack resources and AWS compatibility— Adds YAML support (comments and easier)— Mul...
OpenStack Heat— Still limited to selected clouds— Still limited in concepts— Only slightly less cumbersome to write— Very ...
Procedural Approach10 INPUT "What app do you like? ", A$20 INPUT "What cloud do you like? ", C$30 GOSUB 10040 END100 REM d...
Apache Whirrprovisioninstallconfiguremanage— Apache top level project— Deploy multi-node applications— Hadoop, Hama, Mahout...
$ whirr launch-cluster --cluster-name=hbase --instance-templates=1 hbase-master,6 hbase-regionserver— Define topologies dec...
— Add new roles, configuration,constraints and wiring procedurallyspec = new ClusterSpec();spec.setProvider("cloudservers-u...
— Limited parameterisation— Defining new roles requires coding— Strict phases limit applicabilityBut...— Composable to one ...
Brooklyn & Cloudsoft AMP• Brooklyn = Apache-licensed OSS• AMP = Enterprise + Support• Deployment and Management• Hierarchi...
BrooklynContention ManagementCustom PaaSBig Data
Region #1PresentationGeographicDNS LoadBalancerTomcatProcessing (Monterey)Data (Gemfire)TomcatTomcatRegion #2PresentationLo...
Data (Gemfire)Processing (Monterey)Region #1PresentationGeographicDNSLoadBalancerTomcatProcessing (Monterey) Data (Gemfire)T...
Processing (Monterey) Data (Gemfire)Autonomic Hierarchical ManagementGeographicDNSPresentationLoadBalancerTomcat TomcatWeba...
Processing (Monterey) Data (Gemfire)Typed Blueprintsreplace groups with PaaS tools andhave the same sensors and policiesGeo...
Data (Gemfire)Data (Gemfire)Processing (Monterey)PresentationGeographicDNSLoadBalancerTomcatProcessing (Monterey)TomcatTomca...
Data (Gemfire)Data (Gemfire)Processing (Monterey)PresentationGeographicDNSLoadBalancerTomcatProcessing (Monterey)TomcatTomca...
public class MyWebCluster extends AbstractApplicationimplements MyWebClusterConstants {public void init() {MySqlNode mysql...
public class MyWebCluster extends AbstractApplicationimplements MyWebClusterConstants {public void init() {MySqlNode mysql...
Brooklyn— Defining blueprints requires codingBut...— Easily parameterisable blueprints— Composable and substitutable— Porta...
Applications— Components (IaaS-resources)— DeclarativeInfrastructure— Procedural— Extensible (new resources)— Composable (...
Heat in GrizzlyManagementComposableDeclarativeComponentsExtensiblePortablethanks largely to Red Hat
Portland Design Summit — HeatManagementComposableDeclarativePortableComponentsExtensible
Portland Design Summit — HeatManagementComposableDeclarativePortableComponentsExtensiblelots of new blood (interest and id...
Portland Design Summit — HeatComposableDeclarativeComponentsManagementPortableEase-of-UseExtensibleingredients from Brookl...
Portland Design Summit — HeatComposableDeclarativeComponentsManagementPortableExtensibleAuto-wiringa special ingredient fr...
Portland Design Summit — HeatComposableDeclarativeComponentsManagementExtensibleAuto-wiringRelationshipsEase-of-UsePortabl...
ManagementComposableDeclarativeComponentsAuto-wiringRelationshipsExtensibleEase-of-UsePortablePortland Design Summit — Heat
Heat in HavanaManagementComposableDeclarativeComponentsAuto-wiringRelationshipsExtensibleEase-of-UsePortableConcurrentDist...
Heat in HavanaManagementComposableDeclarativeComponentsAuto-wiringRelationshipsExtensibleEase-of-UsePortableConcurrentDist...
OasisTOSCAhttp://www.oasis-open.org/committees/tosca/Topology and Orchestration Specification for Cloud Applications
Modeling Topologies with TOSCAService  Topologies  are  described  using  the  TOSCA  “Meta-model”:Artifacts Describe Ins...
<Definitions id="PayrollDefinitions" targetNamespace="http://www.example.com/ste"xmlns:pay="http://www.example.com/ste/Typ...
— Fails the“ease-of-use”test— Does not standardise an APIBut...— Powerful and broad modelling coverage— Workflow, locations...
OasisCAMPwww.cloudspecs.orgCloud Application Management Platformhttp://www.oasis-open.org/committees/camp/
CAMP: Objectives and Non-Objectives— Software— an Orchestration Spec— a Modelling SystemBut CAMP is NOT— a REST API— for D...
CAMP: Key ConceptsClientsRESTPlatformPlatformComponentTemplateRequirementTypePlatformComponentTemplatePlatformComponentTem...
Clients PlatformPlatformComponentTemplateRequirementTypePlatformComponentTemplatePlatformComponentTemplateRequirementTypeA...
App ComponentTypePDP = PlatformDeployment Plan(blueprint)CAMP: Key ConceptsClientsRESTPlatformPlatformComponentTemplateReq...
App ComponentTemplateClientsRESTPlatformPlatformComponentTemplateRequirementTypePlatformComponentTemplatePlatformComponent...
CAMP: Key ConceptsClientsRESTPlatformPlatformComponentTemplateRequirementTypePlatformComponentTemplatePlatformComponentTem...
AssemblyTemplate(blueprint)CAMP: Key ConceptsClientsRESTPlatformPlatformComponentTemplateRequirementTypePlatformComponentT...
AssemblyTemplate(blueprint)CAMP: Key ConceptsClientsRESTPlatformPlatformComponentTemplateRequirementTypePlatformComponentT...
Assembly(blueprint) PlatformComponentPlatformComponentApp ComponentAssemblyTemplate(blueprint)CAMP: Key ConceptsClientsRES...
Assembly(blueprint) PlatformComponentPlatformComponentApp ComponentCAMP: Key ConceptsClientsRESTPlatform— DeploymentAssemb...
CAMP— depends on orchestrations supporting this— wants standardised requirement and component types— still needs a nice DS...
CAMP: PDP/Blueprint DSL (work in progress)ParametersComponentsRequirementsFunctionsparameters & sensorsOutputs**
CAMP: PDP/Blueprint DSL (work in progress)ParametersFunctionsparameters & sensorsOutputs**components:my_app:type: WARconte...
Mappings(config metadata)WaitConditions &WaitHandles(orchestration)Parameterscomponents:my_instance:type: serverram: 2048mr...
Wrap-UpDeclarative — AWS CloudFormation and OpenStack HeatProcedural — Apache Whirr and Cloudsoft BrooklynOpenStack Summit...
Thank you.alex.heneveld@cloudsoftcorp.com@ahtweetin
Upcoming SlideShare
Loading in...5
×

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

297

Published on

Published in: Technology, Sports
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
297
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "2013 05-fite-club-working-models-cloud-growing-up"

  1. 1. Working Models ...or how cloud is growing up and thinking about applicationsAlex Heneveld / @ahtweetinFite Club, 22 May 2013
  2. 2. Cloud
  3. 3. CloudIt’s not just about VM’s...
  4. 4. It’s about storage, networking, maas, ...It’s not just about VM’s...Cloud
  5. 5. It’s not just about VM’s...Ultimately it’s about applications.Cloud
  6. 6. 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 PDPUltimately it’s about applications.
  7. 7. 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" : [],...
  8. 8. {"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
  9. 9. "Resources" : {"WebServer": {"Type": "AWS::EC2::Instance"ParametersMappings(config metadata)WaitConditions &WaitHandles(orchestration)OutputsFunctionsAWS CloudFormation
  10. 10. "Resources" : {"WebServer": {"Type": "AWS::EC2::Instance"AWS CloudFormation
  11. 11. "Resources" : {"WebServer": {"Type": "AWS::EC2::Instance"AWS CloudFormation
  12. 12. "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
  13. 13. "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 CloudFormationComposition!
  14. 14. — Limited to AWS cloud— Limited to AWS concepts— Cumbersome to write— Limited dependency injectionNice, but:AWS CloudFormation
  15. 15. — CloudFormation clone— Targetting OpenStack resources and AWS compatibility— Adds YAML support (comments and easier)— Multi-cloud support using Apache DeltacloudOpenStack Heat
  16. 16. (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
  17. 17. OpenStack HeatHeatTemplateFormatVersion: 2012-12-12Description: WordPress is web software ...Parameters:  KeyName:Description: Name of an existing EC2 KeyPair for SSH accessType: 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: []...
  18. 18. — CloudFormation clone— Targetting OpenStack resources and AWS compatibility— Adds YAML support (comments and easier)— Multi-cloud support using Apache DeltacloudOpenStack HeatAvailable NOW in Grizzly!
  19. 19. OpenStack Heat— Still limited to selected clouds— Still limited in concepts— Only slightly less cumbersome to write— Very limited dependency injectionBut...
  20. 20. Procedural Approach10 INPUT "What app do you like? ", A$20 INPUT "What cloud do you like? ", C$30 GOSUB 10040 END100 REM deploy C$ to A$110 RETURN
  21. 21. Apache Whirrprovisioninstallconfiguremanage— 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
  22. 22. $ whirr launch-cluster --cluster-name=hbase --instance-templates=1 hbase-master,6 hbase-regionserver— Define topologies declarativelyApache Whirr
  23. 23. — Add new roles, configuration,constraints and wiring procedurallyspec = 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
  24. 24. — Limited parameterisation— Defining new roles requires coding— Strict phases limit applicabilityBut...— Composable to one dimension— Portable locations support— Pluggable with Chef, Puppet, and moreApache Whirr
  25. 25. Brooklyn & Cloudsoft AMP• Brooklyn = Apache-licensed OSS• AMP = Enterprise + Support• Deployment and Management• Hierarchical Autonomic Policies
  26. 26. BrooklynContention ManagementCustom PaaSBig Data
  27. 27. Region #1PresentationGeographicDNS LoadBalancerTomcatProcessing (Monterey)Data (Gemfire)TomcatTomcatRegion #2PresentationLoadBalancerTomcatProcessing (Monterey)Data (Gemfire)TomcatTomcatProvisioningMonitoringManagementBrooklyn: Example, Physical Architecture
  28. 28. Data (Gemfire)Processing (Monterey)Region #1PresentationGeographicDNSLoadBalancerTomcatProcessing (Monterey) Data (Gemfire)TomcatTomcatRegion #2PresentationLoadBalancerTomcatProcessing (Monterey) Data (Gemfire)TomcatTomcatProvisioning Monitoring ManagementWebappFabricTomcatNodesNginxNodeLoadBalancedWebAppClusterTomcatNodesNginxNodeLoadBalancedWebAppClusterWebappGeoDnsFabric MontereyFabricMontereyClusterMontereyNodesMontereyNodesMontereySegmentsGemfireFabricMontereyClusterGemfireClusterGemfireClusterGeoscalingBrooklynand friendsGemfireNodesGemfireNodesBrooklyn: Example, Logical Architecture
  29. 29. Processing (Monterey) Data (Gemfire)Autonomic Hierarchical ManagementGeographicDNSPresentationLoadBalancerTomcat TomcatWebappFabricLoadBalancedWebAppClusterCluster Cluster Cluster ClusterMyApplicationPolicyfollow-the-{sun,moon,X}PolicyresizerPolicyrestart-2xPolicyBrooklynand friendsWebappGeoDnsFabric MontereyFabric GemfireFabricBrooklyn
  30. 30. Processing (Monterey) Data (Gemfire)Typed Blueprintsreplace groups with PaaS tools andhave the same sensors and policiesGeographicDNSPresentationWebappFabricPaaSCluster Cluster Service ClusterMyApplicationBrooklynand friendsWebappGeoDnsFabric MontereyFabric GemfireFabricBrooklynPolicyfollow-the-{sun,moon,X}PolicyresizerPolicyrestart-2xPolicy
  31. 31. Data (Gemfire)Data (Gemfire)Processing (Monterey)PresentationGeographicDNSLoadBalancerTomcatProcessing (Monterey)TomcatTomcatPresentationLoadBalancerTomcatProcessing (Monterey) Data (Gemfire)TomcatTomcatProvisioning Monitoring ManagementWebappFabricTomcatNodesNginxNodeLoadBalancedWebAppClusterTomcatNodesNginxNodeLoadBalancedWebAppClusterWebappGeoDnsFabric MontereyFabricMontereyClusterMontereyNodesMontereyNodesMontereySegmentsGemfireFabricMontereyClusterGemfireClusterGemfireClusterGeoscalingGemfireNodesGemfireNodes fixed IP&cBrooklyn: Run in Many Locations
  32. 32. Data (Gemfire)Data (Gemfire)Processing (Monterey)PresentationGeographicDNSLoadBalancerTomcatProcessing (Monterey)TomcatTomcatPresentationLoadBalancerTomcatProcessing (Monterey) Data (Gemfire)TomcatTomcatProvisioning Monitoring ManagementWebappFabricTomcatNodesNginxNodeLoadBalancedWebAppClusterTomcatNodesNginxNodeLoadBalancedWebAppClusterWebappGeoDnsFabric MontereyFabricMontereyClusterMontereyNodesMontereyNodesMontereySegmentsGemfireFabricMontereyClusterGemfireClusterGemfireClusterGeoscalingGemfireNodesGemfireNodesPoliciesPoliciesWARfilecode schemacredentialsGeoDNSconfig actordescriptorRegionsBrooklyn: finally { Simplify }
  33. 33. public class MyWebCluster extends AbstractApplicationimplements 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
  34. 34. public class MyWebCluster extends AbstractApplicationimplements 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
  35. 35. Brooklyn— Defining blueprints requires codingBut...— Easily parameterisable blueprints— Composable and substitutable— Portable and powerful locations support— Pluggable with VM images, Heat, Chef, more
  36. 36. Applications— Components (IaaS-resources)— DeclarativeInfrastructure— Procedural— Extensible (new resources)— Composable (stacks)— Management— Portable (hybrid, metal)
  37. 37. Heat in GrizzlyManagementComposableDeclarativeComponentsExtensiblePortablethanks largely to Red Hat
  38. 38. Portland Design Summit — HeatManagementComposableDeclarativePortableComponentsExtensible
  39. 39. Portland Design Summit — HeatManagementComposableDeclarativePortableComponentsExtensiblelots of new blood (interest and ideas)
  40. 40. Portland Design Summit — HeatComposableDeclarativeComponentsManagementPortableEase-of-UseExtensibleingredients from Brooklyn, Whirr, OoO and others
  41. 41. Portland Design Summit — HeatComposableDeclarativeComponentsManagementPortableExtensibleAuto-wiringa special ingredient from RackspaceEase-of-Use
  42. 42. Portland Design Summit — HeatComposableDeclarativeComponentsManagementExtensibleAuto-wiringRelationshipsEase-of-UsePortablea special ingredient from IBM
  43. 43. ManagementComposableDeclarativeComponentsAuto-wiringRelationshipsExtensibleEase-of-UsePortablePortland Design Summit — Heat
  44. 44. Heat in HavanaManagementComposableDeclarativeComponentsAuto-wiringRelationshipsExtensibleEase-of-UsePortableConcurrentDistributedResilientFunctions / DI
  45. 45. Heat in HavanaManagementComposableDeclarativeComponentsAuto-wiringRelationshipsExtensibleEase-of-UsePortableConcurrentDistributedResilientFunctions / DIStandards ?
  46. 46. OasisTOSCAhttp://www.oasis-open.org/committees/tosca/Topology and Orchestration Specification for Cloud Applications
  47. 47. Modeling Topologies with TOSCAService  Topologies  are  described  using  the  TOSCA  “Meta-model”:Artifacts Describe Installables and Executables required toinstantiate and manage a service. Currently, theyinclude: 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 withall dependent artifacts, as a TOSCA Cloud Service Archive (CSAR)Service Templates Group the nodes and relationships that make upa  service’s  topology– Allowing modeling of sub-topologies Service Templates “look  like  nodes” enabling: Composition of applications from one or moreservice templates Substitution of abstract Node types withavailable service templates of the same typeNodes Represent Components of an application or serviceand 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 managementfunctions for the node– e.g. deploy(), start(), stop(), connect(), etc. Export their dependencies on other nodesas Requirement and CapabilitiesRelationships Represent the logical Relationships betweennodes– e.g.  “hostedOn”,  “connectsTo”,  etc. Describes the valid Source and Target nodes theyare designed to couple– e.g. source  “web application”  node  is  designed  to  “connectTo”  a  target  “database”  node Have their own Properties and ConstraintsSlide origin: IBMTOSCA: Modelling Topologies
  48. 48. <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
  49. 49. — Fails the“ease-of-use”test— Does not standardise an APIBut...— Powerful and broad modelling coverage— Workflow, locations, substitution— Relatively matureTOSCA
  50. 50. OasisCAMPwww.cloudspecs.orgCloud Application Management Platformhttp://www.oasis-open.org/committees/camp/
  51. 51. CAMP: Objectives and Non-Objectives— Software— an Orchestration Spec— a Modelling SystemBut CAMP is NOT— a REST API— for Deployment and Management— of ApplicationsIt provides a flexible way to use many platforms.Interoperability.
  52. 52. CAMP: Key ConceptsClientsRESTPlatformPlatformComponentTemplateRequirementTypePlatformComponentTemplatePlatformComponentTemplateRequirementTypeApp ComponentTypeApp ComponentType
  53. 53. Clients PlatformPlatformComponentTemplateRequirementTypePlatformComponentTemplatePlatformComponentTemplateRequirementTypeApp ComponentTypeApp ComponentTypePDP = PlatformDeployment Plan(blueprint)— Deployment PlanCAMP: Key ConceptsDSL & REST
  54. 54. App ComponentTypePDP = PlatformDeployment Plan(blueprint)CAMP: Key ConceptsClientsRESTPlatformPlatformComponentTemplateRequirementTypePlatformComponentTemplatePlatformComponentTemplateRequirementTypeApp ComponentType— Creating TemplatesPOST
  55. 55. App ComponentTemplateClientsRESTPlatformPlatformComponentTemplateRequirementTypePlatformComponentTemplatePlatformComponentTemplateRequirementTypeApp ComponentTypeApp ComponentType— ResolutionCAMP: Key ConceptsAssemblyTemplate(blueprint)PDP = PlatformDeployment Plan(blueprint)POST
  56. 56. CAMP: Key ConceptsClientsRESTPlatformPlatformComponentTemplateRequirementTypePlatformComponentTemplatePlatformComponentTemplateRequirementTypeApp ComponentTypeApp ComponentTypeApp ComponentTemplateRequirementTypePlatformComponentTemplateRequirementTypeApp ComponentType— ResolutionAssemblyTemplate(blueprint)POST
  57. 57. AssemblyTemplate(blueprint)CAMP: Key ConceptsClientsRESTPlatformPlatformComponentTemplateRequirementTypePlatformComponentTemplatePlatformComponentTemplateRequirementTypeApp ComponentTypeApp ComponentTypeApp ComponentTemplate— Resolution200AssemblyTemplatePOST
  58. 58. AssemblyTemplate(blueprint)CAMP: Key ConceptsClientsRESTPlatformPlatformComponentTemplateRequirementTypePlatformComponentTemplatePlatformComponentTemplateRequirementTypeApp ComponentTypeApp ComponentTypeApp ComponentTemplate— Deployment
  59. 59. Assembly(blueprint) PlatformComponentPlatformComponentApp ComponentAssemblyTemplate(blueprint)CAMP: Key ConceptsClientsRESTPlatformPlatformComponentTemplateRequirementTypeRequirementTypeApp ComponentTypeApp ComponentTypeApp ComponentTemplate— DeploymentPOSTPlatformComponentTemplatePlatformComponentTemplate
  60. 60. Assembly(blueprint) PlatformComponentPlatformComponentApp ComponentCAMP: Key ConceptsClientsRESTPlatform— DeploymentAssembly(blueprint) PlatformComponentPlatformComponentApp ComponentAssemblyTemplate(blueprint)PlatformComponentTemplateApp ComponentTemplatePlatformComponentTemplatePOST200Assembly
  61. 61. CAMP— depends on orchestrations supporting this— wants standardised requirement and component types— still needs a nice DSLBut...— all very general— designed to map on to a wide range of orchestrationsPaaS, TOSCA, Brooklyn, Heat— OSS code in progressgithub.com/brooklyncentral/camp-server
  62. 62. CAMP: PDP/Blueprint DSL (work in progress)ParametersComponentsRequirementsFunctionsparameters & sensorsOutputs**
  63. 63. CAMP: PDP/Blueprint DSL (work in progress)ParametersFunctionsparameters & sensorsOutputs**components:my_app:type: WARcontent: { href: hello.war }requirements:hosted_on:javaVersion: [1.7,)
  64. 64. Mappings(config metadata)WaitConditions &WaitHandles(orchestration)Parameterscomponents:my_instance:type: serverram: 2048mrequires:connects_to:target: my_databaseHeat: New HOT DSL (also work in progress)FunctionsOutputsHeatOrchestrationTemplateComing inHavana
  65. 65. Wrap-UpDeclarative — 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 PDPIt’s about the apps.Come get involved!
  66. 66. Thank you.alex.heneveld@cloudsoftcorp.com@ahtweetin
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×