There are three core tenants of Windows Azure storage - queues, tables, and blobs. One of the great features of Windows Azure is that we can consume the storage services from platform that communicate via a REST interface. Libraries are available which make working with the native REST interface a more natural experience, but all features are not available in many libraries. In this webcast we will take a look Windows Azure storage from a developer's point of view. We'll look at using the native REST interface, as well as the .NET storage client library, for working with Windows Azure storage.
2. About Me
Michael S. Collier
National Architect,
Windows Azure
michael.collier@neudesic.com
@MichaelCollier
www.MichaelSCollier.com
3. Today’s Agenda
• Windows Azure Storage Overview
• Using the REST API
• Using Windows Azure Library for .NET
• Developer Tips & Tricks
4. Windows Azure Storage
• Cloud Data Storage
– Scalable, durable, and highly available
– Anytime, anywhere access
– Only pay for what you use
• Storage Abstractions
– Tables
• structured storage
• set of entities
• Partition Key + Row Key = Composite Index. The only index.
– Queues
• Storage & delivery of simple messages
– Blobs
• Simple file storage
• Metadata
• Run a static site directly from blob storage!
5. Storage Infrastructure
• Stored in triplicate
– Geo-replication for tables and blobs
• REST service running in Windows Azure
• Partitions
– Unit of scale and redundancy
– Vary by storage type
• Queue: 1 queue == 1 partition
• Table: 1 table partition (PK) == 1 partition
• Blob: 1 blob == 1 partition
• Performance targets
– Partition: 500 transactions/sec
– Storage Account: 5,000 transactions/sec
6. Storage Account
• Choose from 6 Windows Azure data centers
– US: North Central US, South Central US
– Europe: West Europe, North Europe
– Asia: Southeast Asia, East Asia
• CDN available (blob storage)
– 24+ edge cache nodes worldwide
– Gets data closer to user – better performance / experience.
• Security – two 512-bit shared secret keys
• Shared Access Signatures
– Secure access to data in blob storage via signed URLs
– Container or blob
• 100 TBs per storage account
• Keep data and compute close
7. Storage Analytics
Logs Metrics
• Trace executed requests • Request (hourly)
– # of requests
– Stored in blob storage – Avg. latency
($logs) – Avg. bandwidth
– Example Usages – Etc.
• Which containers are – $MetricsTransactionsBlob/Ta
being accessed? ble/Queue
• Who issued a request to • Capacity (daily)
delete a container? – Blob storage only
• Investigate errors – Space consumed
• Investigate performance –
– # of containers & blobs
where is the slowness? – $MetricsCapacityBlob
• Stored in table storage
http://bit.ly/AzureStorageAnalytics
8. Using the REST API and Storage Client Library for .NET
DEMO
10. Storage Emulator
• Updates historically not applied to emulator at same
pace as Windows Azure storage services.
• Good for some local testing – go to the cloud once
comfortable with general solution.
• Understand differences -
http://msdn.microsoft.com/gg433135
11. Storage Accounts
• Separate accounts
– Application vs. Diagnostics
– Production vs. Development vs. QA
• Understand what constitutes a “transaction”
– There is a cost for everything
– Consider batch operations
• Realize PK + RK is your only index in table storage
– Once created, PK and RK can’t be changed
– Duplication of data is OK
• Deleting a table or queue is NOT instant
– Approx. 40 seconds for system to GC
12. Resources
• Windows Azure Storage Samples
– http://azurestoragesamples.codeplex.com
• Windows Azure Storage Architecture Overview
– http://blogs.msdn.com/b/windowsazurestorage/archive/2010/12/30/
windows-azure-storage-architecture-overview.aspx
• Windows Azure Storage, Internal Details Whitepaper
– http://blogs.msdn.com/b/windowsazurestorage/archive/2011/11/20/
windows-azure-storage-a-highly-available-cloud-storage-service-
with-strong-consistency.aspx
• Azure Storage Explorer
– http://azurestorageexplorer.codeplex.com/
• Cerebrata Cloud Storage Studio
– http://www.cerebrata.com/Products/CloudStorageStudio/
Notas del editor
Windows Azure National ArchitectWindows Azure MVPHelp customers nationwide with their Windows Azure projects. This can include architectural design sessions, training, development, evangelism, etc.Reach me via email, Twitter, or my blob.
Overview, quickly describing some of the features of the Windows Azure storage service.Code Samples on using the REST API and Windows Azure Storage Client Library for .NETWrap up a few tips & tricks.Leave time at the end for a few questions.
Scalable, durable, highly available cloud data storageAccess from anywhere with an internet connectionTalk REST – Windows Phone, iPhone, mainframe, Windows Services, web apps, etc.Only pay for what you use. Utility pricing. While you have a lot of storage space available, you’re only paying for the data that you’re storing.Tables- structured storage – NoSQL approach to storing data- Set of entities – no two entities have to be the same. Analogy – like a very wide and very deep Excel spreadsheet – no two rows have to be the same.- PK + RK = only index you have. RK must be unique within a partition. No secondary indexes.QueuesSimple messages. Think “work ticket” pattern. Reference records in table or blob storage.BlobsStorage area for you files: images, PDFs, css, etc.Can attach metadata to your blobsHave a static site – HTML, Silverlight, or Flash? Run it from blob storage directly w/o need for a web role. Cheap!!
Read detailed blog posts and whitepaper from Windows Azure storage team to read more. Link in the resources section at the end.Achieve higher performance by spreading work across multiple partitions or even sharding you work across multiple storage accounts.
US: North Central US (Chicago), South Central US (San Antonia, TX)Europe: West Europe (Dublin), North Europe (Amsterdam)Asia: Southeast Asia (Singapore), East Asia (Hong Kong)Can rotate keys if compromised.100TB limit per storage account.Default max limit of 5Soft limit – ask Microsoft for more.Keep data & compute close – use “affinity regions”
Often get asked “how can I tell what is being executed against my storage accounts?” Or “How can I determine performance and capacity for my accounts”?Logs – detailed trace of transactions executed against your storage account.Metrics – aggregated details on requests and capacity.http://msdn.microsoft.com/en-us/library/windowsazure/hh343268.aspx
Updates to the storage services don’t make it into the emulator at the same time.Example: Recent updates to support table projections only work in Azure storage, not emulator.Microsoft does seem to be closing the gap with each tooling update.Faster for Microsoft to update the services than it is for them to update the client-side tooling.Get started locally, but likely good to move to Azure storage after general idea and design in place.Better understand performance.Reduce chances of limitations in emulator causing you pain.Prove out some ideas locally, but be prepared to move to Azure storage.
Create separate accountsControl billingControl accessWith the cloud there is a cost for everything.Touching the API == transaction