Windows Azure SQL Database Marketplace
Editor's Note: This article was written by Valery Mizonov from the AzureCAT team.
In our previous Telemetry – Application Instrumentation blog post we highlighted how Cloud Service Fundamentals in Windows Azure code project addresses building fault-tolerant data access layer that can sustain transient failures in the Windows Azure SQL Database service. We provided a few best practices for instrumenting your own applications and gave you some hints around increasing the reliability and resiliency of your solution.
In this post, we are going to drill down into what building a resilient data access layer means in real-life terms and how we approached this critical requirement in CSFundamentals.
Building distributed cloud-based applications and services can be challenging due to pitfalls of contemporary cloud infrastructures such as resource throttling, communication failures, volatility in platform service behavior, either “by design” or “by abnormality”. A natural solution to this class of problems is to detect potential transient failures, and retry the failed operations while keeping your finger on the pulse of the application-specific Service Level Agreements (SLAs).
Making intelligent decisions on whether to retry on failures involves building a knowledge base of known transient faults and their identifies (error codes or exception types). This is a tedious and time consuming effort. Fortunately, Windows Azure developers can bypass that effort altogether and focus on things that matter the most, because the knowledge and intelligence to handle transient fault is implemented by the Enterprise Library’s Transient Fault Handling Application Block -- making it easy to increase resilience of cloud-based services. The Transient Fault Handling Application Block is comprised of an easy-to-use API and a knowledge base containing all possible Windows Azure-related transient faults currently known.
The Cloud Service Fundamentals solution extensively utilizes the Transient Fault Handling Application Block to guard its data access layer from throttling conditions and other transient errors that may occur in the Windows Azure SQL Database service.
When building the data access layer CSFundamentals, we followed these important best practices from a transient fault handling perspective:
To read more on about this topic, see the “Cloud Service Fundamentals Data Access Layer – Transient Fault Handling” wiki article and learn more about how we tolerate database service failures and how you can leverage similar techniques and best practices in building great cloud applications.
Thank you for taking the time to read this blog post. In the next article in this series we will explore the reporting functionality that we have implemented to project the telemetry from an instrumented application by using Windows Azure SQL Reporting service and its data visualization capabilities.