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
          • structured storage.
        • Queues
          • reliable storage and delivery of messages
      • SQL Azure
  • Storage Account Performance at commercial Availability
    • Capacity
      • 100TB
    • 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
      • Use multiple instances
  • Queue Workflow Concepts
    • Windows Azure Queue Provides
      • Guarantee delivery
        1. Worker dequeues Message and marks it as Invisible
        2. 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

Leave a Reply

Your email address will not be published. Required fields are marked *



* Copy This Password *

* Type Or Paste Password Here *

3,423 Spam Comments Blocked so far by Spam Free Wordpress

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>