Top Banner
Quality Control in a Cloudy World CloudStack Collaboration Conference
19

Quality control in a cloudy world

Oct 19, 2014

Download

Documents

Presentation given with co-presenter Alex Heneveld at the Cloudstack Collaboration Conference, Nov 30, 2012
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Quality control in a cloudy world

Quality Control in a Cloudy World CloudStack Collaboration Conference

Page 2: Quality control in a cloudy world

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

Page 3: Quality control in a cloudy world

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

Page 4: Quality control in a cloudy world

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

Page 5: Quality control in a cloudy world

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

Page 6: Quality control in a cloudy world

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

Page 7: Quality control in a cloudy world

MySQL

MyWebCluster – Multi-Tier Application

NGINX

ControlledDynamicWebAppCluster

JBoss7Server JBoss7Server … DynamicWebAppCluster

MyWebCluster

30/11/2012 © 2012 Cloudsoft Corporation Page: 7

Page 8: Quality control in a cloudy world

MyWebCluster – Topology

30/11/2012 © 2012 Cloudsoft Corporation Page: 8

MyWebCluster

ControlledDynamicWebAppCluster

DynamicWebAppCluster

JBoss7Server

NGINX

MySQL

JBoss7Server

Page 9: Quality control in a cloudy world

MyWebCluster – Blueprint

30/11/2012 © 2012 Cloudsoft Corporation Page: 9

Auto Scaler Policy [targets]

MyWebCluster

ControlledDynamicWebAppCluster

DynamicWebAppCluster

JBoss7Server

NGINX

MySQL

JBoss7Server

Page 10: Quality control in a cloudy world

30/11/2012 © 2012 Cloudsoft Corporation Page: 10

De"ne New Blueprint

public class MyWebCluster extends AbstractApplication implements MyWebClusterConstants { // TODO build the application}

Page 11: Quality control in a cloudy world

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+"); }}

Page 12: Quality control in a cloudy world

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+"); }}

Page 13: Quality control in a cloudy world

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)); }}

Page 14: Quality control in a cloudy world

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)); }}

Page 15: Quality control in a cloudy world

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)); }}

Page 16: Quality control in a cloudy world

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

Page 17: Quality control in a cloudy world

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

Page 18: Quality control in a cloudy world

Test New Blueprint

30/11/2012 © 2012 Cloudsoft Corporation Page: 18

Page 19: Quality control in a cloudy world

Thank you for your time {aled,alex,duncan}@cloudsoftcorp.com