Member-only story
Understanding Total Cost of Ownership of Serverless and Container Applications
It costs much more than your monthly AWS bill to build and maintain an app in production

Last week I published an article discussing when serverless is more expensive than containers. In that post, I did a simple comparison between Lambda, EC2, and App Runner to show relative compute costs.
I also mentioned something a few times in that article that I realized probably needs to be clarified a bit. I qualified my findings by stating that even though we found a tipping point where serverless is more expensive than provisioned resources, the total cost of ownership (TCO) is still lower.
Total cost of ownership is probably not a new concept to many of you reading this post, but in case it is, I want to discuss it and talk about specifics when we compare serverless and serverful applications.
When we talk about a company’s cost to successfully run an application in production, we must consider more than our monthly AWS bill. Everything that goes into the operation of that app factors into the cost.
Contributors to total cost of ownership:
- Infrastructure — Compute, provisioned components, storage
- Initial development — Time from ideation to production
- Maintenance — Patching, OS updates, bug fixes, etc…
This is not an exhaustive list, but it does represent the three major sources of cost for production applications.
Infrastructure Costs
Also known as cost to run, this is what my post last week focused on. Comparing serverless apps with traditional cloud apps in this manner is a bit like comparing apples and oranges, but the end result is your monthly bill.
Serverless infrastructure costs are based on your usage while traditional workloads are based on provisioned resources. These are highly variable costs based on the amount of monthly requests, average request/response sizes, and peak vs sustained load times.
Infrastructure costs are billed monthly and will recur for the life of your application. As you make enhancements to…