Nowadays, words like ‘Cheap’, ‘Reliable’ and ‘Efficient’ have become a ‘must-have’ for any cloud related marketing copy. While there are no doubts on a cloud’s promise on delivering an always-on, solid experience for end-users, cost control is pretty much a guessing game until the invoice arrives at the end of the month. Before heading forward, it is essential to understand the importance of ‘cost’ in a cloud environment. Recently, I saw an online presentation given by Richard Astbury, a senior cloud consultant for an award-winning UK-based software firm. He placed strong emphasis on clearly defining the objectives behind cloud deployment. You can only choose one or two from the following: cost control, optimum performance and high availability. To be honest, Richard Astbury is right. You cannot get a high performing, always-on application on a cheap cloud. Richard’s diagram of “Architecting the Cloud” shows that cost, performance, and availability are part of a triangle. This shows that a strict control on cloud cost can affect performance. So what should you do? Well, cloud cost optimization is an art which requires time if you want to master it. Yes, there are (and will be) a number of tools which can work wonders, but you really need to pay good attention.
TIP 1: Understanding Cloud Cost
First things first, get clear-cut information about your cloud investment. Buying loads of storage because it looked cheap is never a wise solution. Cloud deployments runs on virtual machines where you need CPU and RAM. This is why you need to spend a bit on the computing power. Furthermore, there can be a chance of error in forecasting your cloud costs, especially when you are starting new. You just need to keep the “start small” principle in your mind. Thanks to the metered model of the cloud, you can scale up (or down) whenever required.
[Also Read: Are Cloud Providers Eating Server Markets’ Lunch?]
TIP 2: Keep It Simple
Delegating work is good; however, virtual machines are not humans. That is why instead of dedicating computing resources to specific functions is not very advisable in cloud architecture. The best approach is to keep an infrastructure which dwells on synergy.
For example, if you keep separate 3 CPUs each for front- and back-end services, there are chances that your back-end runs out of capacity while your front-end is operating on quarter capacity. This can result in downtime even though computing power, equivalent to 2.25 CPUs, is still available. This means you are wasting money by hiring 6 CPUs while using the computing power of just 3.75 CPUs. In contrast, you can put a pool of 5 CPUs where the load is to achieve an optimum balance between computing power required and computing power available. Perhaps, you would understand that you may require less than 5 CPUs, most of the time.
Scaling up the segregated model is also tougher as compared to a synergized one. In the segregated model, you need to see which end needs more power. However, in the synergized one, you only add in the newer CPUs and you are good to go.
TIP 3: Create a Better Balance
For optimizing your cloud costs, you need to understand the functions of your web deployment. Most web deployments have a size-able chunk of static content.
For example, the company logo is a good static content type because it is displayed on every page, regardless of its use. There are many web elements which are static. You can use a Content Delivery Network (CDN) to present them.
Now some will argue that I am increasing the bill in the name of optimizing cloud cost. Well, there are free CDN providers out there. Plus, when you offload your static content to CDN, you use lesser resources on your backend. Similarly, try to keep ‘read’ and ‘write’ functions for the storage where ‘authentication’ should be done on the database.
TIP 4: Keep Calm and Use Auto-scale
You can save quite a bit if you implement the suggestion given in the preceding paragraphs. However, there is a small, minute chance of failure. This failure of two kinds; one is about being overoptimistic and the other is of over-optimizing. To prevent over-optimism, you need to understand your market. If you started small but you found that the traffic is lower than expected for some reason, then do not just wait for additional traffic. If you wait, you are wasting money. Just scale down for the moment and when the traffic increases, add more resources accordingly. Over-optimizing occurs when you try to be a penny pincher. Cloud hosting is all about providing the most advantageous web experience. So, if you are running at full capacity and you think you will fit more, then you are severely mistaken. Scale up as soon as you are near optimum level. This way, you will accommodate more clients and in result, more money. If you do not scale at the right time, your website can face downtime which means sending your clients to your competitors. However, there are times when auto-scaling provides a lot of ease. So, you need to understand the reason of auto-scaling. If you are on a steady path of growth, then scaling can be done in stages. However, if you are in a business where traffic spikes are common then try to figure out how, why and when they occur. Are these spikes predictable due to a discount offer? Or, do you have unpredictable ones due to some miraculous word-of-mouth marketing? Perhaps, there is a specific time of the day when the traffic sees growth. In any case, it is tough to forecast auto-scaling requirements. This is why it is recommended that you use a reactive approach. For predictable traffic growth, you can work with your cloud provider for scaling. However, in rest of the cases, scale only when it is required and keep an eye out for sudden demands.
BONUS TIP: Cloud Cost Monitoring Add-On
Cloud cost optimization is hard work. What if I tell you there is an easier way to do all of this? Well, I am not lying. At Cloudways, we provide Cloudyn as a free add-on to all our PowerCloud users who are using Amazon Web Services (AWS). The free Cloudyn add-on analyzes your cloud expenses, develops cloud expenses forecasts, recommends actions to reduce cloud costs, and allows you to put alerts to warn you about cloud wastage.
At the end, do let us know about any cloud cost optimizing measure or tools that you know of in the comments section below.