Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Quality control in a cloudy world

772 views

Published on

Presentation given with co-presenter Alex Heneveld at the Cloudstack Collaboration Conference, Nov 30, 2012

  • Be the first to comment

  • Be the first to like this

Quality control in a cloudy world

  1. 1. Quality Control in a Cloudy World CloudStack Collaboration Conference
  2. 2. 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!!!© 2012 Cloudsoft Corporation 30/11/2012 Page: 2
  3. 3. Commercial•  Cloudsoft’s Application Management Platform (AMP) … •  Supported version of the brooklyn open source project •  See http://brooklyncentral.github.com/•  Automates Application Deployment and Configuration •  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© 2012 Cloudsoft Corporation 30/11/2012 Page: 3
  4. 4. 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 instantiationStrictly Confidential © 2012 Cloudsoft Corporation 30/11/2012 Page: 4
  5. 5. Autonomic Management (M-A-P-E) control plane Analyse Plan Monitor Policies Execute sensors effectors sensors gather Application Components effectors metrics, events make changes & notifications Web Servers Application Servers Caching ID Managers Message Brokers Load Balancers Database Servers Web Servers etc.© 2012 Cloudsoft Corporation 30/11/2012 Page: 5
  6. 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 file and database and specify the target cloud and AMP will do the rest© 2012 Cloudsoft Corporation 30/11/2012 Page: 6
  7. 7. MyWebCluster – Multi-Tier Application MyWebCluster ControlledDynamicWebAppCluster NGINX DynamicWebAppCluster JBoss7Server … JBoss7Server MySQL© 2012 Cloudsoft Corporation 30/11/2012 Page: 7
  8. 8. MyWebCluster – Topology MyWebCluster MySQL ControlledDynamicWebAppCluster NGINX DynamicWebAppCluster JBoss7Server … JBoss7Server© 2012 Cloudsoft Corporation 30/11/2012 Page: 8
  9. 9. MyWebCluster – Blueprint MyWebCluster MySQL ControlledDynamicWebAppCluster [targets] Auto Scaler Policy NGINX DynamicWebAppCluster JBoss7Server … JBoss7Server© 2012 Cloudsoft Corporation 30/11/2012 Page: 9
  10. 10. Define New Blueprint public class MyWebCluster extends AbstractApplication 
 implements MyWebClusterConstants { // TODO build the application } © 2012 Cloudsoft Corporation 30/11/2012 Page: 10
  11. 11. Create App Tier public class MyWebCluster extends AbstractApplication 
 implements MyWebClusterConstants { def web = new JBoss7Server(this, war: WAR_PATH); { web.configure(httpPort: "8080+"); } } © 2012 Cloudsoft Corporation 30/11/2012 Page: 11
  12. 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+"); } } © 2012 Cloudsoft Corporation 30/11/2012 Page: 12
  13. 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)); } } © 2012 Cloudsoft Corporation 30/11/2012 Page: 13
  14. 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)); } } © 2012 Cloudsoft Corporation 30/11/2012 Page: 14
  15. 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)); } } © 2012 Cloudsoft Corporation 30/11/2012 Page: 15
  16. 16. MyWebCluster – [Your] Implementation MyWebCluster MySQL ControlledDynamicWebAppCluster MySQL [targets] Auto Scaler Policy NGINX DynamicWebAppCluster NGINX JBoss7Server … JBoss7Server JBoss7Server … JBoss7Server© 2012 Cloudsoft Corporation 30/11/2012 Page: 16
  17. 17. MyWebCluster – Instantiation Location + MyWebCluster MySQL ControlledDynamicWebAppCluster MySQL OS [targets] Auto Scaler Policy NGINX DynamicWebAppCluster NGINX OS JBoss7Server … JBoss7Server JBoss7Server … JBoss7Server OS … OS© 2012 Cloudsoft Corporation 30/11/2012 Page: 17
  18. 18. Test New Blueprint© 2012 Cloudsoft Corporation 30/11/2012 Page: 18
  19. 19. Thank you for your time{aled,alex,duncan}@cloudsoftcorp.com

×