5. Itās not just about VMās...
Ultimately itās about applications.
Cloud
6. Declarative ā AWS CloudFormation and OpenStack Heat
Procedural ā Apache Whirr and Cloudsoft Brooklyn
OpenStack Summit ā Red Hat, RAX, IBM, OASIS TOSCA and CAMP
DSLs in Progress ā OpenStack Heat and CAMP PDP
Ultimately itās about applications.
18. ā 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!
19. OpenStack Heat
ā Still limited to selected clouds
ā Still limited in concepts
ā Only slightly less cumbersome to write
ā Very limited dependency injection
But...
20. Procedural Approach
10 INPUT "What app do you like? ", A$
20 INPUT "What cloud do you like? ", C$
30 GOSUB 100
40 END
100 REM deploy C$ to A$
110 RETURN
21. Apache Whirr
provision
install
conļ¬gure
manage
ā Apache top level project
ā Deploy multi-node applications
ā Hadoop, Hama, Mahout, web,
Cassandra & many more
ā Deļ¬ne topologies declaratively
ā Add new roles, conļ¬guration,
constraints and wiring procedurally
23. ā Add new roles, conļ¬guration,
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
24. ā Limited parameterisation
ā Deļ¬ning new roles requires coding
ā Strict phases limit applicability
But...
ā Composable to one dimension
ā Portable locations support
ā Pluggable with Chef, Puppet, and more
Apache Whirr
30. Processing (Monterey) Data (Gemļ¬re)
Typed Blueprints
replace groups with PaaS tools and
have the same sensors and policies
Geographic
DNS
Presentation
WebappFabric
PaaS
Cluster Cluster Service Cluster
MyApplication
Brooklyn
and friends
WebappGeoDnsFabric MontereyFabric GemfireFabric
Brooklyn
Policy
follow-the-
{sun,moon,X}
Policy
resizer
Policy
restart-2x
Policy
31. Data (Gemļ¬re)
Data (Gemļ¬re)
Processing (Monterey)
Presentation
Geographic
DNS
Load
Balancer
Tomcat
Processing (Monterey)
Tomcat
Tomcat
Presentation
Load
Balancer
Tomcat
Processing (Monterey) Data (Gemļ¬re)
Tomcat
Tomcat
Provisioning Monitoring Management
WebappFabric
TomcatNodes
NginxNode
LoadBalancedWebAppCluster
TomcatNodes
NginxNode
LoadBalancedWebAppCluster
WebappGeoDnsFabric MontereyFabric
MontereyCluster
MontereyNodes
MontereyNodes
MontereySegments
GemfireFabric
MontereyCluster
GemfireCluster
GemfireCluster
Geoscaling
GemfireNodes
GemfireNodes ļ¬xed IP
&c
Brooklyn: Run in Many Locations
32. Data (Gemļ¬re)
Data (Gemļ¬re)
Processing (Monterey)
Presentation
Geographic
DNS
Load
Balancer
Tomcat
Processing (Monterey)
Tomcat
Tomcat
Presentation
Load
Balancer
Tomcat
Processing (Monterey) Data (Gemļ¬re)
Tomcat
Tomcat
Provisioning Monitoring Management
WebappFabric
TomcatNodes
NginxNode
LoadBalancedWebAppCluster
TomcatNodes
NginxNode
LoadBalancedWebAppCluster
WebappGeoDnsFabric MontereyFabric
MontereyCluster
MontereyNodes
MontereyNodes
MontereySegments
GemfireFabric
MontereyCluster
GemfireCluster
GemfireCluster
Geoscaling
GemfireNodes
GemfireNodes
Policies
Policies
WAR
ļ¬le
code schema
credentials
GeoDNS
conļ¬g actor
descriptor
Regions
Brooklyn: ļ¬nally { Simplify }
33. 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
34. 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
35. Brooklyn
ā Deļ¬ning blueprints requires coding
But...
ā Easily parameterisable blueprints
ā Composable and substitutable
ā Portable and powerful locations support
ā Pluggable with VM images, Heat, Chef, more
39. Portland Design Summit āĀ Heat
Management
Composable
Declarative
Portable
Components
Extensible
lots of new blood (interest and ideas)
40. Portland Design Summit āĀ Heat
Composable
Declarative
Components
Management
Portable
Ease-of-Use
Extensible
ingredients from Brooklyn, Whirr, OoO and others
41. Portland Design Summit āĀ Heat
Composable
Declarative
Components
Management
Portable
Extensible
Auto-wiring
a special ingredient from Rackspace
Ease-of-Use
42. Portland Design Summit āĀ Heat
Composable
Declarative
Components
Management
Extensible
Auto-wiring
Relationships
Ease-of-Use
Portable
a special ingredient from IBM
47. 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
49. ā Fails theāease-of-useātest
ā Does not standardise an API
But...
ā Powerful and broad modelling coverage
ā Workļ¬ow, locations, substitution
ā Relatively mature
TOSCA
51. 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 ļ¬exible way to use many platforms.
Interoperability.
61. 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 orchestrations
PaaS, TOSCA, Brooklyn, Heat
ā OSS code in progress
github.com/brooklyncentral/camp-server
65. Wrap-Up
Declarative ā AWS CloudFormation and OpenStack Heat
Procedural ā Apache Whirr and Cloudsoft Brooklyn
OpenStack Summit ā Red Hat, RAX, IBM, OASIS TOSCA and CAMP
DSLs in Progress ā OpenStack Heat and CAMP PDP
Itās about the apps.
Come get involved!