As cloud infrastructure service offerings have grown from a small set of services like virtual machines, object storage and networking primitives to an à la carte menu of hundreds of services, maintaining visibility into what services you're using and paying for can be a job in and of itself. As a startup you are rightfully focused on finding product market fit. However very soon after you achieve product market fit, margins start to become important. The sooner you start tending to cloud costs the easier it will be to get under control when the time comes. This post is meant to give a quick overview of how to think about cloud costs when you're just getting up and running as a startup.
As you're navigating to finding product market fit you're typically tracking metrics that are customer focused. Depending on the nature of the company, you may be looking at the number of new user registrations, active user engagement metrics or revenue being generated. Typically, companies will also take a look at technical KPIs like performance of the application and the number of bugs/exceptions that are being raised.
However, one often-forgotten metric that startups fail to track is cloud costs. This is primarily because usage-based infrastructure providers make this information particularly hard to find and track. Startups are usually granted credits from providers like AWS, GCP, Azure and DigitalOcean and forget about them until they expire and are suddenly faced with frantically unpacking their surprise bill. By tracking cost metrics from day 1, you can avoid these scenarios and always know how your infrastructure spend is trending.
Instituting certain early behaviors in your organization can save you a lot of time and effort down the line and probably the easiest one to do is leveraging cost allocation tags. Using tags allows you to group infrastructure together by function (i.e. front-end vs back-end), environment (i.e. staging vs production) or even developer (i.e. Molly vs Brian) on your team. By applying tags to your infrastructure, you can see not only how much your infrastructure is trending in aggregate but also see how it is trending by each tag you apply.
Cost Allocation Tags cost nothing and are usually pretty easy to apply. In the same way you think about writing unit tests, you should consider applying cost allocation tags as a general best-practice behavior. Just like with unit test, the earlier you get started with cost allocation tags the easier it becomes to manage over time.
Infrastructure providers typically make it incredibly easy for you to provision resources: you can create some new virtual machines in a few clicks on consoles, create backups for storage volumes with the flip of a switch and easily push new files to an object storage as often as you'd like. What we've found from looking at aggregated, anonymized data is that the vast majority of customers have not put into place very basic guardrails that could keep costs in check - mostly from just not knowing these exist.
Some easy guardrail examples to implement include:
- Implementing lifecycle policies on ECR repos to prevent a backlog of unused legacy images.
- Using intelligent tiering on S3 Buckets to pay less money for assets which are no longer accessed.
- Purchasing Savings Plans and Reserved Instances for instances you know will be used consistently.
These guardrails typically take very little time for customers to enable but most people don't think about them. They also can have major consequences for saving money that adds up every single month.
When you're a startup, your focus should be on your business. Spending time having to learn AWS cost APIs and getting them implemented in the manner you want can easily be an entire engineer's time. As your startup grows to have finance and management counterparts who are curious about costs and accounting for them properly, the asks become bespoke and it takes significant engineering time to get cost data organized and delivered to them that's better spent being outsourced.
In the same way you look to third parties like Sentry for exception handling rather than rolling your own, sourcing cost monitoring solutions is likely your best bet. Vantage offers a free tier to all startups with less than $2,500 per month in cloud infrastructure costs. You can get up and running in a few minutes and invite team-members to your Vantage account to share reports with others — which is a lot better than getting them on the AWS Console itself.