Software-Defined Availability: Redefining Uptime for the Cloud

1 comment

Dave LeClair is senior director of strategy at Stratus Technologies, a provider of infrastructure based solutions that keep applications running continuously in today’s always-on world.

Dave-LeClairDAVE LeCLAIR
Stratus Technologies

Software-defined architectures have been redefining nearly every aspect of our digital existence — from virtualized data centers to the systems that regulate the air temperature in your car. So, where does the concept of software-defined functionality go next? I believe one of the most significant implementations of the concept is just around the bend — and it’s happening in the cloud.

But, the two biggest obstacles to adopting cloud models are security and availability. And, availability is rapidly becoming the single biggest risk businesses face today as they move to the cloud. If your business is reliant on public or private clouds and those services go down, without planning for availability, you’re out of business. What’s clear is traditional hardware-based availability strategies can’t provide the whole solution in a software-defined world, which the cloud is. Since most cloud infrastructures use commodity hardware and are designed for scale, failure is an ever-present reality. So, many businesses need to rethink application and infrastructure availability to migrate to the cloud, while providing the required availability, quickly and cost-effectively.

Of course, you can build availability intelligence into the applications themselves. Indeed, native cloud applications are often built from the ground up with failure awareness and are designed to automatically restart workloads on new compute nodes to keep running.

But, what about building availability into legacy applications? The cost of re-engineering these would be prohibitive — and would pose the risk of destabilizing the environment. Even for applications built with availability, a single point of failure in the control plane of your cloud can be just as devastating as a server going down.

Defining a New Approach

Enter software-defined availability. With this approach, failure prevention and recovery decisions are moved outside of the application layer to the underlying software layer. And unlike traditional hardware-based availability solutions, uptime is not dependent on a specific set of hardened servers. Availability is, in effect, abstracted from the application and from the hardware.

This abstraction will enable businesses to do some really useful things to overcome the risks of unplanned downtime. For starters, they can dynamically create highly available systems by linking systems together — either via physical network connection or even using software-defined network connections — to create paired systems in real time with redundancy for high-availability or fault-tolerant levels of protection, as required.

By abstracting availability, businesses – including line of business executives and IT acting as brokers of cloud services – can change the level of availability based on their current application requirements. This is extremely useful for applications that are mission-critical part of the time but not all of the time. For example, consider how useful this would be for a finance team, who could dynamically raise the availability level to mission critical for a financial application running during the last few days of the quarter when wrapping up the fiscal calendar, but who also could lower the availability at other times. Imagine applying the necessary fault-tolerance resources to ensure availability during critical times, while freeing up those resources the rest of the time? This dramatically reduces cost, complexity and risk, without compromising availability.

Put simply, software-defined availability gives the line of business the control and flexibility to provide the right level of availability at the right time, on a per-workload basis, according to policies that business group defines. This is a game-changer and quite a departure from past “software availability” approaches that only provided “good enough” levels of availability based on static clustering capabilities. Taking this new approach one step further, imagine the possibilities when IT can provide a service catalog to the business? In effect, by “dialing-up” availability as needed based on a policy engine – all abstracted from the applications – IT can manage availability for the entire cloud environment holistically, and that’s a significant disruption that will unlock innovation for that organization.

Tapping the Flexibility of the Cloud

This kind of intelligent, dynamic software-defined availability for existing applications is only possible because businesses can take advantage of the elasticity and orchestration capabilities offered by the cloud. It also helps them leverage the inherent flexibility of open-source software for building clouds, such as OpenStack.

With this policy engine that defines availability parameters for individual applications, IT can map availability requirements to specific requirements, such as SLAs. IT also can specify compliance attributes for individual applications — such as credit card processing applications that must run without downtime in a PCI environment. The policy engine dynamically manages workloads so applications have the availability resources they require, when they require them.

This approach to software-defined availability also offers important advantages when developing new cloud applications. First, it dramatically simplifies development up-front, greatly reducing time-to-market for rolling out new or updated applications and getting content and functionality to users. But, just as important, it provides the flexibility to rapidly change availability requirements as the organization’s needs change, without having to “lift the hood” on the application code. IT can simply modify the policies – easy and cost-effective!

This new software-defined availability approach also helps reduce complexity, eliminating the need to firewall mission-critical applications. This is a huge benefit that doesn’t require IT to build and maintain multiple environments with different availability requirements, which is messy. With software-defined availability, IT has one environment that can be tailored with availability to specific applications as needed.

Bridging the Availability Gap

Redefining availability, therefore, has clear advantages for companies building their own private or hybrid clouds. Companies can use this approach to fill the gaps in availability guarantees offered by many public cloud service providers. On the flip side software-defined availability may also prove to be a viable solution for public cloud providers looking to meet their customers’ demands for mission-critical availability. That could be a real game-changer, helping to make public clouds “ready for prime time” for tier one business applications.

Despite all the hype, the cloud is still in its early days. But, it’s already changing everything — how applications are written, deployed and managed. Applying legacy approaches to availability in the cloud doesn’t make sense. Software-defined availability represents the next-generation approach — one that uses the inherent elasticity of the cloud to meet the unique availability requirements of individual applications, at specific times and under specific circumstances.

In an always-on world, availability is more critical than ever. And, software-defined availability is how we’ll meet that challenge in the brave, new world being built-out in the cloud era.

Industry Perspectives is a content channel at Data Center Knowledge highlighting thought leadership in the data center arena. See our guidelines and submission process for information on participating. View previously published Industry Perspectives in our Knowledge Library.

Add Your Comments

  • (will not be published)

One Comment

  1. Dave, good article and observations on how the cloud is changing how we think about service uptimes and availability. I am working on bringing up my own cloud-based service and am acutely aware of needing to find ways to gracefully deal with system downtimes so my customers don't become completely irate in event our systems do go down. The terminology you're using here brings up a question that I have. Are you considering services like Amazon's Elastic Compute (EC2) and Rackspace's Cloud Servers examples of software-defined availability? In my view, they are not because they're still "server centric" and as part of your application deployment model, you're still responsible for the full-stack. However, services like Heroku's which can likewise dynamically scale would be a perfect example of the software-defined availability model as you describe it since developers do not manage the full-stack, only their application's code and deployment to Heroku's Platform and the developer's main concern is whether there are enough "dynos" or workers to run the application code efficiently relative current user loads.