windows azure overview

108
A lap around the Seattle’s Clouds (and there are a lot of them ) Stefano Paluello [email protected] http://stefanopaluello.wordpress.com Twitter: @palutz

Upload: stefano-paluello

Post on 13-May-2015

5.410 views

Category:

Technology


1 download

DESCRIPTION

My Windows Azure presentation @ Microsoft Community Tour 2011

TRANSCRIPT

Page 1: Windows Azure Overview

A lap around the Seattle’s Clouds (and there are a lot of them ☺ )

Stefano [email protected]

http://stefanopaluello.wordpress.com

Twitter: @palutz

Page 2: Windows Azure Overview

Agenda

• Cloud Computing Overview

• Welcome “Windows Azure Platform”

• Windows Azure Computing– Role Programming Model

– Windows Azure Storage

– Windows Azure Connect

• SQL Azure

• Azure App Fabric

• Windows Azure Development

Page 3: Windows Azure Overview

What is the “Cloud Computing”?

• Cloud Computing represents a pattern of IT operation, from infrastructure to applications, using services.

• Microsoft thinks of the cloud as simply an approach to computing that enables applications to be delivered at scale for a variety of workloads and client devices.

Page 4: Windows Azure Overview

Why do we need the Cloud?

TIME

IT C

AP

AC

ITY

Actual Load

Allocated IT-capacities

Too Much Power

Not Enough Power

Load Forecast

Page 5: Windows Azure Overview

Actual Load

Capacity on Demand

Lower Capex

No capital laying idle

No screaming customers

Knob goes up...

And...down

TIME

IT C

AP

AC

ITY

Load Forecast

Page 6: Windows Azure Overview

Cloud Services

Infrastructure-as-a-Service

host

“IaaS”Platform-as-a-Service

build

“PaaS”Software-as-a-Service

consume

“SaaS”

Page 7: Windows Azure Overview

Cloud servicesPackaged Software

Storage

Servers

Networking

O/S

Middleware

Virtualization

Data

Applications

Runtime

You m

anage

Infrastructure(as a Service)

Storage

Servers

Networking

O/S

Middleware

Virtualization

Data

Applications

Runtime

Managed by ve

ndor

You m

anage

Platform(as a Service)

Managed by ve

ndor

You m

anage

Storage

Servers

Networking

O/S

Middleware

Virtualization

Applications

Runtime

Data

Software(as a Service)

Managed by ve

ndor

Storage

Servers

Networking

O/S

Middleware

Virtualization

Applications

Runtime

Data

Page 8: Windows Azure Overview

Who are the “players”?

• Common services:– Resource pooling, Elasticity, Pay-per-use, On-demand self-service, Measured service, Broad network access

Cloud Services Players

IaaS Vmware vCloud (ESX,Vcenter), AmazonWebServices, Microsoft

(Dynamic Data Center Toolkit for Hosters), GoGrid, Rackspace,…

PaaS Microsoft Windows Azure, Google AppEngine, Force.com,…

SaaS Microsoft BPOS, Salesforce.com,Google Docs,LotusLive,…

Page 9: Windows Azure Overview

What are the differences?

On-Premise Hosting Cloud

• Manage all on your own

server farm (electricity,

network, hw, sw..)

• Full control &

responsibility

• Fixed capacity

• High initial investment

• Rent HW, SW & network

• Less control and

responsibility than On-

Premise

• More flexible

• Less investment than

On-Premise

• Fixed cost with fixed

capacity also when the

server aren’t working

• Shared multi-tenant

infrastructure

• Resource pooling

• On-demand self-service

• Elasticity, network

independent

• Measured services

• Pay-per-use

Page 10: Windows Azure Overview

Welcome…

Page 11: Windows Azure Overview

Windows Azure Platform

Page 12: Windows Azure Overview

Windows Azure Data Centers

6 Datacenters across 3 continentsWindows Azure Platform available in 41 countries

Page 13: Windows Azure Overview

• O.S. for the Cloud:– Run apps in the Cloud, Provide Storage, App Management, Developer SDK

• Windows Azure best fits for app needing:– Scalability, Availability, Fault Tolerance & Load Balancing

Windows Azure Compute

Page 14: Windows Azure Overview
Page 15: Windows Azure Overview

Windows Azure “internals”

Desktop

VS Tools

WA SDK

Sto

rag

e C

lust

er

MSFT Datacenters

Business Portal

Developer Portal

Co

mp

ute

Clu

ste

r

……

Service Management Service

REST

REST

Cloud VM

Runtime

API

VM Setup

User Code

Page 16: Windows Azure Overview

Hierarchy in Windows Azure

• SubscriptionSubscriptionSubscriptionSubscription– contains a collection of ServicesServicesServicesServices (up to 6), determines the billing model (with standard, discounted or bundled charges)

• ServicesServicesServicesServices– Isolation boundary with a public URL, composed by RolesRolesRolesRoles (up to 5), defined in the Service Model

• RolesRolesRolesRoles– Defined in the Service Model (VM size, Communications endpoints, Storage Resources, etc.), at run-time a Role can execute up to 20 InstancesInstancesInstancesInstances per SubscriptionSubscriptionSubscriptionSubscription

• InstancesInstancesInstancesInstances– Set of code and data deployed in a VM

Page 17: Windows Azure Overview

Windows Azure RolesWindows Azure supported roles :

• Web Web Web Web rolerolerolerole – is a role that is customized for web application programming as supported by IIS 7 and ASP.NET.

• Worker roleWorker roleWorker roleWorker role – is a role that is useful for generalized development, and may perform background processing for a web role.

• VM roleVM roleVM roleVM role – is a special type of role that enables you to define the configuration & updates of the OS for the VM.

Features available:Features available:Features available:Features available:

• Remote desktop connection

• Communication between role instances

• The role instances in a hosted service communicate through internal and external connections

• Warm-up tasks

Page 18: Windows Azure Overview

Windows Azure Roles

Page 19: Windows Azure Overview

Windows Azure Architecture

StorageStorageTablesTables

L

B

BlobsBlobs

Worker

Service

Worker

ServiceWorker

Service

Worker

Service

Worker

RoleManaged

Interface Call

Worker

RoleManaged

Interface Call

Web Site(ASPX, ASMX, WCF)

Web Site(ASPX, ASMX, WCF)Web Site

(ASPX, ASMX, WCF)

Web Site(ASPX, ASMX, WCF)Web RoleIIS as Host

Web RoleIIS as Host

QueuesQueues

Windows Azure Data Center

L

BL

B

The InternetThe Internet via TCP or HTTP

Page 20: Windows Azure Overview

Packaging and Config

• Windows Azure Services are described by two important files:– Service Definition (*.csdef)

– Service Configuration (*.cscfg)

• Your code is zipped and packaged with definition (*.cspkg)– Encrypted(Zipped(Code + *.csdef)) == *.cspkg

• Windows Azure consumes just *.cspkg + *.cscfg

Page 21: Windows Azure Overview

DEMODEMODEMODEMOHello Windows Azure

Page 22: Windows Azure Overview

Role Programming Model

• Inherits RoleEntryPoint

• OnStart() Method– Called by Fabric on startup, allows you to perform initialization tasks.

– Reports Busy status to load balancer until you return true.

• Run() Method– Main logic is here – can do anything, typically infinite loop. Should never exit.

• OnStop() Method– Called when role is to be shutdown, graceful exit.

– 30 Seconds to tidy up

Page 23: Windows Azure Overview

Role Lifecycle

• All Roles MAY extend RoleEntryPoint

• Role instances raise events when their status is changed (managed by the RoleEnvironment class)

Page 24: Windows Azure Overview

Windows Azure Web & Worker Roles

• Windows Server 2008 x64 (R2 coming soon)

• .NET Framework – 3.5 SP1 and 4.0

• Native Code, PHP, Java, etc.

• Supports Full Trust today

• Fabric manages role lifecycle

Role is an executableCreate your own web server, host a database, background op., etc

Inbound onAny TCP Port

HTTP/HTTPS

Worker Role Web Role

Role is hosted on IIS

HTTP/HTTPS

ASP.NET, MVC

Fast CGI + PHP

Page 25: Windows Azure Overview

Full IIS

• Web Roles previously using Hosted Web Core– Only supports a single HTTP or HTTPS endpoint

• Web Roles now supporting Full IIS 7.0/7.5

• Enables new scenarios– Multiple IIS web sites

– Multiple virtual directories

– Configure IIS extensions

– Web Deploy for rapid development

Page 26: Windows Azure Overview

Full IIS Scenario (best case ☺ )

Phase Key Steps

Local Development • Use Visual Studio solution to code & deploy to

Compute Emulator

• Edit local content files without redeploying to

Compute Emulator

First-time Publish

(~10 Min)

• Deploy service to Windows Azure

• Ensure Windows Azure service definition (csdef/cscfg) configures

Web role:

• To enable remote WMSVC, WebDeploy, PowerShell, etc.

• As single instance

Iterative Development (seconds) • Continue coding in same Visual Studio solution

• Push intermittent changes (e.g. w/ Web Deploy)

Deployment of Final Version

(~10 Min)• Deploy service to Windows Azure• Note: If service is now multi-instance, Remote Desktop can be used, but other remote

mgmt. tools will get load- balanced to arbitrary instances.

Mitigation: Run mgmt. tools inside Remote Desktop session

Page 27: Windows Azure Overview

VM Role

• Developers have full control over the OS image

• Ability to upload your own customized WS08R2 Enterprise images

• Operators can reboot, re-image and Remote Desktop

Page 28: Windows Azure Overview

VM Role Lifecycle• Convert product DVD to a VHD, or use existing VHD

• Prepare the VHD

Build VM Image

• Create a service model with the above image.Create Service

• Store VHD in Windows Azure blob storageUpload Image

• Include in service model. Specify instance count.

• Package as cspkg, upload cskpg.Deploy Service

• Remote Desktop

• Reboot / Reimage

Maintain Service

• Repeat above steps, with a new OS image.Upgrade Service

Page 29: Windows Azure Overview

VM Role Lifecycle

CloudOn-Premises

Blob

Storage

Boot VHD

Customize VHD

Save Diff.VHD

Base.VHD

Identical/similar deployment

instances using

common uploaded OS image

(base.VHD + diff.VHD)

& Additional Software

& Windows Azure Integration Components

- Agent

- Runtime Interface (topo, config, shutdown notification, …)

- Remote Desktop configurator

- Diagnostics

- Windows Azure Drives driver

- Windows Azure Connect

& Generalize (Recommended)

Page 30: Windows Azure Overview

VM Role – Service definition

<ServiceDefinition name="MyVMRoleService" xmlns="…">

<VirtualMachineRole name="MachineRole" vmsize="Medium">

<Imports>

<Import moduleName="RemoteAccess" />

<Import moduleName="RemoteForwarder" />

<Import moduleName="Diagnostics" />

</Imports>

</VirtualMachineRole>

</ServiceDefinition>

Page 31: Windows Azure Overview

VM Role – Service configuration<ServiceConfiguration serviceName="MyVMRoleService" xmlns="…">

<Role name="MachineRole">

<OsImage href="20101020BaseVM.vhd" />

<Instances count="2" />

<ConfigurationSettings>

<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"

value="DefaultEndpointsProtocol=http;AccountName=mohittest;AccountKey=JEBzeqFeP1g==" />

<Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled" value="true"

/>

<Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername"

value="" />

<Setting

name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword" value="" />

<Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration"

value="2012-07-23T23:59:59.0000000-07:00" />

<Setting name="Microsoft.WindowsAzure.Plugins.RemoteForwarder.Enabled"

value="true" />

</ConfigurationSettings>

<Certificates>

<Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption"

thumbprint="195FD938F86D8785FF53C660BCBD283819E0271A" thumbprintAlgorithm="sha1" />

</Certificates>

</Role>

</ServiceConfiguration>

Page 32: Windows Azure Overview

VM Role Q&A

• Will any WS08 R2-based application work?– No, VM Role inherits some Web/worker restrictions:

• SLA requires at least two identical/similar instances• No durability of OS image on hardware failure• One public IP per service (unless using Windows Azure Virtual Network)

• Does Windows Azure take care of *everything*?– No

• With VM Role, the customer creates & maintains the OS• Windows Azure does not automatically understand the health of the applications running in our VM

– But, since you deploy services instead of individual VM’s, Windows Azure does automate many management tasks.

Page 33: Windows Azure Overview

Remote desktop Config

<?xml version="1.0" encoding="utf-8"?>

<ServiceDefinition name="RemoteAccess"

xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">

<WorkerRole name="GatewayRole">

<ConfigurationSettings>

<Setting name="DiagnosticsConnectionString" />

</ConfigurationSettings>

<Imports>

<Import moduleName="RemoteAccess" />

<Import moduleName="RemoteForwarder" />

</Imports>

</WorkerRole>

<WorkerRole name="TargetRole">

<ConfigurationSettings>

<Setting name="DiagnosticsConnectionString" />

</ConfigurationSettings>

<Imports>

<Import moduleName="RemoteAccess" />

</Imports>

</WorkerRole>

</ServiceDefinition>

Page 34: Windows Azure Overview

Remote desktop Config<Role name="WorkerRole1">

<Instances count="1" />

<ConfigurationSettings>

<Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled"

value="true" />

<Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername"

value="myuser" />

<Setting

name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword"

value="[base64]" />

<Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration"

value="2010-06-16T13:04:02.9666425-07:00" />

</ConfigurationSettings>

<Certificates>

<Certificate

name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordCertificate"

thumbprint="c0c23e1cdd7bfb20c14dce97b37ea67bd9f24918" thumbprintAlgorithm="sha1" />

</Certificates>

</Role>

Page 35: Windows Azure Overview

And… you’re connected ☺

Page 36: Windows Azure Overview

Windows Azure: VM Size• Windows Azure

– Supports Various VM Sizes

– Size set on Role in Service Definition

– Service can have multiple roles

– Balance of Performance per node vs. High Availability from multiple nodes

– Set in Service Model definitionAll instances of role will be of equal size

Size CPU Cores RAM Local Storage Cost

Extra Small Shared 768M 20GB .05

Small 1 1.7GB 250GB .12

Medium 2 3.5GB 500GB .24

Large 4 7GB 1000GB .48

Size CPU Cores RAM Local Storage Cost

Page 37: Windows Azure Overview

How to choose VM size

• Don’t just throw big VMs at every problem

• Scale out architectures have natural parallelism

• Big VMs allow us to Scale UP on a single machine.

• Test various configurations under load

• More small instances == more redundancy

• Some scenarios will benefit from more cores (E.g. Video processing, …)

Page 38: Windows Azure Overview

Windows Azure Networking

• 3 types of Endpoints in Windows Azure– Input (VIP)

– Internal

– Windows Azure Connect

• Specify Connectivity Rules in Service Definition– NetworkTrafficRules

• Port Ranges

• Local Ports

• TCP only

Page 39: Windows Azure Overview

Local Storage != W.A. Storage

• Role instances have available disk storage• Use LocalStorage element in service definition– Name– CleanOnRoleRecycle– Size

• Persistent but not guaranteed durable– Good for cached resources

• Windows Azure Storage Drives provide guaranteed durable storage

Page 40: Windows Azure Overview

Local Storage How To

• Config

• Code

Page 41: Windows Azure Overview

Windows Azure Storage

Page 42: Windows Azure Overview

Windows Azure Storage

• Tables– Table = group of entities

– Entity = name/value pairs

– Partitioned by key

• Scale out to Bns of entities

– Not an RDBMS

• Tables– Table = group of entities

– Entity = name/value pairs

– Partitioned by key

• Scale out to Bns of entities

– Not an RDBMS

• Blobs– Large binary storage

– Stored in container• Unlimited containers

• CDN Deliverable

• Partitioned by Blob name

• Drives– NTFS VHD mounted into

Compute instance

• Read/Write 1:1

• Read only 1:N

– Backed by Page Blob

– Cannot remotely map

Page 43: Windows Azure Overview

Windows Azure Storage Recap

• BlobsBlobsBlobsBlobs – Simple named files along with metadata for the file

• DrivesDrivesDrivesDrives – Durable NTFS volumes for Windows Azure applications to use. Based on Blobs.

• TablesTablesTablesTables – Structured storage. A Table is a set of entities; an entity is a set of properties

• QueuesQueuesQueuesQueues – Reliable storage and delivery of messages for an application

Page 44: Windows Azure Overview

Blob Storage

BlobContainerAccount

contosocontoso

imagesimages

PIC01.JPGPIC01.JPG

videosvideos VID1.AVI

http://<account>.blob.core.windows.net/<container>/<blobname>

Pages/

Blocks

Block/PageBlock/Page

Block/PageBlock/Page

PIC02.JPGPIC02.JPG

Page 45: Windows Azure Overview

Blob Containers

• Multiple Containers per Account– Special $root container

• Blob Container– A container holds a set of blobs– Set access policies at the container level – Associate Metadata with Container– List the blobs in a container

• Including Blob Metadata and MD5 • NO search/query. i.e. no WHERE MetadataValue = ?

• Blobs Throughput– Effectively in Partition of 1– Target of 60MB/s per Blob

Page 46: Windows Azure Overview

Blob Details• Main Web Service Operations

– PutBlob,GetBlob,DeleteBlob,CopyBlob,SnapshotBlob,LeaseBlob

• Associate Metadata with Blob

– Standard HTTP metadata/headers (Cache-Control, Content-Type, etc)

– Metadata is <name, value> pairs, up to 8KB per blob

– Either as part of PutBlob or independently

• Blob always accessed by name

– Can include ‘/‘ or other delimeter in name

• Large lists of blobs can be paginated

http://adventureworks.blob.core.windows.net/

Products/Bikes/FastBike.jpg

Products/Canoes/Whitewater.jpg

Products/Canoes/Hybrid.jpg

Products/Tents/PalaceTent.jpg

Page 47: Windows Azure Overview

Two types of Blob

• Block Blob – Targeted at streaming workloads

– Each blob consists of a sequence of blocks blocks blocks blocks • Each block is identified by a Block ID

– Size limit 200GB per blob

– Optimistic Concurrency via ETags

• Page Blob– Targeted at random read/write workloads

– Each blob consists of an array of pages pages pages pages • Each page is identified by its offset from the start of the blob

– Size limit 1TB per blob

– Optimistic or Pessimistic (locking) concurrency via Leases

Page 48: Windows Azure Overview

Windows Azure Drives

• Durable NTFS volume for Windows Azure Instances– Use existing NTFS APIs to access a network attached durable drive

– Use System.IO from .NET

• Benefits– Move existing apps using NTFS more easily to the cloud

– Durability and survival of data on instance recycle

• A Windows Azure Drive is a NTFS VHD Page Blob– Mounts Page Blob over the network as an NTFS drive

– Local cache on instance for read operations

– All flushed and unbuffered writes to drive are made durable to the Page Blob

Page 49: Windows Azure Overview

Windows Azure Drives Details

• Operations performed via Drive API not REST Calls

• Operations on Drives– CreateDriveCreateDriveCreateDriveCreateDrive

• Creates a new NTFS formatted VHD in Blob storage

– MountDriveMountDriveMountDriveMountDrive////UnmountDriveUnmountDriveUnmountDriveUnmountDrive• Mounts a drive into Instance at new drive letter

• Unmounts a drive freeing drive letter

– Get Mounted DrivesGet Mounted DrivesGet Mounted DrivesGet Mounted Drives• List mounted drives; underlying blob and drive letter

– Snapshot DriveSnapshot DriveSnapshot DriveSnapshot Drive• Create snapshot copy of the drive

Page 50: Windows Azure Overview

Table Storage

EntityTableAccount

contoso

customers

Name =…

Email = …

Name =…

EMailAdd= …

photos

Photo ID =…

Date =…

Photo ID =…

Date =…

Page 51: Windows Azure Overview

Table Details

• Not an RDBMS! More on table modeling in Storage Strategies session

• Table– Create, Query, DeleteCreate, Query, DeleteCreate, Query, DeleteCreate, Query, Delete

– Tables can have metadata

• Entities– InsertInsertInsertInsert

– Update Update Update Update • Merge – Partial update

• Replace – Update entire entity

– DeleteDeleteDeleteDelete

– QueryQueryQueryQuery

– Entity Group Transactions• Multiple CUD Operations in a single atomic transaction

Page 52: Windows Azure Overview

Table Storage Entities

• Entity can have up to 255 properties• Up to 1MB per entity

• Mandatory Properties for every entity• PartitionKey & RowKey (only indexed properties)

• Uniquely identifies an entity

• Defines the sort order

• Timestamp

• Optimistic Concurrency. Exposed as an HTTP ETag

• No fixed schema for other properties• Each property is stored as a <name, typed value> pair

• No schema stored for a table

• Properties can be the standard .NET types

• String, binary, bool, DateTime, GUID, int, int64, and double

Page 53: Windows Azure Overview

PartitionKey How To

• Entity Locality– Entities in the same partition will be stored together

– Efficient querying and cache locality

– Endeavour to include partition key in all queries

• Entity Group Transactions– Atomic multiple Insert/Update/Delete in same partition in a single transaction

• Table Scalability• Target throughput – 500 tps/partition, several thousand tps/account

– Windows Azure monitors the usage patterns of partitions

– Automatically load balance partitions– Each partition can be served by a different storage node

– Scale to meet the traffic needs of your table

Page 54: Windows Azure Overview

Queue Storage

MessageQueueAccount

order processing

customer IDorder IDhttp://…

customer IDorder IDhttp://…

adventureworks

Page 55: Windows Azure Overview

Lousely Coupled Workflow with Queues• Enables workflow between roles

– Load work in a queue (Producer can forget about message once it is in queue)

– Many workers consume the queue

– For extreme throughput (>500 tps)

• Use multiple queues

• Read messages in batches

• Multiple work items per message

Queue

Input Queue (Work Items)

Page 56: Windows Azure Overview

Queue’s Reliable Delivery

• Guarantee delivery/processing of messages (two-step consumption)

– Worker Dequeues message and it is marked as Invisible for a specified “Invisibility Time”

– Worker Deletes message when finished processing

– If Worker role crashes, message becomes visible for another Worker to process

– More on this pattern in the Async Workloads session

Page 57: Windows Azure Overview

Windows Azure Connect• Secure network connectivity

between on-premises and cloud– Supports standard IP protocols

• Example use cases:– Enterprise app migrated to

Windows Azure that requires access to on-premise SQL Server

– Windows Azure app domain-joined to corporate Active Directory

– Remote administration and trouble-shooting of Windows Azure Roles

• Simple setup and management

Windows Azure

Enterprise

Page 58: Windows Azure Overview

Windows Azure Service Deployment

• To use Connect with a WA service, enable one or more of its Roles– For Web & Worker Role, include the Connect plug-in as part of Service Model (.csdef file)

– For VM role, install the Connect agent in VHD image using the Connect VM install package

– Connect agent will automatically be deployed for each new role instance that starts up

• Connect agent configuration managed through the ServiceConfiguration (.cscfg) file– One required setting - “ActivationToken”

• Unique per-subscription token, accessed from Admin UI

– Optional settings for managing AD domain-join and service availability

Page 59: Windows Azure Overview

On-Premise Deployment

• Local computers are enabled for connectivity by installing & activating the Connect agent– Web-based installation link

• Retrieved from admin UI• Contains per-subscription activation token embedded in URL

– Standalone install package• Reads activation token from registry key• Enables installation using existing S/W distribution tools

• Connect agent tray icon & client UI– View activation state & connectivity status – Refresh network policy

• Connect agent automatically manages network connectivity – Sets up virtual network adapter– “Auto-connects” to Connect relay service as needed– Configures IPSec policy based on network policy – Enables DNS name resolution – Automatically syncs latest network policies

Page 60: Windows Azure Overview

Windows Azure Connect

SERVER1

SERVER2

Windows Azure

SERVER3DEV_LAPTOP1

Role A

Instance3Instance2Instance

Role B

Instance3Instance2Instance

DEV_LAPTOP2

My Servers My Laptops

Page 61: Windows Azure Overview
Page 62: Windows Azure Overview

SQL Azure Database

Page 63: Windows Azure Overview
Page 64: Windows Azure Overview

Architecture

• 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

Page 65: Windows Azure Overview

Database Replicas

Replica

1

Replica

2

Replica

3

DB

Replica

4

Page 66: Windows Azure Overview

Behind the scenes…Applicatio

n

Internet

LBTDS (tcp)

TDS (tcp)

TDS (tcp)

Apps use standard SQL client libraries: ODBC, ADO.Net, PHP, …

Load balancer forwards ‘sticky’ sessions to TDS protocol tier

Gateway Gateway Gateway Gateway Gateway Gateway

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

SQL SQL SQL SQL SQLSQL

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

Page 67: Windows Azure Overview

SQL Azure Compatibility

Currently supportedCurrently supportedCurrently supportedCurrently supported• Tables, indexes and views

• Stored Procedures

• Triggers

• Constraints

• Table variables, session temp tables (#t)

• Spatial types, HierarchyId

Not Currently SupportedNot Currently SupportedNot Currently SupportedNot Currently Supported• Data Types

– XML, Sparse Columns, Filestream

• Partitions

• Full-text indexes

• SQL-CLR

Tables require clustered indexes

Page 68: Windows Azure Overview

SQL Azure: Performance & Scalability

Database Design

• Table design

• Index design

• Query design

• Transaction design

Capacity

• Size limits

• Partitioning (shard)

Latency

• Redundancy

• Replica overhead

• Distance

• Affinity Groups

• SQL Azure Data Sync

• Sync Fx

Concurrency

• Replication

• SQL Azure Data Sync

• Partitioning (shard)

Scalability

• Scale-up

• Not an option

• Scale-out

• Partitioning (shard)

• SQL Azure Data Sync

Page 69: Windows Azure Overview

SQL Azure Database Editions

• Two SQL Azure Database SKUs: Web & Business– Web Edition:Web Edition:Web Edition:Web Edition: 1 GB @ $9.99/month | 5 GB @ $49.95/month– Business Edition:Business Edition:Business Edition:Business Edition: Up to 50 GB @ $99.99/10 GB/month

10 GB @ $99.99 | 20 GB @ $199.98 | 30 GB @ $299.97 | 40 GB @ $399.96 | 50 GB @ $499.95

• You specify Web or Business Edition– Web: Web: Web: Web: EDITION = web– Business: Business: Business: Business: EDITION = business

• You specify MAXSIZE– Web: Web: Web: Web: MAXSIZE = 1GB | 5GB– Business: Business: Business: Business: MAXSIZE = 10GB | 20GB | 30GB | 40GB | 50GB

• This is the maximum size we will not let you grow beyond• You will only be charged for the actual peak size in any one day rounded up

• For example, a 3.4 GB Web Edition will be charged 5GB rate.CREATE DATABASE foo1 (EDITION='business', MAXSIZE=50GB);CREATE DATABASE foo2 (EDITION='business', MAXSIZE=30GB);ALTER DATABASE foo2 MODIFY (EDITION='web', MAXSIZE=5GB);

Page 70: Windows Azure Overview

SQL Azure Reporting V1Reporting Services SQL Azure Reporting

Tooling - Business Intelligence Design

Studio (BIDS)

- Report Builder

- Business Intelligence Design

Studio (BIDS)

- Report Builder*

Supported data sources Diverse data sources SQL Azure databases

Report Management Report Manager or SharePoint

- display reports

- rendering to multiple

formats

- subscriptions

- scheduled delivery

Windows Azure Developer

Portal

URL browsing

Developer Extensibility Custom data sources,

assemblies, report items,

authentication, etc.

Extensibility is not yet enabled

Security Model Windows Authentication SQL Azure

Username/password

Page 71: Windows Azure Overview

SQL Azure Data Sync

• Elastic Scale– Service scales as resources requirements grow

• No-Code Sync Configuration– Easily define data to be synchronized

• Schedule Sync– Choose how often data is synchronized

• Conflict Handling– Handle issues where same data is changed in multiple locations

• Logging and Monitoring– Administration capabilities for tracking data and monitoring potential issues

Page 72: Windows Azure Overview

SQL Azure Data Sync

• Geo-replication of SQL Azure data and spanning on-premises with cloud– CTP1 released in June with

geo-replication

– CTP2 to be released Q4CY10; adds sync between SQL Server and SQL Azure

• Builds on Sync Framework– Sync data between SQL Azure, SQL Compact and SQL Server

– Sync Fx 2.1 RTW on August 18th

– Next version enables sync for offline clients

On-Premises Cloud Offline

Clients

Page 73: Windows Azure Overview

Sync

Simple protocol

(OData& Sync)

Minimal client &

store

requirements

Client API

support

Windows Server

/ IIS

Sync

Endpoint

sAuth /

Mgmt / Bus

Logic

SyncFx

SQL Server

WindowsAzu

re

Sync

Endpoint

sAuth /

Mgmt / Bus

Logic

SyncFx

SQL Azure

Sync smarts on

server, not on

client

Easy to develop the

sync endpoints

Client API

support

Sync Framework

Page 74: Windows Azure Overview
Page 75: Windows Azure Overview

Windows Azure AppFabric

Page 76: Windows Azure Overview

Fabric Controller = Cloud OS Kernel

My AppMy AppMy AppMy App

Windows Server

Kernel

Security

Management

Task scheduler

HW abstraction layer

My AppMy AppMy AppMy App

Windows AZURE

Fabric Controller

Security

Management

Task scheduler

HW abstraction layer

Page 77: Windows Azure Overview

Windows Azure AppFabric

• Comprehensive building block services for developing, deploying, and managing applications

• Higher level Platform-as-a-Service (PaaS) capabilities

• Increase developer productivity

• Bridge existing applications to the cloud

Windows Azure AppFabric

Caching Service Bus Access Control IntegrationComposite App

(WF, WCF)

Page 78: Windows Azure Overview

Caching Service

• A distributed, in-memory cache for applications running in Windows Azure

• Simple administration; end-user doesn’t bother with configuration, deployment, or management

• Highlight scalable solution with low latency and high throughput

• Based on Windows Server AppFabricCaching

Page 79: Windows Azure Overview

Latency chart

Memory

Network

Disk

Page 80: Windows Azure Overview

Access Control

• Used to authenticate and authorize users• Integration Single Sign On and centralized authorization into your web applications

• Standards-based identity providers– Enterprise directories (e.g. Active Directory Federation Server v2.0)

– Web identities (e.g. Windows Live ID, Google, Yahoo!, and Facebook)

• V1 available in production; V2 available in AppFabric LABS

Page 81: Windows Azure Overview

Access Control features

• Integrates with Windows Identity Foundation and tooling

• Claims-based access control• Support for OAuth WRAP, WS-Trust, and WS-Federation protocols

• Support for the SAML 1.1, SAML 2.0, and Simple Web Token token formats

• Integrated and customizable Home Realm Discovery

• OData-based Management Service to ACS configuration

Page 82: Windows Azure Overview

Service Bus

• Provides secure messaging and connectivity across different network topologies

• Enables hybrid applications that span on-premises and the cloud

• Enables various communication protocols and patterns for developers to engage in reliable messaging

Page 83: Windows Azure Overview

Enabling hybrid applications

Datacenter

LOB web service

LOB app

Partner

Mobile Device

Page 84: Windows Azure Overview

Enabling hybrid applications

Datacenter

LOB web service

LOB app

Partner

Mobile Device

SB

ACS

Page 85: Windows Azure Overview

Enabling hybrid applications

Datacenter

LOB web service

LOB app

Partner

Mobile Device

SB

ACS

Page 86: Windows Azure Overview

Enabling hybrid applications

Partner

Mobile Device

Datacenter

LOB web service

LOB appSB

ACS

Page 87: Windows Azure Overview

Enabling hybrid applications

Partner

Mobile Device

Datacenter

LOB web service

LOB appSB

ACS

Page 88: Windows Azure Overview

WINDOWS AZURE WINDOWS AZURE WINDOWS AZURE WINDOWS AZURE DEVELOPMENTDEVELOPMENTDEVELOPMENTDEVELOPMENT

Page 89: Windows Azure Overview

Moving apps to the Cloud

Compatible with Windows Azure

Designed forWindows Azure

Delivered as a

Service

Page 90: Windows Azure Overview

Asp.Net in Azure• Windows Azure Tools for Visual Studio pre-defined role templates– ASP.NET WebForms Role

– ASP.NET MVC 2 Role

Page 91: Windows Azure Overview

There are some differences…

Page 92: Windows Azure Overview

Statelessness

–Load balancer round-robins requests in multi instance roles

–Follow web farm best practices• Do not store state on individual instances • Do not assume subsequent requests will hit the same instance

–Don’t forget things like dynamically generated images loaded by a page

Page 93: Windows Azure Overview

AJAX on Azure

• Client side calls may not return to the same instance the original page came from

• AJAX calls must be stateless– Don’t generate a page and leave state on the server to call via AJAX later

• All instances require the same MachineKey for ViewState hashing– Fabric uses same machine key for all instances in a role

Page 94: Windows Azure Overview

Session State

Page 95: Windows Azure Overview

Solutions to Session State

• Persist to Storage via Session State Provider– Windows Azure AppFabric Caching

– SQL Azure

– Windows Azure Storage (only sample!)

– Custom (Memcached)

• Persist to Client– Use cookies

Page 96: Windows Azure Overview

DNS• All services get a *.cloudapp.net address

– myservicename.cloudapp.net

– TTL is 10 seconds

• Standard approach is to CNAME to *.cloudapp.net

– Requires two DNS lookups

– Limited caching due to low TTL

• IP Address for deployment is fixed for lifetime of that slot

• Create service, deploy to staging slot

• Resolve IP for yourapp.cloudapp.net

• Create A Record for

• www.yourapp.com

• yourapp.com

Page 97: Windows Azure Overview

Configuration Apps

• Store arbitrary configuration string values– Define in model– Populate in configuration

• RoleEnvironment– .GetConfigurationSettingValue()

• Don’t use web.config for values you wish to change at runtime– App/Web.config is packaged with deployment change requires re-deploy

– *.cscfg supports change tracking and notification to running role instances

Page 98: Windows Azure Overview

Handling Config changes

• RoleEnvironment.Changing– Occurs before configuration is changed– Can be cancelled – causes a recycle

• RoleEnvironment.Changed– Occurs after config change has been applied

• RoleEnvironmentConfigurationSettingChange– Provides config value that was changed

• RoleEnvironmentTopologyChange– When role count is changed

Page 99: Windows Azure Overview

Monitoring Apps

• Monitoring is not Debugging

• Instrument your application using Trace, Debug– DiagnosticMonitorTraceListener

• Use Diagnostics API to Configure and Collect– Event Logs

– Performance Counters

– Trace/Debug information (logging)

– IIS Logs, Failed Request Logs

– Crash Dumps or Arbitrary files

• Request data on demand or scheduled– Transferred into your table and/or blob storage

Page 100: Windows Azure Overview

Monitoring is not free ( � )

• Monitoring vs Debugging/Troubleshooting

• Volume of Data

• Reaction Time

• $ Cost

Page 101: Windows Azure Overview

Troubleshooting

• Intellitrace – DVR for debugging– Requires VS Ultimate, .NET 4 today

• Remote Desktop• Custom Trace Listener

Page 102: Windows Azure Overview

Deployment Environments

• Two Environments to choose from

• Nearly Identical…– <servicename>.cloudapp.net

– <deploymentID>.cloudapp.net

• VIP Swap between them

Page 103: Windows Azure Overview

How to Upgrade App

• VIP Swap:– Uses Staging and Production environments.

– Allows to quickly swap environments.

– Production: v1 � Staging: v2, after swap then Production: v2 Staging: v1.

• In-Place Upgrade– Performs a rolling upgrade on live service.

– Entire service or a single role

– Manual or Automatic across update domains

– Cannot change Service Model

Page 104: Windows Azure Overview

Deployment & Mgmt Tools

• Visual Studio• CSManage.exe• Windows Azure MMC• Windows Azure Service Management (WASM) cmdlets

• 3rd Party tools

Page 105: Windows Azure Overview

Web Deploy

• IIS Web Deployment Tool• Simplifies the migration, management, and deployment of IIS Web servers, Web applications, and Web sites

• You’ll be able to do web deploy using standard IIS7 publishing from Visual Studio

• Will not require you to deploy an entire package

• Warning: use for development purposes only (!!!)

Page 106: Windows Azure Overview

Windows Azure Service Management Cmdlets

• Set of PowerShell cmdlets

• Wraps Management REST API and Diagnostics API

• Enables building of sophisticated deployment scripts

• Works with rest of .NET CLR

Page 107: Windows Azure Overview

Windows Azure MMC

• MMC Snapin providing graphical view of services, diagnostics, and storage

• Built on top of WASM Cmdlets

• Plugin-based, extensible

• Remotely configure diagnostics

• Download and view diagnostics

Page 108: Windows Azure Overview