2013 05-multicloud-paas-interop-scenarios-fia-dublin

Post on 15-Jan-2015

564 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Multi-cloud scenarios for tomorrow's applications — talk at 10th Future Internet Assembly (Dublin), 7 May 2013

TRANSCRIPT

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

top related