windows azure overview
DESCRIPTION
My Windows Azure presentation @ Microsoft Community Tour 2011TRANSCRIPT
A lap around the Seattle’s Clouds (and there are a lot of them ☺ )
Stefano [email protected]
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