Or “behold the power of the unreliable”
In a previous post, I discussed the concept of a Redundant Array of Inexpensive Nodes (RAIN) as a way to create more reliable and scalable applications. Deploying a RAIN application is like being the House in Vegas – it’s about having enough size that the odds come out in your favor. Even if one player is on a roll, you can predict that nearly everyone else is paying your rent. Imagine what would happen if all the winning gamblers were in your casino! If you don’t want to go bankrupt when deploying a RAIN app, then ensure that the players spread out all over the Strip.
One of my core assumptions is that you’ll deploy a RAIN application on a cloud. This is a significant because we’re assuming that your nodes are
- idle most of the time because your traffic loads are cyclic
- unreliable because the cloud provider does not offer much SLA
- divisible because renting ten 1/10ths of a server costs roughly the same as a whole one
- burstable because 1/10th servers can sometimes consume that extra 9/10th server
The burstable concept is a dramatic power multiplier that tips the whole RAIN equation heavily towards clouds.
Bursting means that under load, your 10 1/10th servers (roughly 1 server in cost) could instantly expand to the power of 10 full servers! That reflects an order of magnitude spike in demand without any change in your application.
In the past, we’ve racked extra servers to handle this demand. That meant that we had a lot of extra capacity taking up rack space, clubbing innocent migratory electrons for their soft velvety fur, and committing over provisioning atrocities.
Today, multi-tenant clouds allow us to average out these bursts by playing the odds on when application bursts will occur. In this scenario, the infrastructure provider benefits from the fact that applications need to be over provisioned. The application author benefits because they can instantly tap more resources on demand. Now, that is what I would call a win-win synergy!
All this goodness depends on
- standard patterns & practices that developers use to scale out RAIN applications
- platform improvements in cloud infrastructure to enable smooth scale out
- commercial models that fairly charge for multi-tenant over-subscription
- workable security that understands the underlying need for co-mingling workloads
The growing dominance of cloud deployments looks different when you understand the multiplying interplay between multi-tenant clouds and cloud-ready RAIN applications.