How to spend less without sacrificing system performance

When you are just starting out you usually want to get things done quickly. Also, most companies do not worry much if keeping the system up and running costs $10 a day instead of $8 a day. It is more important to keep development costs and time low.

However, once your company has reached a certain size, you are suddenly spending $1,000, $10,000 or even more a day. Now you could save thousands or even millions of dollars if your solution would require fewer resources.

We will discuss some strategies to reduce resource requirements below. Fewer resources usually means lower costs, but it can also translate to other benefits like communication speed.

Cloud resources

Sometimes a quick audit of the properties that are used for your Cloud resources can already result in significant savings. Here is an example.

Let us assume that your team has configured and AWS Lambda Function with 10,240 MB of memory to make sure the function is not running out of memory. At the beginning it was unclear how much memory will be required, so it made sense to do this. An audit reveals that the function is now called about 700,000 times a day and never requires more than 1,024 MB of memory. Further investigation shows that there is no noticeable improvement on runtime or other metrics if the function was assigned more than 2,048 MB of memory. With 2,048 MB of memory and above it runs about 1 second on average.

To calculate the annual savings we need to first calculate resource requirements in GB-seconds: 511,000,000 for 2,048 MB of memory versus 2,555,000,000 for 10,240 MB of memory. If run on x86 architecture in Australia this translates to USD 8,517 versus USD 42,583 (at the time of writing this). In this example, the company could save USD 34,066 a year simply by changing a property of a Cloud resource.

If it is easy to change the architecture from x86 to ARM, the company could save another USD 1,704 a year. In some cases this also just requires changing a property of a Cloud resource, but sometimes it requires additional work.

This might all sound far too technical to you. Also, things are not always so straight-forward. However, it should be clear that there could be a huge saving potential. Experienced and independent experts from CyberMindHive can help you to identify ways to make your Cloud resources more cost-effective.

Architecture

Tuning individual components – in the Cloud or on-premises – often provide quick wins that require little work. However, in many cases the biggest reduction of resource requirements – often while improving system performance at the same time – comes from architectural improvements.

There are many different ways to improve the system architecture. Also, it depends a lot on the company’s stage, needs and capabilities which changes make sense when. Here are some examples:

Modify communication protocols or payloads to reduce time and costs for transferring data.
Use a different database or data architecture to reduce costs and improve query performance.
Increase or decrease provisioned resources or provisioning limits to balance system performance and costs appropriately.
Split up or merge system components to balance development costs with runtime costs and scalability.
Replace programming languages, libraries or platforms/runtime systems to reduce runtime costs and improve system performance.
Deploy components to specific locations (on-premises, data centres, availability zones, etc) to minimise communication overhead and costs for data transfer. This might also need to be balanced with other criteria.
Go “serverless” or even re-introduce traditional servers, depending on your specific situation. Especially, for Machine Learning the right balance of serverless and servers – together with other aspects – can make a huge difference to costs and other metrics.
Combine many smaller changes in a smart way to see enormous savings in resource requirements while improving system performance.

We have extensive experience in minimising resource requirements using the techniques discussed here. If you want to free up some resources and money that you can use somewhere else, contact us now.