Microsoft Azure Partner Community: focus on Disaster Recovery and High Availability – Building Resilient Cloud Applications


Frank Campiseby Frank Campise – Partner Technical Strategist for Microsoft Azure

The Microsoft Azure Partner Community is led by National Partner Technology Strategists from the Microsoft US Partner Team. Partner Community activities include blog posts, discussions on Yammer, newsletters, and community calls.

This is part 4 of our Microsoft Azure Partner Community series about Azure, disaster recovery, and high availability. You can read part 1 here, part 2 here and part 3 here.

In the first couple of posts in this series we have spent time on both the infrastructure and operational sides of “The Disaster Recovery and High Availability” equation for the cloud. In this post, I am going to shift gears a bit and focus more on Microsoft partners that spend time building applications for their customers. Are you one of these partners? Have you considered cloud-enabling your custom application development practice? Do you think about how the cloud may change the way you build applications? If so, then please read on…

Building cloud applications
As a Microsoft partner that builds applications for your customers, I am sure that you have heard about and have pitched to your customers the benefits of moving applications to the cloud. Some of these, like the ability to scale your solutions almost infinitely, the speed at which you can deploy your applications, or the ability to reach a geographically dispersed mobile workforce, are benefits that only the cloud can really provide. They are game changers, and reasons why a customer would choose the cloud.

However, you may be saying, “This is all sounds great but I need to better understand what features and resources are available to me so that I can build great cloud applications that are highly available and resilient to failures.” Let me introduce you to the Microsoft Patterns and Practices team. This team has been around for a long time helps ensure that software development best practices are being captured and shared with the community. The team has put forth a number of best practices around cloud resiliency and high availability. Below are a few examples of patterns and guidance that application architects or developers should consider as you build cloud applications for your customers.

High availability patterns

Health endpoint monitoring pattern

You cannot maintain high availability if you don’t know whether or not your application/service is healthy and running. Implement functional checks within an application that external tools can access through exposed endpoints at regular intervals.

Learn more

image

Queue based load leveling pattern

Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads that may otherwise cause the service to fail or the task to timeout. This pattern can help to minimize the impact of peaks in demand on availability and responsiveness for both the task and the service.

Learn more

image

Throttling pattern

Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service. This pattern can allow the system to continue to function and meet service level agreements, even when an increase in demand places an extreme load on resources.

Learn more

image

Run your application across multiple datacenters

Whether you have needs to minimize latency for geographically distributed users or simply want to provide a secondary facility for disaster recovery, one of the benefits of Azure is that you have access to a vast number of datacenters across the globe.

Microsoft Azure provides a number of features that allows your application to seamlessly run across multiple datacenters. Traffic Manager provides a facility to route your traffic across geographically distributed datacenters as well as a Content Delivery Network (CDN) to help facilitate high availability for your resources.

Learn more

image

Resiliency Design

Retry pattern

As you move your applications into the cloud there is a chance that more and more of the services that your application will rely on will be hosted in a separate cloud service or maybe even hosted back on-premises. Your application will need to be able to deal with transient failures like network connectivity in order to be viewed as highly available.

Learn more

image

Circuit breaker pattern

Unlike the retry pattern that is meant to deal with transient failures, the circuit breaker pattern has been created to provide guidance on how to deal with failures to remote services that may or may not be resolved quickly.

Learn more

image

Compensating transaction pattern

A design pattern around how to deal with failures that occur across a business operation that consists of a series of autonomous steps

Learn more

image

Scheduler agent supervisor pattern

Coordinate a set of actions across a distributed set of services and other remote resources, attempt to transparently handle faults if any of these actions fail, or undo the effects of the work performed if the system cannot recover from a fault. This pattern can add resiliency to a distributed system by enabling it to recover and retry actions that fail due to transient exceptions, long-lasting faults, and process failures.

Learn more

image

The Partner Opportunity
The cloud is here, and we are already seeing partners help customers take both consumer-facing applications and Line of Business (LOB) applications to the cloud. That trend is going to continue and as an application development partner, there are many opportunities to build your business around the cloud.

  • Project-based services – As more and more customers make the move to the cloud, they are going to be looking for partners that know how to build highly available applications. From a project-based perspective, this may not only include the development work to build these applications but there is also a potential to run strategy type engagements with your customer’s IT and/or it’s architecture team to define the strategies and architectural guidelines for that company as they consider the move to the cloud. Also, if you don’t specifically test for disaster recovery or high availability you might as well just assume it is not going to work. Customers are going to have a need for this kind of testing for both new applications and existing applications that they migrate to the cloud.
  • Managed Services – I am seeing many of our traditional System Integrators starting to build managed services capabilities around their application development practices. As customers become comfortable with allowing their line of business applications to run in the cloud they are also in many cases coming to the realization that if the application is no longer running on-premises than why does the monitoring, maintenance and support have to remain on-premises. This really opens of the door to be able to offer your customers a “Line of Business as a Service” type model, own the entire application lifecycle and receive recurring revenue streams on top of the standard application development project revenue/margins.
  • IP / Packaged Apps – Important to many SI’s is understanding how to package up the IP  gained over the years and offer it as a value-added service to customers without becoming an ISV (i.e., services business model vs. product development business model). The cloud helps with this by blurring the lines between the business models of a tradition SI and a traditional ISV. Think of the managed services type of offering above as something you provide to one customer for one of their business applications. Going a step further down the path, think of the IP/Packaged App type of offering as conceptually the same idea but instead of one customer, you are building an application that is general enough to support multiple customers.

Getting started
The patterns above are just a small subset of the patterns that are available from the Patterns and Practices team around the cloud. Below are some places to look if you would like more information

I’m looking forward to our US Azure Partner Community call on October 16, where we’ll talk about Azure,  disaster recovery, and high availability. Register today to join us for the call, and join the conversation in the Azure Partners group in the US Partner Community Yammer network.

Comments (2)

  1. Anonymous says:

    by Jonathan Gardner US Partner Technology Strategist for Microsoft Azure The Microsoft Azure Partner

  2. Anonymous says:

    by Jonathan Gardner US Partner Technology Strategist for Microsoft Azure The Microsoft Azure Partner

Skip to main content