Quality Control in a Cloudy World CloudStack Collaboration Conference
Oct 19, 2014
Quality Control in a Cloudy World CloudStack Collaboration Conference
Cloud is cool but …
• How do you determine whether a cloud is suitable for your workload?
• How do you validate that it works as advertised?
• How do you ensure no short cuts have been taken implementing it?
• Whatever your particular cloud strategy – private, public or hybrid – these are serious questions
• Ones that you should address before you step off the kerb
• It’s all about the application, stoopid!!!
30/11/2012 © 2012 Cloudsoft Corporation Page: 2
Commercial
• Cloudsoft’s Application Management Platform (AMP) … • Supported version of the brooklyn open source project • See http://brooklyncentral.github.com/
• Automates Application Deployment and Con"guration • Implementation details are abstracted into reusable blueprints • Streamlines and enhances existing tooling
• Optimizes Application Runtime Management • Driven by your technical and business policies • Autonomic control plane
• Ensures Application Portability • Frees the business to exploit a multi-provider strategy • Avoids vendor lock-in
30/11/2012 © 2012 Cloudsoft Corporation Page: 3
Brooklyn Key Concepts
• Entity • Exposes sensor / effector interface plus where applicable pluggable
implementation
• Sensors and Effectors • Reuse existing metrics and APIs for non-intrusive integration and
management
• Topology • Entity wiring, groupings and management hierarchy
• Policy • Governs application’s behaviour e.g. horizontal scaling
• Blueprint • Captures an application’s initial topology plus policies that will change this
over time – CloudFormation and vApp templates on steroids
• Location • Target environment for blueprint instantiation
30/11/2012 Strictly Con"dential © 2012 Cloudsoft Corporation Page: 4
30/11/2012 Page: 5 © 2012 Cloudsoft Corporation
control plane
Monitor
Analyse
Execute
Plan
Policies
Autonomic Management (M-A-P-E)
sensors effectors
sensors gather metrics, events & noti!cations
effectors make changes
Web Servers
Database Servers
Application Servers
Load Balancers Web Servers
Message Brokers Caching ID Managers
etc.
Application Components
30/11/2012 © 2012 Cloudsoft Corporation Page: 6
Creating a Brooklyn Blueprint
In this walk through we show how easy it is to design an elastic multi-tier web application using brooklyn
Once we are happy that this application works we can then convert it into a version controlled service
blueprint and add this to our service catalog
When selected in the catalog all the user has to do is provide the appropriate WAR "le and database and
specify the target cloud and AMP will do the rest
MySQL
MyWebCluster – Multi-Tier Application
NGINX
ControlledDynamicWebAppCluster
JBoss7Server JBoss7Server … DynamicWebAppCluster
MyWebCluster
30/11/2012 © 2012 Cloudsoft Corporation Page: 7
MyWebCluster – Topology
30/11/2012 © 2012 Cloudsoft Corporation Page: 8
…
MyWebCluster
ControlledDynamicWebAppCluster
DynamicWebAppCluster
JBoss7Server
NGINX
MySQL
JBoss7Server
MyWebCluster – Blueprint
30/11/2012 © 2012 Cloudsoft Corporation Page: 9
Auto Scaler Policy [targets]
…
MyWebCluster
ControlledDynamicWebAppCluster
DynamicWebAppCluster
JBoss7Server
NGINX
MySQL
JBoss7Server
30/11/2012 © 2012 Cloudsoft Corporation Page: 10
De"ne New Blueprint
public class MyWebCluster extends AbstractApplication implements MyWebClusterConstants { // TODO build the application}
30/11/2012 © 2012 Cloudsoft Corporation Page: 11
Create App Tier
public class MyWebCluster extends AbstractApplication implements MyWebClusterConstants { def web = new JBoss7Server(this, war: WAR_PATH); { web.configure(httpPort: "8080+"); }}
30/11/2012 © 2012 Cloudsoft Corporation Page: 12
Add DB Tier
public class MyWebCluster extends AbstractApplication implements MyWebClusterConstants { def web = new JBoss7Server(this, war: WAR_PATH); MySqlNode mysql = new MySqlNode(this, creationScriptUrl: DB_SETUP_SQL_URL); { web.configure(httpPort: "8080+"); }}
30/11/2012 © 2012 Cloudsoft Corporation Page: 13
Wire up App and DB Tiers
public class MyWebCluster extends AbstractApplication implements MyWebClusterConstants { def web = new JBoss7Server(this, war: WAR_PATH); MySqlNode mysql = new MySqlNode(this, creationScriptUrl: DB_SETUP_SQL_URL); { web.configure(httpPort: "8080+"). configure(javaSysProp("brooklyn.example.db.url"), valueWhenAttributeReady(mysql, MySqlNode.MYSQL_URL, this.&makeJdbcUrl)); }}
30/11/2012 © 2012 Cloudsoft Corporation Page: 14
Introduce Elasticity in App Tier
public class MyWebCluster extends AbstractApplication implements MyWebClusterConstants { def web = new ControlledDynamicWebAppCluster(this, war: WAR_PATH); MySqlNode mysql = new MySqlNode(this, creationScriptUrl: DB_SETUP_SQL_URL); { web.factory.configure(httpPort: "8080+"). configure(javaSysProp("brooklyn.example.db.url"), valueWhenAttributeReady(mysql, MySqlNode.MYSQL_URL, this.&makeJdbcUrl)); }}
30/11/2012 © 2012 Cloudsoft Corporation Page: 15
Manage Elasticity in App Tier
public class MyWebCluster extends AbstractApplication implements MyWebClusterConstants { def web = new ControlledDynamicWebAppCluster(this, war: WAR_PATH); MySqlNode mysql = new MySqlNode(this, creationScriptUrl: DB_SETUP_SQL_URL); { web.factory.configure(httpPort: "8080+"). configure(javaSysProp("brooklyn.example.db.url"), valueWhenAttributeReady(mysql, MySqlNode.MYSQL_URL, this.&makeJdbcUrl)); web.cluster.addPolicy( new AutoscalerPolicy(DynamicWebAppCluster.AVERAGE_REQUESTS_PER_SECOND). setSizeRange(1, 5). setMetricRange(10, 100)); }}
MyWebCluster – [Your] Implementation
30/11/2012 © 2012 Cloudsoft Corporation Page: 16
Auto Scaler Policy [targets]
… JBoss7Server
NGINX
MySQL
JBoss7Server
…
MyWebCluster
ControlledDynamicWebAppCluster
DynamicWebAppCluster
JBoss7Server
NGINX
MySQL
JBoss7Server
MyWebCluster – Instantiation
30/11/2012 © 2012 Cloudsoft Corporation Page: 17
Auto Scaler Policy [targets]
+ Location
OS
OS
OS
… OS
… JBoss7Server
NGINX
MySQL
JBoss7Server
…
MyWebCluster
ControlledDynamicWebAppCluster
DynamicWebAppCluster
JBoss7Server
NGINX
MySQL
JBoss7Server
Test New Blueprint
30/11/2012 © 2012 Cloudsoft Corporation Page: 18
Thank you for your time {aled,alex,duncan}@cloudsoftcorp.com