1 Neil Kidd MTC Architect - DPE NeilKidd Neil Kidd MTC Architect - DPE NeilKidd
The next 40 minutes Understand what Windows Azure is Understand the reasons to use Windows Azure Business and Technical Why Windows Azure is Game Changing Based on my: Experience building Proof of Concepts Discussions with colleagues Talking to customers I’m not from the Product Group
Windows Azure
Promise of Azure Microsoft runs your application No Upfront Costs Low Admin overhead Kept patched Scale on demand Fault tolerant
What does Success 2.0 look like? Users Servers Add some Web Servers Buy bigger SQL Box Buy bigger SQL Box Rearchitect Database to scale out Buy more of everything Unusedcapacity
Windows Azure Datacenter Your Service Windows Azure Building Blocks LB InternetInternet Web Site (ASPX, ASMX, WCF) Web Site (ASPX, ASMX, WCF) Web Site (ASPX, ASMX, WCF) Web Site (ASPX, ASMX, WCF) Web Role (ASPX, WCF) Web Role (ASPX, WCF) Worker Service Worker Role LB StorageStorage Tables Blobs Queue
Partial Trust “Dev Fabric” Dev Environment
HV-enabled Server Core base VHD Image-Based Deployment Host Partition Host partition differencing VHD Guest Partition Guest partition differencing VHD Server Enterprise base VHD Guest partition differencing VHD Application VHD Server Core base VHD Server Enterprise base VHD Maintenance OS App1 Package App3 Package App2 Package Guest Partition
Azure Tables
Tables - Capabilities What tables don’t do Not relational No Referential Integrity No Joins Limited Queries No Group by No Aggregations Limited Indexes No Transactions What tables can do CheapCheap Very Scalable FlexibleFlexible DurableDurable If these are important to you, use:
Data Model Data stored in Tables A Table is a set of Entities (rows) An Entity is a set of Properties (columns) Entity has: PartitionKey – enables scalability RowKey – unique id within the partition the only indexed property Timestamp – for optimistic concurrency 255 properties for your data Max size of 1MB
Azure Queues
QueueQueue Msg 1 Msg 2 Msg 3 Msg 4 Worker Role PutMessagePutMessage Web Role GetMessage (Timeout) RemoveMessageRemoveMessage Msg 2 Msg 1 Worker Role Msg 2
Azure Queues
Azure Blobs
Block Blob Storage Concepts Key concepts account, container, blob, and blocks BlobContainerAccount IMG001.JPGIMG002.JPGMoviesBlock AAAABlock AAABBlock AAACAccountPicturesMOV1.AVI
Blob Namespace Blob URL: / / Example: Account – sally Container – music BlobName – rock/rush/xanadu.mp3 URL: BlobContainerAccount sally pictures IMG001.JPG IMG002.JPG movies MOV1.AVI
Azure Compute
Azure Compute Instance
Taking the Search out of Search & Rescue Man OverBoard Guardian
MOB Guardian
Built on: Windows Server 2003 SQL Server 2005.Net 2.0 This system is in production It has so far saved the lives of 5 people We were asked if Azure could run the application.
Taking the Search out of Search & Rescue Man Overboard Guardian
What we did & what we learnt
Worker Role Architecture New Msg Queue New Msg Queue Parse & Route Alarm Queue Alarm Queue Pos Rpt Queue Pos Rpt Queue Cancel Queue Cancel Queue Alarm Processor Alarm Processor Pos Report Processor Pos Report Processor Cancel Processor Cancel Processor Incident Table Incident Table Pos Rpt Table Pos Rpt Table Timer Table Timer Table Event Table Event Table Overdue Processor Overdue Processor
Pos Rpt Queue Pos Rpt Queue Cancel Queue Cancel Queue Alarm Processor Alarm Processor Pos Report Processor Pos Report Processor Cancel Processor Cancel Processor Incident Table Incident Table Pos Rpt Table Pos Rpt Table Timer Table Timer Table Event Table Event Table Overdue Processor Overdue Processor New Msg Queue New Msg Queue Parse & Route Alarm Queue Alarm Queue Queues for Reliability Alarm Processor Alarm Processor Incident Table Incident Table Pos Rpt Table Pos Rpt Table Event Table Event Table
Porting Tables Vessel Position Reporting System – SQL Server VesselIdVesselId xxx-xx1xxx-xx1 TimeTime 10:15 14 Nov LatitudeLatitude LongitudeLongitude SpeedSpeed 00 xxx-xx1xxx-xx1 10:05 14 Nov xxx-xx1xxx-xx1 09:55 14 Nov xxx-xx2xxx-xx2 10:15 14 Nov To find last pos report for vessel in SQL: select TOP(1) * from PosRpts order by [Time] DESC where VesselId = ??? To find last pos report for vessel in SQL: select TOP(1) * from PosRpts order by [Time] DESC where VesselId = ???
Porting Tables Solving this the Azure way PartitionKeyPartitionKey TimeTimeLatitudeLatitudeLongitudeLongitudeSpeedSpeed xxx-xx1xxx-xx1 10:15 14 Nov xxx-xx1xxx-xx1 10:05 14 Nov xxx-xx1xxx-xx1 09:55 14 Nov xxx-xx2xxx-xx :15 14 Nov PartitionKeyPartitionKey VesselIdVesselId
Porting Tables PartitionKeyPartitionKey RowKeyRowKeyLatitudeLatitudeLongitudeLongitudeSpeedSpeed xxx-xx1xxx-xx1 10:15 14 Nov :05 14 Nov :55 14 Nov RowKey needs to be a string xxx-xx2xxx-xx2 10:15 14 Nov PartitionKeyPartitionKey (DateTime.MaxValue – time).Ticks.ToString () Stored in-order: Just need to do a top on the partition time.Ticks.ToString () 100 nanoseconds! Makes it descending
Azure Storage - Tables “That works great, but what if I want to query all the vessels with in 5 miles of a location?”
Business model Consumption-based billing Strict SLAs with financial guarantees Global reach Presence in multiple datacenters Geo-distribution Service hosting options Native code support
Summary
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.