Más contenido relacionado
La actualidad más candente (20)
Similar a Quality control in a cloudy world (20)
Más de Duncan Johnston-Watt (6)
Quality control in a cloudy world
- 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. 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. 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
Strictly Confidential © 2012 Cloudsoft Corporation 30/11/2012 Page: 4
- 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. 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. MyWebCluster – Multi-Tier Application
MyWebCluster
ControlledDynamicWebAppCluster
NGINX
DynamicWebAppCluster
JBoss7Server … JBoss7Server
MySQL
© 2012 Cloudsoft Corporation 30/11/2012 Page: 7
- 8. MyWebCluster – Topology
MyWebCluster
MySQL ControlledDynamicWebAppCluster
NGINX DynamicWebAppCluster
JBoss7Server … JBoss7Server
© 2012 Cloudsoft Corporation 30/11/2012 Page: 8
- 9. MyWebCluster – Blueprint
MyWebCluster
MySQL ControlledDynamicWebAppCluster
[targets] Auto Scaler Policy
NGINX DynamicWebAppCluster
JBoss7Server … JBoss7Server
© 2012 Cloudsoft Corporation 30/11/2012 Page: 9
- 10. Define New Blueprint
public class MyWebCluster extends AbstractApplication
implements MyWebClusterConstants {
// TODO build the application
}
© 2012 Cloudsoft Corporation 30/11/2012 Page: 10
- 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. 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. 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. 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. 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. 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. 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