Mark Simms Principal Program Manager Windows Azure Customer Advisory Team
What are the “9”s Availability %Downtime per yearDowntime per month*Downtime per week 90% ("one nine")36.5 days72 hours16.8 hours 99% ("two nines")3.65 days7.20 hours1.68 hours 99.9% ("three nines")8.76 hours43.2 minutes10.1 minutes 99.99% ("four nines")52.56 minutes4.32 minutes1.01 minutes % ("five nines")5.26 minutes25.9 seconds6.05 seconds % ("six nines")31.5 seconds2.59 seconds0.605 seconds 12 Study Windows Azure Platform SLAs: Compute External Connectivity: 99.95% (2 or more instances) Compute Instance Availability: 99.9% (2 or more instances) Storage Availability: 99.9% SQL Azure Availability: 99.9%
PlatformContextSample Target e2e latency max “Fast First” Retry Count DelayBackoff SQL Database Synchronous (e.g. render web page) 200 msYes350 msLinear Asynchronous (e.g. process queue item) 60 secondsNo45 sExponential Azure Cache Synchronous (e.g. render web page) 100 msYes310 msLinear Asynchronous (e.g. process queue item) 500 msYes3100 msExponential
definition: design elements that can cause an outage.
definition: a predictable root cause of the outage that occurs at a Failure Point.
Failure Mode Example 27 public int GetBusinessData(string[] parameters) { try { var config = Config.Open(_configPath); var conn = ConnectToDB(config.ConnectString); var data = conn.GetData(_sproc, parameters); return data; } catch (Exception e) { WriteEventLogEvent(100, E_ExceptionInDal); throw; } Potential Failure Points: Database Server Database Table Configuration File Potential Failure Modes: DB Server not responding DB offline DB access denied Sproc execute denied DB doesn’t exist DB timeout on connect Index corrupt Database corrupt Table doesn’t exist Table corrupt Config file missing or invalid
52 Microsoft Confidential Push vs. Pull Load Balanced Push Sync and good for sequential processing Dependent on downstream services Throttling vs. Performance Managed Pull/Throughput Asynchronous and event driven processing Easy Parallelisation and Pipelining Extending logic is easy Logic based Priority Date Amount Etc. Time based ASAP Gradually Periodically On-Demand Volume based Single In Batches
53 Microsoft Confidential Data on the inside – Data on the outside Immutable (versions) Requires open schema for interop Reference Data Low concurrency updates (e.g. shopping basket) Activity Data Highly concurrent update (e.g. inventory) Should live in worker role Resource (shared) Data
54 Microsoft Confidential “Query Ready” Cache Query patterns Push the data close to where it is queried – Example: BING Maps Process, structure, produce, format etc. data and cache “query ready” data Light/cheap data production is OK Pure and Idempotent operations are usually good candidates Duplication is OK Same data in a different format Same data in multiple places This requires processing data before it is queried - NOT at the query time All data can be cached Some data can be cached: Frequently used Process Heavy, Expensive data Build as you Go
55 Microsoft Confidential Distributed Caching Simple to administer No need to manage and host a distributed cache yourself. Integrates easily into existing applications ASP.NET session state and output cache providers enable no-code integration. Same managed interfaces as Windows Server AppFabric Cache On-Premises App Windows Azure App AppFabric Cache APIs Windows Server AppFabric Cache AppFabric Cache APIs Windows Azure AppFabric Caching
pic1.jpg Content Delivery Network Blob Service Edge Location pic1.jpg