2013 05-multicloud-paas-interop-scenarios-fia-dublin
DESCRIPTION
Multi-cloud scenarios for tomorrow's applications — talk at 10th Future Internet Assembly (Dublin), 7 May 2013TRANSCRIPT
Multi-cloud scenarios for tomorrow’s applications
Alex Heneveld / @ahtweetinFIA/Cloud4SOA Workshop
7 May 2013
© 2013 Cloudsoft Corporation
Agenda
• Canned PaaS
• Challenges #1: multi-cloud and complex apps
• Composable PaaS• Challenges #2: usability and interop
• Declarative PaaS
2
© 2013 Cloudsoft Corporation
Canned PaaS
3
© 2013 Cloudsoft Corporation
Canned PaaS
4
Software Stack Languages Data Services Elastic Hosting
Providers
Amazon Elastic Beanstalk proprietary
Java(so far)
proprietary(extensive) ✓ AWS only
Google AppEngine proprietaryPython, Java
(limited) proprietary ✓ Google only
Microsoft Azure proprietary.NET, PHP,
Javaproprietary(extensive) ✓ Azure only
Heroku proprietaryJava, Ruby, node.js, ...
MySQL, Mongo, ... ✓ AWS
Engine Yard multiple (Rubinius, etc)
Ruby, PHP,JRuby, ...
MySQL, PostgreSQL ✓ AWS
(so far)
CloudBees RUN@cloud LAMJ Java MySQL ✓ AWS(so far)
VMware CloudFoundrymultiple
(e.g. tcServer)Java, Ruby, node.js, ...
MySQL, Mongo, ... ✓ multiple,
OSS
RedHat OpenShiftmultiple
(e.g. JBoss)Ruby, Python,
PHP, Java, ...MySQL, Mongo,
... ✓ multiple, OSS
© 2013 Cloudsoft Corporation
Canned PaaS
5
Software Stack Languages Data Services Elastic Hosting
ProvidersMultiple
LocationsExtensible Safe from
Lock-in
Amazon Elastic Beanstalk proprietary
Java(so far)
proprietary(extensive) ✓ AWS only ✗ ✗ ✗
Google AppEngine proprietaryPython, Java
(limited) proprietary ✓ Google only ✗ ✗ ✗
Microsoft Azure proprietary.NET, PHP,
Javaproprietary(extensive) ✓ Azure only ✗ ✗ ✗
Heroku proprietaryJava, Ruby, node.js, ...
MySQL, Mongo, ... ✓ AWS ✗ ✗ ✗
Engine Yard multiple (Rubinius, etc)
Ruby, PHP,JRuby, ...
MySQL, PostgreSQL ✓ AWS
(so far) ✗ ✗ ✗
CloudBees RUN@cloud LAMJ Java MySQL ✓ AWS(so far) ✗ ✗ ✓
VMware CloudFoundrymultiple
(e.g. tcServer)Java, Ruby, node.js, ...
MySQL, Mongo, ... ✓ multiple,
OSS ✗ ✓ ✓RedHat OpenShift
multiple(e.g. JBoss)
Ruby, Python, PHP, Java, ...
MySQL, Mongo, ... ✓ multiple,
OSS ✗ ✓ ✓
© 2013 Cloudsoft Corporation
Challenges #1
• Multi-environment
• On-premise, hybrid, and legacy
• Bursting and spanning• Complex applications
• Custom dependency injection
• Richer applications
6
© 2013 Cloudsoft Corporation
Betfair
7
© 2013 Cloudsoft Corporation
Betfair
8
• cloud: Rackspace• on-prem: vSphere
• lightweight virt’n (LXC)• nginx dev / F5 live
© 2013 Cloudsoft Corporation
The Elephant in the Room
9
© 2013 Cloudsoft Corporation
Betfair
10
© 2013 Cloudsoft Corporation
GSLB
11
✗◦ ◦ ◦
© 2013 Cloudsoft Corporation
Composable PaaS
12
© 2013 Cloudsoft Corporation
Composable PaaS
13
© 2013 Cloudsoft Corporation
http://brooklyncentral.github.com
14
© 2013 Cloudsoft Corporation 15
Autonomic Management (M-A-P-E)
Monitor
Analyze Plan
ExecuteState
Sensors E!ectors
EnrichDelegate
Autonomic Manager*
Sensors E!ectors
Escalate
Managed Element
*An autonomic manager can be a managed element
© 2013 Cloudsoft Corporation 16
Hierarchical Autonomic Management
Granularity can be anything from individual application to overall control plane
© 2013 Cloudsoft Corporation
Multi-Tier Application
Load Balanced Cluster
Cluster
Multi-Tier Application
17
OS
MySQL
OS
NGINX
OS
JBoss7Server
OS
JBoss7Server…
Need to update targets to match cluster
Need to publish MySQL URL for cluster
Need to specify autoscaling policy
There has to be a better way than scripting …
© 2013 Cloudsoft Corporation
MyWebCluster – Topology
18
…
MyWebCluster
ControlledDynamicWebAppCluster
DynamicWebAppCluster
JBoss7Server
NGINX
MySQL
JBoss7Server
Concrete Entities
Abstract Entities
Managed Elements - AMP proxies for real world components
Autonomic Managers - AMP speci"c constructs or building blocks
Here we explicitly model the app’s organizational structure
MySQL and NGINX could be swapped out for their clustered variants
© 2013 Cloudsoft Corporation
MyWebCluster – Blueprint
19
Auto Scaler Policy[targets]
…
MyWebCluster
ControlledDynamicWebAppCluster
DynamicWebAppCluster
JBoss7Server
NGINX
MySQL
JBoss7Server
Policies Attached to entities they e!ect but can subscribe to any sensor
[targets] is a built in policy whereas the auto scaling policy is explicitly added
An application blueprint is completely portable
© 2013 Cloudsoft Corporation
MyWebCluster – Customization
20
…JBoss7Server
NGINX
MySQL
JBoss7Server
Auto Scaler Policy[targets]
…
MyWebCluster
ControlledDynamicWebAppCluster
DynamicWebAppCluster
JBoss7Server
NGINX
MySQL
JBoss7Server
Drivers Customer speci"c implementations (Bash, Puppet, Chef etc.)
The pluggable driver mechanism is an elegant way to customize a blueprint for a particular environment
© 2013 Cloudsoft Corporation
MyWebCluster – Instantiation
21
Location
OS
OS
OS
… OS
…JBoss7Server
NGINX
MySQL
JBoss7Server
+
Auto Scaler Policy[targets]
…
MyWebCluster
ControlledDynamicWebAppCluster
DynamicWebAppCluster
JBoss7Server
NGINX
MySQL
JBoss7Server
Instances Locations – can be virtual machine, LXC, legacy; and multiple
© 2013 Cloudsoft Corporation 22
Java Library
public class MyWebCluster extends AbstractApplication implements MyWebClusterConstants { @Override 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)); }}
© 2013 Cloudsoft Corporation
Powerful GUI and RESTful API
23
© 2013 Cloudsoft Corporation
Uses
24
© 2013 Cloudsoft Corporation
Challenges #2
• Usability — code is hard!
• Interop — #unicorns
25
© 2013 Cloudsoft Corporation
PUSH
26
• impose a common pattern on PaaSes
• Cloud4SOA !• Strong types in Brooklyn
• limited success (DI, locations, etc)
© 2013 Cloudsoft Corporation
PULL
27
• standards: create desire and make them achievable
• Oasis CAMP, TOSCA; OCCI• Cloud4SOA, SeaClouds (FP7)• OpenStack Heat, Cloudstack 576
• early days ... but huge momentum!
© 2013 Cloudsoft Corporation
PUSH AND PULL
28
© 2013 Cloudsoft Corporation 29
A DSL (WIP not RIP!)
name: "three tier app"components: hello_war: # no type content: hello.war requires: com.example.java:WarContainer: initialSize: 3 fulfillment: frontend com.example.java:Autoscaler: metric: request.latency max: 120ms hello_sql: content: hello.sql type: com.example.database:Schema # here, type of component defined requires: backend frontend: # "platform component" implied by WarDeplReq above requires: database: # frontend type must recognise a named "database" req mode: CDI # assume that req supports various injection modes fulfillment: backend
Multi-cloud scenarios for tomorrow’s applications
Alex Heneveld / @ahtweetinFIA/Cloud4SOA Workshop
7 May 2013