Windows Azure Overview

Preview:

DESCRIPTION

My Windows Azure presentation @ Microsoft Community Tour 2011

Citation preview

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

Stefano Paluellostefano.paluello@pastesoft.com

http://stefanopaluello.wordpress.com

Twitter: @palutz

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

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.

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

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

Cloud Services

Infrastructure-as-a-Service

host

“IaaS”Platform-as-a-Service

build

“PaaS”Software-as-a-Service

consume

“SaaS”

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

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,…

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

Welcome…

Windows Azure Platform

Windows Azure Data Centers

6 Datacenters across 3 continentsWindows Azure Platform available in 41 countries

• 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

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

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

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

Windows Azure Roles

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

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

DEMODEMODEMODEMOHello Windows Azure

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

Role Lifecycle

• All Roles MAY extend RoleEntryPoint

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

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

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

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

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

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

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)

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>

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>

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.

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>

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>

And… you’re connected ☺

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

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, …)

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

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

Local Storage How To

• Config

• Code

Windows Azure Storage

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

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

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

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

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

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

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

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

Table Storage

EntityTableAccount

contoso

customers

Name =…

Email = …

Name =…

EMailAdd= …

photos

Photo ID =…

Date =…

Photo ID =…

Date =…

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

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

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

Queue Storage

MessageQueueAccount

order processing

customer IDorder IDhttp://…

customer IDorder IDhttp://…

adventureworks

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)

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

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

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

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

Windows Azure Connect

SERVER1

SERVER2

Windows Azure

SERVER3DEV_LAPTOP1

Role A

Instance3Instance2Instance

Role B

Instance3Instance2Instance

DEV_LAPTOP2

My Servers My Laptops

SQL Azure Database

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

Database Replicas

Replica

1

Replica

2

Replica

3

DB

Replica

4

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

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

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

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);

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

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

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

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

Windows Azure AppFabric

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

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)

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

Latency chart

Memory

Network

Disk

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

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

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

Enabling hybrid applications

Datacenter

LOB web service

LOB app

Partner

Mobile Device

Enabling hybrid applications

Datacenter

LOB web service

LOB app

Partner

Mobile Device

SB

ACS

Enabling hybrid applications

Datacenter

LOB web service

LOB app

Partner

Mobile Device

SB

ACS

Enabling hybrid applications

Partner

Mobile Device

Datacenter

LOB web service

LOB appSB

ACS

Enabling hybrid applications

Partner

Mobile Device

Datacenter

LOB web service

LOB appSB

ACS

WINDOWS AZURE WINDOWS AZURE WINDOWS AZURE WINDOWS AZURE DEVELOPMENTDEVELOPMENTDEVELOPMENTDEVELOPMENT

Moving apps to the Cloud

Compatible with Windows Azure

Designed forWindows Azure

Delivered as a

Service

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

– ASP.NET MVC 2 Role

There are some differences…

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

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

Session State

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

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

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

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

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

Monitoring is not free ( � )

• Monitoring vs Debugging/Troubleshooting

• Volume of Data

• Reaction Time

• $ Cost

Troubleshooting

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

• Remote Desktop• Custom Trace Listener

Deployment Environments

• Two Environments to choose from

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

– <deploymentID>.cloudapp.net

• VIP Swap between them

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

Deployment & Mgmt Tools

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

• 3rd Party tools

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 (!!!)

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

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