Since there are so many different cloud computing solutions in the marketplace today, you will find that providers are very diverse in both their technical capabilities and in their abilities to deliver on SLAs. It is important to understand how these capabilities factor into ‘application availability’ and then identify their impacts on costs. We have taken these concepts into consideration and are posing the question:

Is it important to consider availability as an application design characteristic?

Of course, but once you consider other aspects, as well, the decisions on how to achieve availability as a design goal becomes more complex.

There are two types of IaaS cloud providers in the marketplace and oftentimes they are only compared/contrasted based on their consumption model. Just as important as the consumption model is how we have traditionally compared and contrasted cloud services. It is equally, if not more, important to compare cloud services in terms of “Availability,” as a design characteristic. Availability is not optional, IT’S ESSENTIAL! After all, today’s companies demand 24/7 always-on availability and High Availability (HA) architectures.

First, let’s define the two cloud types by their consumption model. By-the-instance, or hyperscale cloud, and consumed cloud providers build ‘availability design’ into the application layer. That is the simplest way to consume cloud and is NOT highly available. By-the-instance is ideal for companies that wish to scale horizontally and/or have read-only applications.

Clouds consumed by resource pool increments build ‘availability design’ into the lower level infrastructure layer. Resource pool clouds are ideal for companies with transactional applications and also companies who wish to scale both horizontally and vertically. Provider examples include, ‘enterprise-grade clouds such as Faction, Rackspace private cloud, and others.

Now let’s compare both consumption models, instance vs. resource pool, relative to Availability design considerations.

How important is performance and availability to your company? Is 100% availability essential to your company’s survival? With by-the-instance cloud you will create both scale and availability by distributing content across multiple instances and geographies. On the other hand, resource pool clouds are ideal for environments with large transactional systems that have underlying HA infrastructure and scale, at a granular level, to fine-tune your compute, network, or storage independent of one another.

By-the-instance cloud is less expensive on the front end; smaller increments (instances) are less expensive because they do not include HA redundancy in the infrastructure. It is not ideal, though, if your environment requires seeding, retrieval and frequent movement of your data. In addition, when scaling horizontally, by-the-instance cloud produces additional copies of the data. While there may be higher front-end costs, resource pools are the most efficient when you are at scale. This is beneficial because fewer data copies are required, and fewer data movements occur in a resource pool cloud.

Good Decision Making

One of the exciting aspects of having a broad range of cloud offerings in the market is the amount of choice it gives developers and IT staff in regards to achieving business goals. These choices can accelerate time to market with no need for capital outlay. They can also force new decisions around how to cost-effectively deliver on an important feature like availability. Decisions that have been made by development, with lack of visibility to long-term cost controls or new compliance requirements, can become big challenges for technical management to correct in short order. A private cloud service that removes risk, coupled with a 100% SLA and granular technical and performance controls, may be the answer.

Thinking of availability as an application feature can give you an objective viewpoint into balancing costs and business agility against other design features and characteristics. Having new costs as the application matures will also give you ammunition to make an intelligent pivot to an appropriate platform as you need new cloud services. Thinking this way will allow you to make intelligent choices so you can avoid potentially disastrous application redesigns as it grows or changes and you are faced with new challenges.