Download - Patterns for Cloud Computing
![Page 1: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/1.jpg)
Patterns for Cloud Computing
Simon GuestSenior Director, Technical StrategyMicrosoft Corporation
![Page 2: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/2.jpg)
Patterns for Cloud Computing
![Page 3: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/3.jpg)
This is Jim
Patterns for Cloud Computing
![Page 4: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/4.jpg)
Jim has many questions about cloud computing
Patterns for Cloud Computing
![Page 5: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/5.jpg)
The more he reads, the more confused he gets
Patterns for Cloud Computing
![Page 6: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/6.jpg)
“What is cloud computing?”
Patterns for Cloud Computing
![Page 7: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/7.jpg)
“What are vendors doing in this space?”
Patterns for Cloud Computing
![Page 8: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/8.jpg)
“What applications make sense in the cloud?”
Patterns for Cloud Computing
![Page 9: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/9.jpg)
Session Objectives
![Page 10: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/10.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/11.jpg)
Defining Cloud Computing
![Page 12: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/12.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/13.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/14.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/15.jpg)
Defining Cloud Computing
Cloud “Variants”
![Page 16: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/16.jpg)
Defining Cloud Computing
Public Cloud
![Page 17: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/17.jpg)
Defining Cloud Computing
Pool of computing resources offered by
a vendor, typically using a
“pay as you go” model
![Page 18: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/18.jpg)
Defining Cloud Computing
Private Cloud
![Page 19: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/19.jpg)
Defining Cloud Computing
Pool of computing resources that lives
within a self managed datacenter
![Page 20: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/20.jpg)
Defining Cloud Computing
Pool of computing resources that lives
within a datacenter with no sharing
![Page 21: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/21.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/22.jpg)
Defining Cloud Computing
Different Models
Infrastructure as a Service (IaaS)
vs.
Platform as a Service (PaaS)
![Page 23: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/23.jpg)
Defining Cloud Computing
Operating System
Web Server
Frameworks
Your Application
OS Services
Deployment
ProvidedBy
AmazonEC2
Virtualized Instance
Hardware
Provided byWindows Azure
Deployment
![Page 24: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/24.jpg)
Defining Cloud Computing
Operating System
Web Server
Frameworks
Your Application
OS ServicesProvided byGoogle
AppEngine
Virtualized Instance
Hardware
Deployment
Provided byWindows Azure
Deployment
![Page 25: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/25.jpg)
Patterns for Cloud Computing
#1 - Using the Cloud for Scale
![Page 26: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/26.jpg)
“Isn’t the cloud good for applications that need to
scale dynamically?”
Patterns for Cloud Computing
![Page 27: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/27.jpg)
“For example, applications that have spikes or
peak loads”
Patterns for Cloud Computing
![Page 28: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/28.jpg)
“How does this work?”
Patterns for Cloud Computing
![Page 29: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/29.jpg)
Let’s do some white boarding for Jim…
Patterns for Cloud Computing
![Page 30: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/30.jpg)
…and when I say white boarding, I really mean it
![Page 31: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/31.jpg)
#1 - Using the Cloud for Scale
Web TierBrowserRequest
B/L Tier DatabaseResponse
“Wow! What a great site!”
![Page 32: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/32.jpg)
#1 - Using the Cloud for Scale
Web Tier B/L Tier DatabaseBrowser
Browser
Browser
Browser
Browser
“Server Busy”
![Page 33: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/33.jpg)
#1 - Using the Cloud for Scale
Web Tier B/L Tier DatabaseBrowser
“Timeout”
Browser
Browser
Browser
Browser
![Page 34: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/34.jpg)
How would Jim do this today on premises?
![Page 35: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/35.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/36.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/37.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/38.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/39.jpg)
Not without consequences...
![Page 40: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/40.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/41.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/42.jpg)
#1 - Using the Cloud for Scale
Usage
Jan Apr Jul Oct
Datacenter peak load
Idle time
![Page 43: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/43.jpg)
How can cloud computing help?
![Page 44: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/44.jpg)
#1 - Using the Cloud for Scale
Web RoleBrowserRequest
Worker Role Azure StorageResponse
“Wow! What a great site!”
![Page 45: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/45.jpg)
#1 - Using the Cloud for Scale
Web Role Worker Role AzureStorage
Browser
“Server Busy”
Browser
Browser
Browser
Browser
![Page 46: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/46.jpg)
![Page 47: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/47.jpg)
![Page 48: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/48.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/49.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/50.jpg)
OK, so changing config is easy...
…but what else do I need to know?
![Page 51: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/51.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/52.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/53.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/54.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/55.jpg)
Demo: Prime Solver
![Page 56: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/56.jpg)
How many web and worker roles do you need?
![Page 57: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/57.jpg)
How many web and worker roles do you need?
![Page 58: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/58.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/59.jpg)
How many web and worker roles do you need?
![Page 60: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/60.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/61.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/62.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/63.jpg)
Patterns for Moving to the Cloud
#2 - Using the Cloud for Multi Tenancy
![Page 64: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/64.jpg)
“I like the idea of scaling Web roles…”
Patterns for Cloud Computing
![Page 65: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/65.jpg)
“…but need to serve multiple customers”
Patterns for Cloud Computing
![Page 66: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/66.jpg)
“Without creating separate codebases!”
Patterns for Cloud Computing
![Page 67: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/67.jpg)
How would Jim do this today on premises?
![Page 68: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/68.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/69.jpg)
Gets expensive pretty quickly
![Page 70: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/70.jpg)
#2 - Using the Cloud for Multi Tenancy
Web TierBrowser B/L Tier Database
Browser
Browser
Customer #1
Customer #2
Customer #3
![Page 71: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/71.jpg)
Schema Customizations
UI Customizations
![Page 72: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/72.jpg)
Schema Customizations
UI Customizations
![Page 73: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/73.jpg)
3 options for data in multi tenant environment
![Page 74: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/74.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/75.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/76.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/77.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/78.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/79.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/80.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/81.jpg)
Schema Customizations
UI Customizations
![Page 82: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/82.jpg)
#2 - Using the Cloud for Multi Tenancy
Web TierBrowser B/L Tier Database
Browser
Browser
Customer #1
Customer #2
Customer #3
![Page 83: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/83.jpg)
URL Handing
![Page 84: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/84.jpg)
Routing using MVC approach
![Page 85: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/85.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/86.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/87.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/88.jpg)
Demo: Multi Tenant Schema and UI
![Page 89: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/89.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/90.jpg)
Patterns for Moving to the Cloud
#3 - Using the Cloud for Compute
![Page 91: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/91.jpg)
Jim sees how cloud computing supports
scaling up/down nodes
Patterns for Cloud Computing
![Page 92: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/92.jpg)
“Can I use all of these nodes in parallel?”
Patterns for Cloud Computing
![Page 93: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/93.jpg)
“I’ve got this complex calculation I would like to
share across these multiple nodes…”
Patterns for Cloud Computing
![Page 94: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/94.jpg)
#3 - Using the Cloud for Compute
MasterClient
Data
Worker
Worker
Worker
Data
Data
Data
![Page 95: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/95.jpg)
#3 - Using the Cloud for Compute
MasterClient
Result
Worker
Worker
Worker
Result
Result
Result
![Page 96: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/96.jpg)
Popularized by the term “MapReduce”*
* 2004 OSDI paper by Jeff Dean and Sanjay Ghemawat (Google)
![Page 97: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/97.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/98.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/99.jpg)
And it’s definitely popular...
![Page 100: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/100.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/101.jpg)
Frameworks
![Page 102: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/102.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/103.jpg)
How would Jim do this today on premises?
![Page 104: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/104.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/105.jpg)
How about implementing this on Windows Azure?
![Page 106: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/106.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/107.jpg)
Demo: Windows Azure Demo “Inspired by MapReduce”
![Page 108: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/108.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/109.jpg)
Patterns for Moving to the Cloud
#4 - Using the Cloud for Storage
![Page 110: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/110.jpg)
“The cloud lets me store infinite data, right?”
Patterns for Cloud Computing
![Page 111: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/111.jpg)
Lots of headaches with data management today
Patterns for Cloud Computing
![Page 112: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/112.jpg)
“It sounds too good to be true…”
Patterns for Cloud Computing
![Page 113: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/113.jpg)
How does Jim do this today on premises?
![Page 114: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/114.jpg)
#4 - Using the Cloud for Storage
File ServerClientRPC/NFSFile
Store
How would Jim do this today on premises?
![Page 115: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/115.jpg)
#4 - Using the Cloud for Storage
DB ServerClient RDBMS
TDS (Tabular Data Stream)Data
How would Jim do this today on premises?
![Page 116: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/116.jpg)
#4 - Using the Cloud for Storage
Web ServerBrowser DatabaseHTTP POSTData
How would Jim do this today on premises?
![Page 117: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/117.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/118.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/119.jpg)
How does the cloud help?
![Page 120: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/120.jpg)
Breaks the affinity between your data and hardware
![Page 121: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/121.jpg)
Blobs, Tables, Relational
![Page 122: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/122.jpg)
Blobs, Tables, Relational
![Page 123: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/123.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/124.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/125.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/126.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/127.jpg)
Blobs, Tables, Relational
![Page 128: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/128.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/129.jpg)
Blobs, Tables, Relational
![Page 130: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/130.jpg)
Codename Sitka (early 2008)
![Page 131: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/131.jpg)
SQL Server Data Services (MIX08)
![Page 132: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/132.jpg)
#4 - Using the Cloud for Storage
DB ServerClient RDBMSTDSData
This is what I’m doing on premises...
![Page 133: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/133.jpg)
#4 - Using the Cloud for Storage
DB ServerClient RDBMSTDSData
So, this is what I would like to do in the cloud...
![Page 134: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/134.jpg)
SQL Data Services (MIX09)
![Page 135: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/135.jpg)
SQL Azure (July 2009)
![Page 136: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/136.jpg)
#4 - Using the Cloud for Storage
SQL AzureClient RDBMSTDSData
So, this is what I would like to do...
![Page 137: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/137.jpg)
#4 - Using the Cloud for Storage
SQL AzureBrowser RDBMSTDS
Web RoleHTTP
![Page 138: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/138.jpg)
#4 - Using the Cloud for Storage
SQL AzureBrowser RDBMS
TDSWeb Role
HTTPWorker Role
Queue
![Page 139: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/139.jpg)
Migration!
![Page 140: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/140.jpg)
#4 - Using the Cloud for Storage
Browser RDBMSWeb TierHTTP
Bus. Logic
“The Data Center”
SQL ServerTDS
![Page 141: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/141.jpg)
#4 - Using the Cloud for Storage
SQL AzureBrowser RDBMS
TDSWeb Role
HTTPWorker Role
Queue
“The Cloud”
![Page 142: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/142.jpg)
Demo: SQL Azure CTP
![Page 143: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/143.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/144.jpg)
Patterns for Moving to the Cloud
#5 - Using the Cloud for Communications
![Page 145: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/145.jpg)
Jim’s organization needs to communicate with
other organizations
Patterns for Cloud Computing
![Page 146: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/146.jpg)
“This has always been a very tricky and expensive
process to get working”
Patterns for Cloud Computing
![Page 147: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/147.jpg)
“Does the cloud offer anything to help?”
Patterns for Cloud Computing
![Page 148: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/148.jpg)
How would Jim have done this before?
![Page 149: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/149.jpg)
#5 - Using the Cloud for Communications
Client Server
Company 1 Company 2Telco provided WAN
FTPClient
FTPServer
![Page 150: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/150.jpg)
#5 - Using the Cloud for Communications
Client Server
Company 1 Company 2Telco provided WAN
FTPClient
FTPServer
Internet
![Page 151: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/151.jpg)
#5 - Using the Cloud for Communications
Client Server
Company 1 Company 2Telco provided WAN
Browser
Internet
ExtranetSite
DMZ
![Page 152: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/152.jpg)
What does the cloud provide?
![Page 153: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/153.jpg)
#5 - Using the Cloud for Communications
ClientREST
Azure Queue
http://app.queue.core.windows.net/
![Page 154: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/154.jpg)
#5 - Using the Cloud for Communications
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
![Page 155: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/155.jpg)
#5 - Using the Cloud for Communications
Client
REST
Azure Queue
http://app.queue.core.windows.net/
Client
Company 1
Company 2
![Page 156: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/156.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/157.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/158.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/159.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/160.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/161.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/162.jpg)
How does the .NET Service Bus help?
![Page 163: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/163.jpg)
#5 - Using the Cloud for Communications
Client
.NET Service Bus
sb://.../myqueue
Client
Company 1
Company 2
![Page 164: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/164.jpg)
Two modes: TCP Relay and Message Buffer
![Page 165: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/165.jpg)
Two modes: TCP Relay and Message Buffer
![Page 166: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/166.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/167.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/168.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/169.jpg)
Two modes: TCP Relay and Message Buffer
![Page 170: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/170.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/171.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/172.jpg)
#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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/173.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/174.jpg)
Patterns for Moving to the Cloud
Putting the Patterns Together
![Page 175: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/175.jpg)
We’ve covered 5 patterns, but Jim has one last
question…
Patterns for Cloud Computing
![Page 176: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/176.jpg)
Are there cases where these patterns work
together?
Patterns for Cloud Computing
![Page 177: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/177.jpg)
Putting the Patterns Together
PHP
Let’s build an application in PHP
that scales to many nodes…
Windows Azure
![Page 178: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/178.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/179.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/180.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/181.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/182.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/183.jpg)
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: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/184.jpg)
Demo: Prime Solver v2.0
![Page 185: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/185.jpg)
Next Steps
![Page 186: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/186.jpg)
Obviously, our friend Jim, is fake…
Next Steps
![Page 187: Patterns for Cloud Computing](https://reader038.vdocuments.net/reader038/viewer/2022110115/54c92e664a7959f7238b4603/html5/thumbnails/187.jpg)
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