FinOps principles: Cloud Optimization
By: Nick Smirnov
Tags: Finops, Cloud Optimization, DevOps, Cloud, Cloud Management

Cloud optimization looks like a low hanging fruit, but I have good and bad news for you. The good news is that in the majority of the cases it is a quick way to get some instant results from FinOps. The bad news — you have to work on this constantly. One time optimization gives results, however, in a few months you can get back to your previous cloud bill.

There are a few practices you can use to optimize cloud resources and reduce your cloud bill. But the most important thing is to establish a process of smart and conscious resource consumption and provisioning so you would deal not just with the results but make optimization an integral part of all your internal processes.

Ok, let’s start with a few ways to optimize your current expenses and later discuss how to make it a part of the entire cloud provisioning process.

There are hundreds of cloud resource optimization tools; some of them are really cool, some just look at machine monitoring metrics and say if you need to take a cheaper flavor. Our focus here will be on what you can do yourself with your team and without any tools. However, I strongly encourage you to analyze the market and identify a solution that conforms with FinOps standards and can help you with all the four FinOps principles.

I consciously focus on IaaS services as they are the most common. I will use AWS as an example but all the bullets should work for all the public clouds.

Let’s start with unused resources you can clean up:

List all the volumes and snapshots not being attached to any VMs or used to create images. Review and remove them. When you remove images, don’t forget to revise snapshots as they are tied to images.

List all the stopped VMs and check if they are needed. If they don’t cost you anything as a VM, they still have volumes attached.

2. Now let’s talk about VM re-flavouring: review performance metrics from your VMs and see whether you need to choose a less expensive flavours. I suggest to start with recurring resources like CI/CD jobs as you’ll get a measurable result quicker.

3. Consider reserved instances and saving plans. Here is a nice article and another one about how to properly use them. Be cautious: reserved instances and saving plans which aren’t properly calculated can increase your expenses instead of reducing. You can find more articles on the Internet and I’ll be writing a separate article about it soon.

4. Consider spot instances. They are 2–4 times cheaper than the on-demand and are ideal for CI/CD jobs and short-term tasks. Here I provide more information about that.

5. Storage and networking optimization:

Review your cross-region and outbound traffic. Both are not free and can astonish you when you dig deeper.

Turn on and configure retention settings for partial objects in all your object storage buckets. In object storage you pay for allocated space and sometimes you have partially loaded objects there which consume storage but are useless as they are not integral.

Find duplicates and buckets / folders belonging to inactive users and projects. I have never seen a proper order in any object storage, to be honest. You can be the first company.

Consider using cold storage for some of your buckets and folders and this type of storage is way cheaper.

Consider using CDN services instead of just object storage. You can improve your user experience and save on costs of storage and outbound traffic.

And now let’s talk about building the process that should help you bring more order and use clouds in an optimal way.

Tag all resources. You can use multiple tags to identify owners of the resources, TTL, project, team, whatever. Resources without a tag should be removed. I’ve described it in more detail here. Create a clean up script that will use a TTL tag and remove expired resources. Don’t rely on your engineers to clean up resources manually, or Jenkins jobs to do it automatically. CI/CD jobs can fail and engineers can forget and go for a PTO. Create a FinOps team to review the steps above and implement them. As I mentioned at the beginning, you need to do it regularly or it doesn’t properly work. Here you can find more details. Consider other clouds and regions. Not all regions have the same instance price and performance. You should actively monitor those metrics to provision in the best performing and cost-efficient cloud, region and availability zone. Find a software solution to assist you. Focus not just on a tool with the best marketing but on the one that really adopts and sets FinOps standards. Cloud optimization tool is not enough.

You should think about FinOps not only when you are a company with a billion revenue and thousands of employees but from the first day of your company as clouds can either boost growth or be a real pain — up to almost ruining your business (here is one of the examples). FinOps is dedicated to help you get the best out of the clouds paying only what you should.