by 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.
- Register for the October 16 US Azure Partner Technical Community call
- Read the US Azure Partner Community blog posts, including the September series about EMS
- Join the Azure Partners group on Yammer
- Sign up for the US Azure Partner newsletter
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.
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.
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.
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.
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.
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
- Patterns and Practice Home Page
- Cloud Design Patterns: Prescriptive Architecture Guidance for Cloud Applications
- Cloud Design Patterns Infographic
- Scaling Applications using Cloud Services infographic
- Building Real-world cloud applications infographic
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.