A consistent key concern enterprises raise about using cloud computing platforms are wanting clear service level guarantees for your applications. While Microsoft Azure, and many other clouds, publish service level agreements (SLAs) for our discrete services, these aren’t the same as application assurances, so how can you get comfortable closing the gap and assuring the availability and performance of your cloud-based applications? The answer is through Completing the Cloud Handshake. Any time you leverage a cloud-based resource you are tapping into a multitenant, scalable automated offering that is designed to be consumed by multiple customers in the exact same way.
You want to leverage these services because through the standardization we give you differentiated scale, performance and volume consumption-based cost efficiencies. And a defined SLA. Atop these services we expose to you configuration options that let you string together our cloud computing services in a manner that best meets your workload and corporate objectives. It’s through mastery of the elements above our standard cloud services that you can achieve the workload-specific assurances you are seeking. The cloud handshake is the proper marriage of understanding the services we provide, and building and configuring your workloads properly atop them.
A simple example: Can you achieve a 99.99% SLA for an application deployed on a virtual machine with a 99.95% SLA? Yes, by deploying your application to a cluster of VMs with each cluster node running on separate compute resources, what we call in Azure, Availability Sets. Want to take the SLA up even higher? With services soon to be available in 22 regions, you can spread your workloads across our Azure regions, which shield your workload from data center outages as well as geographic natural disasters. Following this simple principle but carrying it forward across all aspects of your implementation (networking, storage, app services, cache, etc.) is how you complete the cloud handshake.
But what is a best practice development and operations approach your organization should take to ensure the handshake is done right every time? Our recommendation:
- Start with a repeatable development process. Whether your group has moved to agile, continuous delivery or remains in a waterfall model, start with a clear methodology that leverages consistent tools for code check-in, test automation and deployment. Visual Studio Online can assist with these steps as it automates them while empowering collaborative design by coders working in multiple languages, tools, source code repositories and deployment targets.
- Use operational analytics. Monitor and measure the performance and execution of your applications to quickly identify code, configuration or deployment issues as they arise, so you can quickly inject these findings back into your development and management processes. The new Visual Studio Application Insights service gives you code visibility, while the Azure portal shows configuration and service performance details. You can set thresholds and alerts in these tools (and via CLI or PowerShell) that help you identify the root cause of the issues being encountered so you can quickly work around them.
- Understand your SLA dependencies. In the simple example above we talked about how a low SLA service can achieve high SLA outcomes. Unfortunately the opposite can happen when you build an application that strings together multiple services that have dependencies on one another. For example, you’ve built a mobile application service that starts with a web service with a 99.95% SLA, tied to a database with a 99.95% SLA and integrates with CRM SaaS service with a 99.95% SLA. The SLA for the combined service isn’t 99.95%. Because the potential downtime that could occur with these services compounds. Want a 99.95% SLA all up? Then you have to ensure redundancies throughout your dependencies. To get this right you will want to…
- Design assuming failure. Netflix popularized this approach to cloud application design several years ago and their lessons remain true today. To get the best results from a cloud implementation you must assume that what could go wrong will, and ensure you have accounted for all these possibilities both in the design of your code but also in your configuration, testing and deployment model. And to do this consistently, as you mature your cloud practice, you will want to learn from the best practices you developed early on and from those who have come before you. This is why we highly encourage customers to leverage our forums, templates and collaborative documentation model to learn and share best practices so we can all achieve maximum success. Our Operations Management Suite helps you put in place the controls, backup and disaster recovery, and security protections you will need to meet your objectives, no matter where you deploy your applications.
- Test, simulate, measure, repeat. And finally, keep learning. The more you test, monitor, track and simulate customer traffic (not to mention actively monitor your production deployments) the better you will hone your cloud handshaking skills. Given the pay-per-use model of Azure and the credits we provide for test/dev use with every MSDN account, there is little excuse not to make this a consistent practice in your organization. And close the loop in your development process by passing the learnings quickly back to the development teams to enhance and fine tune the applications you are putting forth.
Want to go deeper? Bring Azure Machine Learning into the equation by measuring not just discrete elements and lines of code but draw bigger conclusions such as customer sentiment, usability, analysis of key customer experiences versus average customer experience, cost optimizations and forecast the impact of outside affects that are above and beyond the basics of your application design. At the end of the day, while we may worry most about the uptime and performance of our applications, our customers care more about the experience we provide. What matters to them is how well that experience aligns with their needs, the timing and context in which they are leveraging it and whether we are enriching their lives, which drives loyalty and ultimately profitability for us both. If the above is starting to sound overwhelming, don’t worry. You’re not alone in trying to solve your part of the cloud handshake. This is where the overall Azure ecosystem comes in. Want to deploy workloads with proven configurations? This is where Azure Resource Templates come in. Want less configuration specifics, build your application atop one of the application platform services now running on Azure, such as CloudFoundry or our own Azure App Service, where you get SLAs for the service and we worry about the underlying configuration. Want someone to help manage what remains of your part of the cloud handshake? There are many Microsoft Azure cloud partners here to help. More on this topic in my next blog post.