• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Windows Azure Overview
 

Windows Azure Overview

on

  • 4,454 views

My Windows Azure presentation @ Microsoft Community Tour 2011

My Windows Azure presentation @ Microsoft Community Tour 2011

Statistics

Views

Total Views
4,454
Views on SlideShare
4,017
Embed Views
437

Actions

Likes
2
Downloads
53
Comments
0

6 Embeds 437

http://stefanopaluello.wordpress.com 429
http://www.linkedin.com 3
url_unknown 2
https://twitter.com 1
http://translate.googleusercontent.com 1
http://prlog.ru 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Windows Azure Overview Windows Azure Overview Presentation Transcript

    • A lap around the Seattle’s Clouds (and there are a lot of them ☺ )Stefano Paluellostefano.paluello@pastesoft.comhttp://stefanopaluello.wordpress.comTwitter: @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? Allocated Load IT-capacities Forecast Not Enough PowerIT CAPACITY Too Much Power Actual Load TIME
    • Load No screaming Capacity on Forecast customers Demand IT CAPACITY No capital Knob goes laying idle up... And... downLower Capex Actual Load TIME
    • Cloud Services “IaaS” “PaaS” “SaaS”Infrastructure-as-a-Service Platform-as-a-Service Software-as-a-Service host build consume
    • Cloud services Packaged Infrastructure Platform Software Software (as a Service) (as a Service) (as a Service) Applications Applications Applications Applications You manage Data Data Data Data You manage Runtime Runtime Runtime Runtime Managed by vendor Middleware Middleware Middleware Middleware Managed by vendorYou manage O/S O/S Managed by vendor O/S O/S Virtualization Virtualization Virtualization Virtualization Servers Servers Servers Servers Storage Storage Storage Storage Networking Networking Networking Networking
    • Who are the “players”?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,…• Common services: – Resource pooling, Elasticity, Pay-per-use, On-demand self-service, Measured service, Broad network access
    • What are the differences? On-Premise Hosting Cloud• Manage all on your own • Rent HW, SW & network • Shared multi-tenant server farm (electricity, • Less control and infrastructure network, hw, sw..) responsibility than On- • Resource pooling• Full control & Premise • On-demand self-service responsibility • More flexible • Elasticity, network• Fixed capacity • Less investment than independent• High initial investment On-Premise • Measured services • Fixed cost with fixed • Pay-per-use capacity also when the server aren’t working
    • Welcome…
    • Windows Azure Platform
    • Windows Azure Data Centers 6 Datacenters across 3 continents Windows Azure Platform available in 41 countries
    • Windows Azure Compute• 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 “internals” Business Portal Developer Portal User Code REST Service Management Service Runtime API Storage Cluster Compute Cluster … … VM Setup VS Tools … Cloud VM WA SDK RESTDesktop MSFT Datacenters
    • Hierarchy in Windows Azure• Subscription – contains a collection of Services (up to 6), determines the billing model (with standard, discounted or bundled charges)• Services – Isolation boundary with a public URL, composed by Roles (up to 5), defined in the Service Model• Roles – Defined in the Service Model (VM size, Communications endpoints, Storage Resources, etc.), at run-time a Role can execute up to 20 Instances per Subscription• Instances – Set of code and data deployed in a VM
    • Windows Azure Roles Windows Azure supported roles : • Web role – is a role that is customized for web application programming as supported by IIS 7 and ASP.NET. • Worker role – is a role that is useful for generalized development, and may perform background processing for a web role. • VM role – is a special type of role that enables you to define the configuration & updates of the OS for the VM. 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 The Internet The Internet via TCP or HTTP L L B L B B Queues Web Site Worker Worker Worker Web Site WebASMX, WCF) Role (ASPX, (ASPX, ASMX, WCF) Role Service Service IIS as Host Managed Interface Call Blobs Tables Storage Windows Azure Data Center
    • 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
    • Hello Windows AzureDEMO
    • 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 Worker Role Web Role Role is an executable Role is hosted on IIS Create your own web server, host HTTP/HTTPS a database, background op., etc ASP.NET, MVC Inbound on Fast CGI + PHP Any TCP Port HTTP/HTTPS
    • 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 StepsLocal Development • Use Visual Studio solution to code & deploy to Compute Emulator • Edit local content files without redeploying to Compute EmulatorFirst-time Publish • Deploy service to Windows Azure(~10 Min) • Ensure Windows Azure service definition (csdef/cscfg) configures Web role: • To enable remote WMSVC, WebDeploy, PowerShell, etc. • As single instanceIterative Development (seconds) • Continue coding in same Visual Studio solution • Push intermittent changes (e.g. w/ Web Deploy)Deployment of Final Version • Deploy service to Windows Azure(~10 Min) • 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 Build VM • Convert product DVD to a VHD, or use existing VHD Image • Prepare the VHDCreate Service • Create a service model with the above image.Upload Image • Store VHD in Windows Azure blob storage • Include in service model. Specify instance count.Deploy Service • Package as cspkg, upload cskpg. Maintain • Remote Desktop Service • Reboot / Reimage Upgrade • Repeat above steps, with a new OS image. Service
    • VM Role Lifecycle Identical/similar deployment instances using common uploaded OS image Base.VHD (base.VHD + diff.VHD)& Additional Software& Windows Azure Integration Components - Agent Blob - Runtime Interface (topo, config, shutdown notification, …) Storage - Remote Desktop configurator - Diagnostics Boot VHD - Windows Azure Drives driver - Windows Azure Connect& Generalize (Recommended) Customize Save VHD Diff.VHD On-Premises Cloud
    • 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="" /> <Settingname="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" /> <Settingname="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> <Certificatename="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 definition All instances of role will be of equal sizeSize CPU Cores RAM Local Storage CostExtra Small Shared 768M 20GB .05Small 1 1.7GB 250GB .12Medium 2 3.5GB 500GB .24Large 4 7GB 1000GB .48Size 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 • Blobs – Table = group of entities – Large binary storage – Entity = name/value pairs – Stored in container – Partitioned by key • Unlimited containers • Scale out to Bns of • CDN Deliverable entities • Partitioned by Blob name – Not an RDBMS • Drives• Tables – NTFS VHD mounted into – Table = group of entities Compute instance – Entity = name/value pairs • Read/Write 1:1 – Partitioned by key • Read only 1:N • Scale out to Bns of – Backed by Page Blob entities – Cannot remotely map – Not an RDBMS
    • Windows Azure Storage Recap• Blobs – Simple named files along with metadata for the file• Drives – Durable NTFS volumes for Windows Azure applications to use. Based on Blobs.• Tables – Structured storage. A Table is a set of entities; an entity is a set of properties• Queues – Reliable storage and delivery of messages for an application
    • Blob Storage http://<account>.blob.core.windows.net/<container>/<blobname> Pages/Account Container Blob Blocks PIC01.JPG images Block/Page PIC02.JPGcontoso Block/Page videos VID1.AVI
    • 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 • 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 • 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 – CreateDrive • Creates a new NTFS formatted VHD in Blob storage – MountDrive/UnmountDrive MountDrive/ • Mounts a drive into Instance at new drive letter • Unmounts a drive freeing drive letter – Get Mounted Drives • List mounted drives; underlying blob and drive letter – Snapshot Drive • Create snapshot copy of the drive
    • Table StorageAccount Table Entity Name =… Email = … customers Name =… EMailAdd= … contoso Photo ID =… Date =… photos Photo ID =… Date =…
    • Table Details• Not an RDBMS! More on table modeling in Storage Strategies session• Table – Create, Query, Delete – Tables can have metadata• Entities – Insert – Update • Merge – Partial update • Replace – Update entire entity – Delete – Query – 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 StorageAccount Queue Message customer ID order ID http://…adventureworks order processing customer ID order ID http://…
    • 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 Input Queue (Work Items) Queue
    • 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 Windows Azure• 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 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 Windows Azure Role A Role B Instance3 Instance2 Instance3 Instance2 Instance Instance My Servers My LaptopsSERVER1 DEV_LAPTOP1 SERVER2 SERVER3 DEV_LAPTOP2
    • 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 DB 2 Replica 3 Replica 4
    • Behind the scenes… Applicatio Apps use standard SQL client n libraries: ODBC, ADO.Net, PHP, … Internet Load balancer forwards ‘sticky’ TDS (tcp) LB sessions to TDS protocol tierTDS (tcp) Gateway Gateway Gateway Gateway Gateway Gateway Gateway: TDS protocol gateway, enforces AUTHN/AUTHZ policy; proxy to backend SQLTDS (tcp)SQL SQL SQL SQL SQL SQL Scalability and Availability: Fabric, Failover, Replication, and Load balancing
    • SQL Azure CompatibilityCurrently supported Not Currently Supported• Tables, indexes and views • Data Types• Stored Procedures – XML, Sparse Columns,• Triggers Filestream• Constraints • Partitions• Table variables, • Full-text indexes session temp tables (#t) • SQL-CLR• Spatial types, HierarchyId Tables require clustered indexes
    • SQL Azure: Performance & ScalabilityDatabase Design Capacity Latency Concurrency Scalability• Table design • Size limits • Redundancy • Replication • Scale-up• Index design • Partitioning (shard) • Replica overhead • SQL Azure Data • Not an option• Query design • Distance Sync • Scale-out• Transaction design • Affinity Groups • Partitioning (shard) • Partitioning (shard) • SQL Azure Data • SQL Azure Data Sync Sync • Sync Fx
    • SQL Azure Database Editions• Two SQL Azure Database SKUs: Web & Business – Web Edition: 1 GB @ $9.99/month | 5 GB @ $49.95/month – 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: EDITION = web – Business: EDITION = business• You specify MAXSIZE – Web: MAXSIZE = 1GB | 5GB – 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 V1 Reporting Services SQL Azure ReportingTooling - Business Intelligence Design - Business Intelligence Design Studio (BIDS) Studio (BIDS) - Report Builder - Report Builder*Supported data sources Diverse data sources SQL Azure databasesReport Management Report Manager or SharePoint Windows Azure Developer - display reports Portal - rendering to multiple URL browsing formats - subscriptions - scheduled deliveryDeveloper Extensibility Custom data sources, Extensibility is not yet enabled assemblies, report items, authentication, etc.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 On-Premises Cloud Offline• Geo-replication of SQL Azure data Clients 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
    • Sync Framework Sync smarts on Easy to develop the server, not on sync endpoints client SyncFx Sync Client API Endpoint support Auth / s Mgmt / Bus Logic SQL Azure Simple protocol (OData& Sync) WindowsAzu re Sync SyncFx Sync Endpoint Auth / s Mgmt / Bus Logic SQL Server Minimal client & store requirements Windows Server / IIS
    • Windows Azure AppFabric
    • Fabric Controller = Cloud OS Kernel My App My App Windows Server Windows AZURE Security Security Management Management Kernel Fabric Controller Task scheduler Task scheduler HW abstraction layer 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 Composite App Caching Service Bus Access Control Integration (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 AppFabric Caching
    • 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 Partner LOB app LOB web service Mobile Device
    • Enabling hybrid applications Datacenter Partner ACS SB LOB app LOB web service Mobile Device
    • Enabling hybrid applications Datacenter Partner ACS SB LOB app LOB web service Mobile Device
    • Enabling hybrid applications Datacenter Partner ACS SB LOB app LOB web service Mobile Device
    • Enabling hybrid applications Datacenter Partner ACS SB LOB app LOB web service Mobile Device
    • WINDOWS AZUREDEVELOPMENT
    • Moving apps to the CloudCompatible with Designed for Delivered as aWindows Azure Windows Azure 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• RoleEnvironmentConfigurationSettingCh ange – 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