Top Banner
Patterns for Cloud Computing Simon Guest Senior Director, Technical Strategy Microsoft Corporation
188

ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Aug 01, 2020

Download

Documents

dariahiddleston
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: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Patterns for Cloud Computing

Simon GuestSenior Director, Technical StrategyMicrosoft Corporation

Page 2: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Patterns for Cloud Computing

Page 3: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

This is Jim

Patterns for Cloud Computing

Page 4: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Jim has many questions about cloud computing

Patterns for Cloud Computing

Page 5: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

The more he reads, the more confused he gets

Patterns for Cloud Computing

Page 6: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“What is cloud computing?”

Patterns for Cloud Computing

Page 7: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“What are vendors doing in this space?”

Patterns for Cloud Computing

Page 8: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“What applications make sense in the cloud?”

Patterns for Cloud Computing

Page 9: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Session Objectives

Page 10: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Session Objectives

Build on Stefan’s introduction of

of cloud computing

Provide you with 5 patterns for

cloud-based applications

Show implementations of

these patterns

Page 11: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Defining Cloud Computing

Page 12: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Defining Cloud Computing

Application runs

on-premises

Buy my own

hardware, and

manage my own

data center

Application runs

on-premises

• Bring my own

machines,

connectivity,

software, etc.

• Complete control

and responsibility

• Upfront capital

costs for the

infrastructure

Page 13: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Defining Cloud Computing

Application runs

on-premises

Buy my own

hardware, and

manage my own

data center

Application runs at a

hoster

Pay someone to

host my application

using hardware that

I specify

Application runs

on-premises

• Bring my own

machines,

connectivity,

software, etc.

• Complete control

and responsibility

• Upfront capital

costs for the

infrastructure

Application runs at a

hoster

• Rent machines,

connectivity,

software

• Less control, but

fewer

responsibilities

• Lower capital costs,

but pay for fixed

capacity, even if idle

Page 14: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Defining Cloud Computing

Application runs

on-premises

Buy my own

hardware, and

manage my own

data center

Application runs at a

hoster

Pay someone to

host my application

using hardware that

I specify

Application runs using

cloud platform

Pay someone for a

pool of computing

resources that can

be applied to a set

of applications

Application runs

on-premises

• Bring my own

machines,

connectivity,

software, etc.

• Complete control

and responsibility

• Upfront capital

costs for the

infrastructure

Application runs at a

hoster

• Rent machines,

connectivity,

software

• Less control, but

fewer

responsibilities

• Lower capital costs,

but pay for fixed

capacity, even if idle

Application runs using

cloud platform

• Shared,

multi-tenant

environment

• Offers pool of

computing

resources,

abstracted from

infrastructure

• Pay as you go

Page 15: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Defining Cloud Computing

Cloud “Variants”

Page 16: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Defining Cloud Computing

Public Cloud

Page 17: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Defining Cloud Computing

Pool of computing resources offered by

a vendor, typically using a

“pay as you go” model

Page 18: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Defining Cloud Computing

Private Cloud

Page 19: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Defining Cloud Computing

Pool of computing resources that lives

within a self managed datacenter

Page 20: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Defining Cloud Computing

Pool of computing resources that lives

within a datacenter with no sharing

Page 21: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Defining Cloud Computing

Compute: Virtualized compute based on Windows Server

Storage: Durable, scalable, & available storage

Management: Automated, management of the service

Database: Relational processing for structured/

unstructured data

Service Bus: General purpose application bus

Access Control: Rules-driven, claims-based access control

Page 22: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Defining Cloud Computing

Different Models

Infrastructure as a Service (IaaS)

vs.

Platform as a Service (PaaS)

Page 23: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Defining Cloud Computing

Operating System

Web Server

Frameworks

Your Application

OS Services

Deployment

ProvidedBy

AmazonEC2

Virtualized Instance

Hardware

Provided byWindows Azure

Deployment

Page 24: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Defining Cloud Computing

Operating System

Web Server

Frameworks

Your Application

OS ServicesProvided byGoogle

AppEngine

Virtualized Instance

Hardware

Deployment

Provided byWindows Azure

Deployment

Page 25: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Patterns for Cloud Computing

#1 - Using the Cloud for Scale

Page 26: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“Isn’t the cloud good for applications that need to

scale dynamically?”

Patterns for Cloud Computing

Page 27: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“For example, applications that have spikes or

peak loads”

Patterns for Cloud Computing

Page 28: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“How does this work?”

Patterns for Cloud Computing

Page 29: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Let’s do some white boarding for Jim…

Patterns for Cloud Computing

Page 30: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

…and when I say white boarding, I really mean it

Page 31: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web TierBrowserRequest

B/L Tier DatabaseResponse

“Wow! What a great site!”

Page 32: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web Tier B/L Tier DatabaseBrowser

Browser

Browser

Browser

Browser

“Server Busy”

Page 33: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web Tier B/L Tier DatabaseBrowser

“Timeout”

Browser

Browser

Browser

Browser

Page 34: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

How would Jim do this today on premises?

Page 35: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web Tier B/L Tier DatabaseBrowser

Browser

Browser

Browser

Browser

Web Tier

Web Tier

N L B

How would Jim do this today on premises?

Page 36: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

DatabaseBrowser

Browser

Browser

Browser

Browser

Web Tier B/L Tier

B/L Tier

B/L Tier

N L B

How would Jim do this today on premises?

Page 37: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

DatabaseBrowser

Browser

Browser

Browser

Browser

B/L Tier

B/L Tier

B/L Tier

N L B

Web Tier

Web Tier

Web Tier

N L B

How would Jim do this today on premises?

Page 38: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Browser

Browser

Browser

Browser

Browser

B/L Tier

B/L Tier

B/L Tier

N L B

Database

p1 p2 p3

Web Tier

Web Tier

Web Tier

N L B

How would Jim do this today on premises?

Page 39: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Not without consequences...

Page 40: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Browser

Browser

Browser

Browser

Browser

B/L Tier

B/L Tier

B/L Tier

N L B

Database

p1 p2 p3

Web Tier

Web Tier

Web Tier

N L B

“That took a lot of work - and money!”

How would Jim do this today on premises?

Page 41: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Browser B/L Tier

B/L Tier

B/L Tier

N L B

Database

p1 p2 p3

Web Tier

Web Tier

Web Tier

N L B

“Not so great now…”

“Hmmm... Most of this stuff is sitting idle...”

“That took a lot of work - and money!”

How would Jim do this today on premises?

Page 42: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Usage

Jan Apr Jul Oct

Datacenter peak load

Idle time

Page 43: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

How can cloud computing help?

Page 44: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web RoleBrowserRequest

Worker Role Azure StorageResponse

“Wow! What a great site!”

Page 45: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web Role Worker Role AzureStorage

Browser

“Server Busy”

Browser

Browser

Browser

Browser

Page 46: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process
Page 47: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process
Page 48: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web Role Worker Role AzureStorage

Browser

Browser

Browser

Browser

Browser

Web Role

Web Role

N L B

You don’t see this bit

Page 49: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web Role AzureStorage

Browser

Browser

Browser

Browser

Browser

Web Role

Web Role

N L B

Worker Role

Worker Role

Worker Role

N L B

Page 50: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

OK, so changing config is easy...

…but what else do I need to know?

Page 51: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web RoleBrowser

Browser

Browser

Browser

Browser

Web Role

Web Role

N L B

N L B

AzureStorage

Worker Role

Worker Role

Worker Role

Page 52: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web RoleBrowser

Browser

Browser

Browser

Browser

Web Role

Web Role

N L B

N L B

AzureStorage

Worker Role

Worker Role

Worker Role

Tight coupling between web and worker role is an anti-pattern

Page 53: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web Role Worker Role

Queue

Req

1. Place on queue 3. Pickup from queue

4. Process

2. Respond to UI

Page 54: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web Role Worker Role

Queue

Req

4. Process

Table

5. Add result to table

6. Query table on refresh

Page 55: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Demo: Prime Solver

Page 56: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

How many web and worker roles do you need?

Page 57: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

How many web and worker roles do you need?

Page 58: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web Role Worker Role AzureStorage

Browser

Browser

Browser

Browser

Browser

Web Role

Web Role

N L B

Worker RoleLog

WMI_Win32_PerfFormattedData_ASPNET_ASPNETApplications/RequestsPerSecond

Management APIor Email

Page 59: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

How many web and worker roles do you need?

Page 60: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web Role

Queue

Req

Web Role

Web Role

Req Req

Monitor queuelength against user’s

expectationsWeb Role

Web Role

Web Role

Worker Role

Page 61: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#1 - Using the Cloud for Scale

Web Role

Queue

Req

Web Role

Web Role

Req Req

Monitor queuelength against user’s

expectationsWeb Role

Web Role

Web Role

Worker Role

Worker Role

Worker Role

Worker Role

Worker Role

Worker Role

Page 62: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Patterns for Cloud Computing

Takeaways

Understand how to communicate

between roles and nodes

Strategy on when to scale up/down

roles in production

A core tenet of cloud computing is

the ability to scale up/down

Page 63: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Patterns for Moving to the Cloud

#2 - Using the Cloud for Multi Tenancy

Page 64: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“I like the idea of scaling Web roles…”

Patterns for Cloud Computing

Page 65: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“…but need to serve multiple customers”

Patterns for Cloud Computing

Page 66: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“Without creating separate codebases!”

Patterns for Cloud Computing

Page 67: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

How would Jim do this today on premises?

Page 68: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#2 - Using the Cloud for Multi Tenancy

Web TierBrowser B/L Tier DatabaseCustomer #2

Web TierBrowser B/L Tier DatabaseCustomer #1

Web TierBrowser B/L Tier DatabaseCustomer #3

How would Jim do this today on premises?

Page 69: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Gets expensive pretty quickly

Page 70: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#2 - Using the Cloud for Multi Tenancy

Web TierBrowser B/L Tier Database

Browser

Browser

Customer #1

Customer #2

Customer #3

Page 71: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Schema Customizations

UI Customizations

Page 72: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Schema Customizations

UI Customizations

Page 73: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

3 options for data in multi tenant environment

Page 74: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#2 - Using the Cloud for Multi Tenancy

Web TierBrowser B/L Tier Database

Browser

Browser

Customer #1

Customer #2

Customer #3Option 1: Everyone Uses the Same Database/Schema

Fixed Schema

Pros: Simplest approach, easy to maintain/upgrade.Cons: No customizations. Restoring of tenant data.

Page 75: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#2 - Using the Cloud for Multi Tenancy

Web TierBrowser B/L Tier

DatabaseBrowser

Browser

Customer #1

Customer #2

Customer #3

Option 2: Give Each Customer Their Own Database/Schema

Customer #1

Database

Database

Customer #2

Customer #3

Pros: Flexible. Tenant restore is easier. High Isolation.Cons: Can be costly. Difficult to upgrade db schemas.

Page 76: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#2 - Using the Cloud for Multi Tenancy

Web TierBrowser B/L Tier Database

Browser

Browser

Customer #1

Customer #2

Customer #3Option 3: Fixed Database/Schema, with customizations

Fixed Schemawith Customizations

Pros: Customers can add their own custom fieldsCons: Non standard way of customizing the schema. Tenant restore is difficult.

Page 77: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#2 - Using the Cloud for Multi Tenancy

TenantID

Tenant

int

TenantName nvarchar

EmployeeId

Employee

int

FirstName nvarchar

LastName nvarchar

CustomizationID

Customization

int

Value nvarchar

TypeID

Type

int

Name nvarchar

CLRType nvarchar

1

*

*

1

*

1

*

*

Page 78: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#2 - Using the Cloud for Multi Tenancy

TenantID

Tenant

1

TenantName UK Branch

EmployeeId

Employee

1

FirstName Gordon

LastName Brown

CustomizationID

Customization

1

Value SW1A 2AA

TypeID

Type

1

Name PostalCode

CLRType string

1

*

*

1

*

1

*

*

Page 79: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#2 - Using the Cloud for Multi Tenancy

TenantID

Tenant

2

TenantName US Branch

EmployeeId

Employee

2

FirstName Barack

LastName Obama

CustomizationID

Customization

2

Value 20500

TypeID

Type

2

Name ZipCode

CLRType string

1

*

*

1

*

1

*

*

Page 80: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#2 - Using the Cloud for Multi Tenancy

TenantID

Tenant

2

TenantName US Branch

EmployeeId

Employee

2

FirstName Barack

LastName Obama

CustomizationID

Customization

2

Value 20500

TypeID

Type

2

Name ZipCode

CLRType string

1

*

*

1

*

1

*

*

Fixed SchemaApplies to All

Tenants

CustomizableTenant by Tenant

Basis

Could be both

Page 81: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Schema Customizations

UI Customizations

Page 82: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#2 - Using the Cloud for Multi Tenancy

Web TierBrowser B/L Tier Database

Browser

Browser

Customer #1

Customer #2

Customer #3

Page 83: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

URL Handing

Page 84: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Routing using MVC approach

Page 85: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#2 - Using the Cloud for Multi Tenancy

Web TierBrowser B/L Tier Database

Browser

Browser

Customer #1

Customer #2

Customer #3

http://hr.contoso.co.uk

http://hr.fabrikam.com

http://employeedata.cloudapp.net

Page 86: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#2 - Using the Cloud for Multi Tenancy

Web TierBrowser B/L Tier Database

Browser

Browser

Customer #1

Customer #2

Customer #3

http://hr.contoso.co.uk -> CNAME (employeedata.cloudapp.net)

http://hr.fabrikam.com -> CNAME (employeedata.cloudapp.net)

http://employeedata.cloudapp.net

Page 87: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#2 - Using the Cloud for Multi Tenancy

Web TierBrowser B/L Tier Database

Browser

Browser

Customer #1

Customer #2

Customer #3

http://hr.contoso.co.uk -> CNAME (employeedata.cloudapp.net)

http://hr.fabrikam.com -> CNAME (employeedata.cloudapp.net)

Use custom route to controller mapping

http://employeedata.cloudapp.net

Page 88: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Demo: Multi Tenant Schema and UI

Page 89: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Patterns for Cloud Computing

Takeaways

Design considerations must include

both data and UI

Many other considerations, such as

identity – p&p guidance

Always consider Multi Tenancy first,

even if only one customer

Page 90: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Patterns for Moving to the Cloud

#3 - Using the Cloud for Compute

Page 91: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Jim sees how cloud computing supports

scaling up/down nodes

Patterns for Cloud Computing

Page 92: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“Can I use all of these nodes in parallel?”

Patterns for Cloud Computing

Page 93: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“I’ve got this complex calculation I would like to

share across these multiple nodes…”

Patterns for Cloud Computing

Page 94: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#3 - Using the Cloud for Compute

MasterClient

Data

Worker

Worker

Worker

Data

Data

Data

Page 95: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#3 - Using the Cloud for Compute

MasterClient

Result

Worker

Worker

Worker

Result

Result

Result

Page 96: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Popularized by the term “MapReduce”*

* 2004 OSDI paper by Jeff Dean and Sanjay Ghemawat (Google)

Page 97: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#3 - Using the Cloud for Compute

MasterClient

Data

Worker

Worker

Worker

“Map”

M<k,v>

M<k,v>

M<k.v>

M<“the quick brown”.”e”>M<“fox jumps over”.”e”>M<“the lazy dog”.”e”>

How many ”e”’s in“The quick brown fox jumps over the lazy dog”?

Page 98: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#3 - Using the Cloud for Compute

MasterClient

Result

Worker

Worker

Worker

“Reduce”

L<k,v>

L<k,v>

L<k,v>

L<”e”,”1”>L<”e”,”1”>L<”e”,”1”>

3 x ”e”s found

Page 99: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

And it’s definitely popular...

Page 100: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#3 - Using the Cloud for Compute

Google20pb of data analyzed every day using MapReduce

Yahoo!10k+ cores, 4pb of data using MapReduce

Facebook2500+ cores, 1pb of data using MapReduce

Page 101: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Frameworks

Page 102: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#3 - Using the Cloud for Compute

Apache HadoopOpen Source Java “Inspired by MapReduce”

(Core, HDFS, many more)

ClouderaConsulting, training, distribution of Hadoop

Amazon Elastic MapReduceHadoop implementation on EC2

Page 103: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

How would Jim do this today on premises?

Page 104: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#3 - Using the Cloud for Compute

MasterClient

Data

Worker

Worker

Worker

Data

Data

DataClient Application Job/Task Scheduler

Remote Service

How would Jim do this today on premises?

Page 105: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

How about implementing this on Windows Azure?

Page 106: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#3 - Using the Cloud for Compute

Web RoleClient

Data

Worker

Worker

Worker

Data

Data

DataClient Application Job/Task Scheduler

Remote Service

Queue

Req

Table

Page 107: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Demo: Windows Azure Demo “Inspired by MapReduce”

Page 108: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Patterns for Cloud Computing

Takeaways

Learn about existing frameworks,

especially Apache Hadoop

Read up on Dryad (DryadLINQ) for

future direction

MapReduce very visible, although

can be difficult to initially grasp

Page 109: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Patterns for Moving to the Cloud

#4 - Using the Cloud for Storage

Page 110: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“The cloud lets me store infinite data, right?”

Patterns for Cloud Computing

Page 111: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Lots of headaches with data management today

Patterns for Cloud Computing

Page 112: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“It sounds too good to be true…”

Patterns for Cloud Computing

Page 113: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

How does Jim do this today on premises?

Page 114: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

File ServerClientRPC/NFSFile

Store

How would Jim do this today on premises?

Page 115: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

DB ServerClient RDBMS

TDS (Tabular Data Stream)Data

How would Jim do this today on premises?

Page 116: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

Web ServerBrowser DatabaseHTTP POSTData

How would Jim do this today on premises?

Page 117: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

Server Data

Affinity between your data and physical hardware that serves it

I love you!

I love you too!

Page 118: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

Server Data

I love you!

I love you too!

Symptoms:Which RAID number was that again?

Tedious to backup exponentially growing dataCrap! I’m at 95% capacity - got to move to a bigger disk

Page 119: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

How does the cloud help?

Page 120: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Breaks the affinity between your data and hardware

Page 121: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Blobs, Tables, Relational

Page 122: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Blobs, Tables, Relational

Page 123: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

Client Azure Blob Storage

REST API

PutBlobPUT http://account.blob.core.windows./net/containername/blobname

Blob Container

http://account.blob.core.windows.net/containername/blobname

PutBlob = 64Mb MAXMetaData = 8Kb per Blob

Page 124: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

Client Azure Blob Storage

REST API

GetBlobGET http://account.blob.core.windows./net/containername/blobname

Blob Container

http://account.blob.core.windows.net/containername/blobname

Page 125: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

Client Azure Blob Storage

REST API

GetBlobGET http://account.blob.core.windows./net/containername/blobnameRange: bytes=329300 - 730000

Blob Container

http://account.blob.core.windows.net/containername/blobname

Page 126: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

Client Azure Blob Storage

REST API

PutBlock(blobname, blockid, data)PutBlockList(blobname, blockid1, …, blockidN)

Blob Container

http://account.blob.core.windows.net/containername/blobname

PutBlock = 4Mb MAX to a maximum of 50GbBlockId = 64 bytes

Page 127: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Blobs, Tables, Relational

Page 128: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

Worker Role AzureTable Storage

Each Table:

PartitionKey (e.g. DocumentName) to ensure scalabilityRowKey (e.g. version number)[fields] for data

http://account.table.core.windows.net

REST: GET http://account.table.core.windows.net/Customer?$filter=%20PartitionKey%20eq%20valueLINQ:var customers = from o in context.CreateQuery<customer>(“Customer”) where o.PartitionKey== value select o;

Page 129: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Blobs, Tables, Relational

Page 130: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Codename Sitka (early 2008)

Page 131: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

SQL Server Data Services (MIX08)

Page 132: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

DB ServerClient RDBMSTDSData

This is what I’m doing on premises...

Page 133: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

DB ServerClient RDBMSTDSData

So, this is what I would like to do in the cloud...

Page 134: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

SQL Data Services (MIX09)

Page 135: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

SQL Azure (July 2009)

Page 136: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

SQL AzureClient RDBMSTDSData

So, this is what I would like to do...

Page 137: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

SQL AzureBrowser RDBMSTDS

Web RoleHTTP

Page 138: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

SQL AzureBrowser RDBMS

TDSWeb Role

HTTPWorker Role

Queue

Page 139: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Migration!

Page 140: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

Browser RDBMSWeb TierHTTP

Bus. Logic

“The Data Center”

SQL ServerTDS

Page 141: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#4 - Using the Cloud for Storage

SQL AzureBrowser RDBMS

TDSWeb Role

HTTPWorker Role

Queue

“The Cloud”

Page 142: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Demo: SQL Azure CTP

Page 143: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Patterns for Cloud Computing

Takeaways

Understand the pricing model for

storage on-premises vs. cloud

SQL Azure as a factor for

migration/move from on premises

Storage in the cloud may look the

same, but breaks the affinity issue

Page 144: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Patterns for Moving to the Cloud

#5 - Using the Cloud for Communications

Page 145: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Jim’s organization needs to communicate with

other organizations

Patterns for Cloud Computing

Page 146: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“This has always been a very tricky and expensive

process to get working”

Patterns for Cloud Computing

Page 147: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

“Does the cloud offer anything to help?”

Patterns for Cloud Computing

Page 148: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

How would Jim have done this before?

Page 149: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client Server

Company 1 Company 2Telco provided WAN

FTPClient

FTPServer

Page 150: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client Server

Company 1 Company 2Telco provided WAN

FTPClient

FTPServer

Internet

Page 151: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client Server

Company 1 Company 2Telco provided WAN

Browser

Internet

ExtranetSite

DMZ

Page 152: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

What does the cloud provide?

Page 153: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

ClientREST

Azure Queue

http://app.queue.core.windows.net/

Page 154: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client

REST

Azure Queue

http://app.queue.core.windows.net/

Client

Company 1

Company 2

Page 155: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client

REST

Azure Queue

http://app.queue.core.windows.net/

Client

Company 1

Company 2

Page 156: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client

REST

Azure Queue

http://app.queue.core.windows.net/

Client

Company 1

Company 2

Primary Access Key

Primary Access Key

Page 157: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client

REST

Azure Queue

http://app.queue.core.windows.net/

Client

Company 1

Company 2

Web Role

Page 158: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client

REST

Azure Queue

http://app.queue.core.windows.net/

Client

Company 1

Company 2

Web Role

Firewall

Firewall

Proxy?

Page 159: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client

REST

Azure Queue

http://app.queue.core.windows.net/

Client

Company 1

Company 2

Web Role

Firewall

Firewall

NAT?

65.55.33.204

192.168.14.100

Page 160: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client

REST

Azure Queue

http://app.queue.core.windows.net/

Client

Company 1

Company 2

Web Role

Firewall

Firewall

65.55.33.204

192.168.14.100

OK, so I’ll do a HTTP poll every minute

Page 161: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client

REST

Azure Queue

http://app.queue.core.windows.net/

Client

Company 1

Company 2

Web Role

Firewall

Firewall

65.55.33.204

192.168.14.100

…and how about other protocols other than HTTP?

Page 162: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

How does the .NET Service Bus help?

Page 163: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client

.NET Service Bus

sb://.../myqueue

Client

Company 1

Company 2

Page 164: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Two modes: TCP Relay and Message Buffer

Page 165: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Two modes: TCP Relay and Message Buffer

Page 166: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client

Outbound bi-directional socketKept alive in background

.NET Service Bus

sb://.../myqueue

Client

Company 1

Company 2

Firewall

Page 167: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client

Outbound bi-directional socketKept alive in background

.NET Service Bus

sb://.../myqueue

Client

Company 1

Company 2

Firewall

FirewallOutbound one-way socket

Message routedaccordingly

Page 168: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

My Laptop

Outbound bi-directional socketKept alive in background

.NET Service Bus

sb://.../myqueue

Home PC

This Conference

My Home

Firewall

FirewallOutbound one-way socket

Message routedaccordingly

192.168.14.193

SQL Express

Port 1433

Localhost:1000

Application

Page 169: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Two modes: TCP Relay and Message Buffer

Page 170: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client

Consumer defines and createsa Message Buffer

.NET Service Bus

sb://.../myqueue

Client

Company 1

Company 2

Firewall

ATOMPub via REST

Page 171: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client

Producer sends messages tothe Message Buffer

.NET Service Bus

sb://.../myqueue

Client

Company 1

Company 2

Firewall

ATOMPub via REST

Firewall

Page 172: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

#5 - Using the Cloud for Communications

Client

Consumer picks up these messages(retrieve, peek, lock)

.NET Service Bus

sb://.../myqueue

Client

Company 1

Company 2

Firewall

ATOMPub via REST

Firewall

Page 173: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Patterns for Cloud Computing

Takeaways

Firewalls/NATs can add additional

trouble (especially non-HTTP)

Learn how .NET Service Bus

traverses in these scenarios

Be careful consuming REST based

queues using shared secret

Page 174: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Patterns for Moving to the Cloud

Putting the Patterns Together

Page 175: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

We’ve covered 5 patterns, but Jim has one last

question…

Patterns for Cloud Computing

Page 176: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Are there cases where these patterns work

together?

Patterns for Cloud Computing

Page 177: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Putting the Patterns Together

PHP

Let’s build an application in PHP

that scales to many nodes…

Windows Azure

Page 178: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Putting the Patterns Together

PHP

Java Servlet

Google AppEngine

ASP.NETAmazon EC2

Windows AzureUse the principles of multi tenancy to

create a version of the application across

multiple vendors

(10 nodes)

(5 nodes using ELB)

Page 179: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Putting the Patterns Together

PHP

Java Servlet

Google AppEngine

ASP.NETAmazon EC2

Job

Job

Job

Client

Windows Azure

Compute results with a MapReduce-like way of distributing work across all of these

applications

Page 180: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Putting the Patterns Together

PHP

SQL AzureDatabase

Java Servlet

Google AppEngine

ASP.NETAmazon EC2

Job

Job

Job

Client

Windows AzureStore the results in a SQL Azure

database

Page 181: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Putting the Patterns Together

PHP

SQL AzureDatabase

.NET Service Bus

Java Servlet

Google AppEngine

ASP.NETAmazon EC2

Job

Job

Job

Client

Windows Azure

Coordinate communication

through the .NET Service Bus

Page 182: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Putting the Patterns Together

PHP

SQL AzureDatabase

.NET Service Bus

Java Servlet

Google AppEngine

ASP.NETAmazon EC2

Job

Job

Job

Client

Windows Azure

Page 183: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Putting the Patterns Together

PHP

SQL AzureDatabase

.NET Service Bus

Java Servlet

Google AppEngine

ASP.NETAmazon EC2

Job

Job

Job

Client

Windows Azure

40 jobs of250,000numbers

Compute

Compute

Compute

Store resultsin SQL AzureHow many prime

numbers between 1 and 10,000,000?

Page 184: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Demo: Prime Solver v2.0

Page 185: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Next Steps

Page 186: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Obviously, our friend Jim, is fake…

Next Steps

Page 187: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

Next Steps

Make sure you have a clear definition

of Cloud Computing

Explore the 5 usage patterns for

your scenarios today

Think about the next steps for

implementation and migration

Page 188: ARC206: Patterns for Cloud Computing...Req 1. Place on queue 3. Pickup from queue 4. Process 2. Respond to UI #1 - Using the Cloud for Scale Web Role Worker Role Queue Req 4. Process

[email protected]

http://simonguest.com