45

How to scale Windows Azure Application

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: How to scale Windows Azure Application
Page 2: How to scale Windows Azure Application

How to scale Windows Azure Application

Edwin Cheung

Principal Program Manager

China Cloud Innovation Centre

Customer Advisory Team

Microsoft Asia-Pacific Research

and Development Group

Page 3: How to scale Windows Azure Application
Page 4: How to scale Windows Azure Application

4 |

Page 5: How to scale Windows Azure Application

CONTROL

CO

ST

-E

FFIC

IEN

CY

(On-premise)

Value Prop:

Value Prop:

Roll-your-own HA/DR/scale

(IaaS)

Value Prop:

(PaaS)

Page 6: How to scale Windows Azure Application

6 |

DISPERSED USERS &

DATA ELASTIC DEMAND SCALE OUT

Page 7: How to scale Windows Azure Application
Page 8: How to scale Windows Azure Application
Page 9: How to scale Windows Azure Application

Fabric ControllerWindows Azure

Networking

“Red Dog” Front End (RDFE)

Page 10: How to scale Windows Azure Application
Page 11: How to scale Windows Azure Application

• Workload driven design

• Fan-out the application tier to support the workload

• Loosely couple: asynchronous, but keep close and process fast

• Use cache for data and content

• Batch together storage/database operations if possible

• Partition Azure storage objects across multiple storage accounts if necessary

• Size appropriate (instance size and number of instances)

Page 12: How to scale Windows Azure Application

•Read-only data separated from read-write data

•Affinitize application and database as scale unit

Page 13: How to scale Windows Azure Application

Compute

Instance

CPU (GHz) Memory Storage Bandwidth

XSmall 1 768mb 20GB 5 Mbps

Small 1.6 1.7GB 225GB 100 Mbps

Medium 2 x 1.6 3.5GB 490GB 200 Mbps

Large 4 x 1.6 7GB 1000GB 400 Mbps

XLarge 8 x 1.6 14Gb 2040GB 800 Mbps

Page 14: How to scale Windows Azure Application
Page 15: How to scale Windows Azure Application

Key Concepts - Indexes

• Object Key partitioning key

, Snapshot Time

RowKey

Message Visibility Time, Message Id

Page 16: How to scale Windows Azure Application

Key Concepts – How are objects stored?

Account

Name

Container

Name

Blob Name

user1 logs 20120612-1030-001.log

user1 logs 20120612-1030-002.log

… … …

user1 logs 20120612-1030-999.log

user1 logs 20120612-1031-001.log

… … …

user2 logs 20120612-1030-001.log

Account

Name

Container

Name

Blob Name

user1 logs 001-20120612-1030.log

user1 logs 001-20120612-1031.log

… … …

user1 logs 999-20120612-1030.log

user1 logs 999-20120612-1031.log

… … …

user2 logs 001-20120612-1030.log

Page 17: How to scale Windows Azure Application

Key Concepts – How does storage scale?

A

A B

CA

Page 18: How to scale Windows Azure Application

Key Concepts – Scalability Targets

Page 19: How to scale Windows Azure Application

Storage Accounts Best Practices

Page 20: How to scale Windows Azure Application

Common Design & Scalability

Page 21: How to scale Windows Azure Application

Account

Name

Container

Name

Blob Name

User1 logs 20120612-1030-001.log

user1 logs 20120612-1030-002.log

… … …

user1 logs 20120612-1030-999.log

user1 logs 20120612-1031-001.log

… … …

user1 logs 20120612-1032-999.log

Common Design & Scalability

Page 22: How to scale Windows Azure Application

Blob Design & Scalability

Page 23: How to scale Windows Azure Application

Table Design & Scalability

Page 24: How to scale Windows Azure Application

Queue Design & Scalability

Page 25: How to scale Windows Azure Application

http://nuget.org/packages/Microsoft.Experience.CloudFx2

6

Page 26: How to scale Windows Azure Application

http://code.msdn.microsoft.com/CloudFx-Samples-60c3a852

Page 27: How to scale Windows Azure Application

Asure

Storage

Page 28: How to scale Windows Azure Application
Page 29: How to scale Windows Azure Application

Relational Database as a Service for the Windows Azure Platform

Focus on combining the best features of SQL Server

running at scale with low friction

Page 30: How to scale Windows Azure Application

• SQL Server as core DB engine

• Shared infrastructure at SQL database and below• Request routing, security and isolation

• Scalable HA technology provides the glue• Automatic replication and failover

• Provisioning, metering and billing infrastructure

Provisioning (databases, accounts, roles, …), Metering, and Billing

Machine 5

SQL Instance

SQL DBUserDB1

UserDB2

UserDB3

UserDB4

Machine 6

SQL Instance

SQL DBUserDB1

UserDB2

UserDB3

UserDB4

Machine 4

SQL Instance

SQL DBUserDB1

UserDB2

UserDB3

UserDB4

Scalability and Availability: Fabric, Failover, Replication, and Load balancing

Page 31: How to scale Windows Azure Application

Application

Internet

Azure

Cloud

LB

TDS (tcp)

TDS (tcp)

TDS (tcp)

Applications use standard SQL

client libraries: ODBC,

ADO.Net, PHP, JDBC.

Load balancer forwards

‘sticky’ sessions to TDS

protocol tier

Security Boundary

SQL SQL SQL SQL SQLSQL

Gateway Gateway Gateway Gateway Gateway Gateway

Gateway: TDS protocol gateway, enforces AUTHN/AUTHZ policy; proxy to CloudDB

Scalability and Availability: Fabric, Failover, Replication, and Load balancing

Topology

Page 32: How to scale Windows Azure Application

• Each account has zero or more servers– Azure wide, provisioned in a common portal

– Billing instrument

• Each server has one or more databases– Contains metadata about the databases and

usage

– Unit of authentication

– Unit of Geo-location

– Generated DNS based name

– Logical grouping of databases

• Each database has standard SQL objects– Unit of consistency

– Unit of multi-tenancy

– Contains Users, Tables, Views, Indices, etc.

– Most granular unit of billing

Account

Server

Database

Page 33: How to scale Windows Azure Application
Page 34: How to scale Windows Azure Application
Page 35: How to scale Windows Azure Application
Page 36: How to scale Windows Azure Application
Page 37: How to scale Windows Azure Application
Page 38: How to scale Windows Azure Application
Page 39: How to scale Windows Azure Application

A distributed, in-memory, flexible cache for all data types that can be used to speed up Windows Azure applications and reduce database load

Basically, caching helps your app become faster.

Page 40: How to scale Windows Azure Application
Page 41: How to scale Windows Azure Application
Page 42: How to scale Windows Azure Application
Page 43: How to scale Windows Azure Application
Page 44: How to scale Windows Azure Application
Page 45: How to scale Windows Azure Application