There are a lot of ways to rack up cloud computing costs, but scalability issues consistently top that list.
Part of the challenge lies in the fact that scalability is one of the best-known benefits of cloud. Whether you need to scale applications under load, burst from your data center to the cloud or replace failed instances with new ones hosted elsewhere -- scalability is present. The key isn't to avoid it, but to manage it well.
To protect your budget, apply these five best practices for cloud scaling:
- Make sure that when apps scale up to meet demand, they scale back down when demand drops.
- Implement load balancing to share workloads across resources.
- Always consider cloud scaling costs in conjunction with other cloud costs to determine where to host additional instances.
- Plot workflows to minimize the traffic charges that occur when components scale across different platforms -- either from the data center to the cloud, or from one cloud to another.
- Understand the pricing model of all your cloud providers to avoid accidentally adding in new cost items when you scale.
Here's a closer look at each.
Remember – what goes up must come down
It's surprisingly common for cloud users to increase the number of instances to meet a spike in demand, but not spin them down when no longer needed. Operations personnel will usually monitor things such as response time or utilization to detect the need to scale up. Tune this monitoring process to also detect low utilization or excessive resources, and then scale back. Set an upper limit on the number of instances you'll scale to, as well as a lower limit on how far you'll scale back when load levels reduce.
Balance the load
Load balancing plays a major role in the cloud scaling process. But make sure the technique you use accommodates stateful processing, as needed. To avoid costly delays or errors when you scale, integrate stateful load balancing directly with the transaction sources. If you scale stateless components, load balancing is fairly easy, but you will generally want to have the load balancer near the source of transactions.
Account for other resource costs
Major cloud providers have dozens of web services, all of which may introduce extra costs when you scale a component that uses them. Determine whether you'll need another instance of some of these web services as you scale, or whether you might accidentally add another instance because of the way you scale.
Database services are a subclass of these web services, and come at an extra cost. Serverless is another type of service that can introduce additional costs without proper management. It's important to limit your number of serverless functions to avoid having a massive charge when a lot of work is presented at the same time. See what kind of tools or features your provider offers to enforce these cloud scaling limits.
Another option to reduce costs
Scaling means more instances, which means more costs -- or at least that's the theory. There is one way, however, to reduce those costs: clumping resources. If you have multiple components that are likely to scale together, combine them into a single machine image. That single instance can reduce incremental hosting charges and, with less connected components, simplifies the scaling operations burden.
Another clumping approach is containerization. If you load your own container software into some VMs, you can add components without increasing your hosting costs.
Minimize border crossings
When you scale an application across multiple cloud platforms, or across the cloud and an on-premises data center, you can incur additional network traffic charges. Even if you scale within the same cloud, it's possible that an increased distance between a database and the component being scaled will impact performance.
Know your provider
To reduce the potential costs associated with cloud scaling, examine the pricing model of your providers. Know how scaling might influence each of the chargeable items you use. Most of the scaling-related cost overruns in the cloud can be attributed to overlooking how scaling affects one or more of these cost items.