Azure Cloud Design Patterns
Let’s talk about Cloud Design Patterns.
Microsoft Azure – being more focused on application development – provides for much more official and detailed Design Patterns than AWS. In fact, they dedicate an entire section on the subject on MSDN, from where you can download a 236 page book in PDF or ebook editions, or order a print version from Amazon. Sample code and an info graphic poster depicting all the patterns are also available. The book contains 24 design patterns, 10 guidance topics and 10 sample applications.
The 24 design patterns are divided into 8 Problem Areas, each with its own symbol.
|Design and Implementation|
|Management and Monitoring|
|Performance and Scalability|
The guide provides solutions to common problems encountered while developing cloud-based applications, describes the benefits derived from the application of patterns when implementing Azure-hosted cloud applications, and discusses the problems that affect the patterns, and how these relate to Azure. The book also shows us how to implement the patterns using the features and services of Microsoft Azure, and highlights their benefits.
Primer & Guidance Topics
The book also presents guidance topics. These, in fact, represent the basic orientation for developing applications in the cloud:
- Asynchronous Messaging Primer
- Autoscaling Guidance
- Caching Guidance
- Compute Partitioning Guidance
- Data Consistency Primer
- Data Partitioning Guidance
- Data Replication and Synchronization Guidance
- Instrumentation and Telemetry Guidance
- Multiple Datacenter Deployment Guidance
- Service Metering Guidance
Cloud Design Patterns
We come now to the core thematic list: Microsoft’s 24 patterns:
For each pattern, the book provides a short description, some context and a problem along with its solution, issues and considerations, A use case, sample code with C #, and finally the patterns and related guidance.
All examples work with the Visual Studio Windows Azure emulator, and can be deployed through the Windows Azure Cloud Service.
Let’s take the Static Content Hosting Pattern as an example. The pattern is part of these problem areas: Data Management, Design and Implementation, Performance & Scalability. The book’s author writes:
Deploy static content to a cloud-based storage service that can deliver these directly to the client. This pattern can reduce the requirement for potentially expensive compute instances.
While adding more detail concerning the context and problem:
Although web servers are well tuned to optimize requests through efficient dynamic page code execution and output caching, they must still handle requests to download static content. This absorbs processing cycles that could often be put to better use.
And the Solution gives us the guidelines to implement it:
In most cloud hosting environments it is possible to minimize the requirement for compute instances (for example, to use a smaller instance or fewer instances), by locating some of an application’s resources and static pages in a storage service. The cost for cloud-hosted storage is typically much less than for compute instances.
When hosting some parts of an application in a storage service, the main considerations are related to deployment of the application and to securing resources that are not intended to be available to anonymous users.
Therefore we see that the pattern improves the performance and scalability by moving the delivery of static content to Azure Blob Storage. The sample code simulates the solution of pattern also giving us useful snippet of Azure code.
As you can see, Cloud Design Patterns for Azure is rich in useful content. In particular, I highly recommend a quick read of Autoscaling Guidance.
Next, we’ll explore two websites that also discuss Cloud Design Patterns in more general terms.