PDC09 – Day Three – Building Scalable and Reliable Applications with Windows Azure
Brad Calder – Director/Architect
Data Building Blocks
- Types of Storage in Windows Azure
- Volatile Storage
- Local Storage
- Caches (eg. AppFabricCache and MemCache)
- Persistent Storage
- Windows Azure Storage
- Blobs
- Provide interface for storing name files
- Tables
- Queues
- reliable storage and delivery of messages
- SQL Azure
- Storage Account Performance at commercial Availability
- Capacity
- Throughput
- Up to a few hundred megabytes
- Partitioning of Data Objects
- Load balancing is an internal concept of Windows Azure Storage
- Allows the system to automatically scale out access to your data to meet its peek traffic demands
- What matters to the application is the partitioning key used for objects
- All objects with the same partition key are always grouped
- Per Object/Partitioning Performance for Commercial Availability
- Throughput
- Single Queue and single table partition
- Up to 500 transactions per second
- Single Blob
- small reads/writes up to 30 MB/s
- large reads/writes up to 60 MB/s
Scaling Computation
- Compute Service Model – What is describes?
- The topology of your service
- Types of roles and their binaries
- How the roles are connected
- Configuration of the service
- How many instances of each role type
- Application specific configuration settings
- How many update domains you need
- Best Practices
- Due to application failures, upgrades or hardware failure
- Queue Workflow Concepts
- Windows Azure Queue Provides
- Guarantee delivery
- Worker dequeues Message and marks it as Invisible
- Worker deletes Message when finished processing
- Note: If worker role crashes, message becomes visible for another worker to process
- A message may be processed more than once
- Assume messages put into same queue can be processed in any order
- Best Practice
- Make work items idempotent
- Scaling Queue Throughput
- Batch Work Items into Blob
- Group together many work items into a blob
- Queue up pointer to the Blob for the message
- Use Multiple Queues
- Job Manager
- Responsible form managing the execution of the Queues
- Work Items
- Continuation for Long Running Work Items
- Want to continue on failover
- High level approach
- Bread work item into smaller and repeatable steps
- Record progress
Lifecycle Management
- In-place Rolling updates
- Specify the number of upgrade domains in service model
- Breaks your roles evenly over the number of domains
- Rolling upgrade
- Walk each upgrade domain one at a time
- Upgrade just the roles in the current domain
- Benefits
- Minimizes availability loss
- Only one domain of roles are restarted at a time
- Allows local state to be uses across upgrades
- Caches application upgrade issues early
- Detect upgrade issues after first few domains
- Versioning with Rolling Updates
- Always assume you will have old and new running side by side in your service
- Version Everything
- Protocols, Schemas, Messages and everything else
- Windows Azure Tables Schema change
- Have a version property in each entity
- Types of Schema changes
- Adding a non-key property
- Perform similar step update process
- Update “IgnoreMissingProperties”
- Removing a non-key property
- Perform similar upgrade process
- Update “IgnoreMissingProperties”
- Changes in Partition Key or Row Key
- Most uses schema change is adding a non-key property