Building an infrastructure cost model for a new product launch
A launch cost model has to work before any usage data exists. Here is how to build one from architecture and assumptions, what to bound, and how to keep it useful once real traffic arrives.
Quick answer
Build the model in three layers: fixed floor (infrastructure that exists at zero users, often 800 to 4,000 USD a month), variable per-unit cost (compute, storage, egress, and third-party calls per active user or transaction), and step functions (the volumes where a bigger tier, another cluster, or a new region becomes necessary). Model three adoption scenarios rather than one, express the answer as cost per user at each, and price the actual Terraform rather than estimating from instance lists.
Before a product launches there is no usage data, no billing history, and no way to validate an estimate against reality. Yet someone has to answer whether the infrastructure will cost 3,000 USD a month or 30,000 USD, and whether the planned price point survives contact with the bill. The model has to be built from architecture and stated assumptions, and its purpose is bounding the answer rather than predicting it.
Three layers
| Layer | Behavior | Typical examples |
|---|---|---|
| Fixed floor | Constant regardless of usage | Cluster control plane, NAT, load balancers, base database, observability |
| Variable | Scales with usage | Compute per request, storage per user, egress, per-call third parties |
| Step | Jumps at thresholds | Larger database tier, second region, dedicated cache, higher support tier |
The fixed floor surprises people most. A modest production environment with a managed Kubernetes control plane, a NAT gateway, two load balancers, a small multi-zone database, a cache, and observability sits somewhere between 800 and 4,000 USD a month before a single user arrives. At 50 users that is 16 to 80 USD per user, which looks catastrophic and is simply what a floor does. Model it separately so it does not contaminate the per-unit analysis.
Deriving the variable cost
Work from a usage profile rather than intuition. Define what one active user does per month: number of API calls, average payload size, stored data, background jobs triggered, notifications sent, third-party API calls made. Then map each to a price.
An example for a document collaboration product: 900 API calls, 4 GB stored, 1.2 GB egress, 40 background jobs, 2 external API calls per user per month. Priced out, that might be 0.09 USD of compute, 0.09 USD of storage, 0.11 USD of egress, 0.02 USD of job compute, and 0.04 USD of third-party calls, so roughly 0.35 USD per active user per month. At 10,000 users that is 3,500 USD variable plus a 2,200 USD floor, or 5,700 USD total, which is 0.57 USD per user all-in.
The individual numbers will be wrong. The structure will not be, and the structure is what tells you whether the product is viable at a 9 USD per month price point or needs a rethink.
Find the step functions early
Steps are where launch budgets break. Identify the specific thresholds: the request rate at which one database instance stops being enough, the storage volume that forces a tier change, the user count that requires a second region for latency, the log volume that triggers a pricing tier on the observability platform. Write each as "at X, cost jumps by Y."
Knowing that crossing 25,000 users adds 4,000 USD a month for a larger database and read replicas is far more useful than a smooth projection, because it tells product and finance exactly where the curve bends and gives engineering a target to design around.
Model three scenarios, not one
Adoption forecasts for new products are unreliable in both directions. Model conservative (roughly a third of the plan), planned, and aggressive (three times the plan), and report cost per user at each. The aggressive case matters most, because that is where a product succeeds and the infrastructure cost turns out to be unsustainable at the chosen price. Better to learn that in the model than in month four of a successful launch.
Do not forget the non-production multiplier
A new product needs development, staging, and CI infrastructure, and for a small early user base these can exceed production cost. Budget non-production at 40 to 80 percent of production for a pre-launch product, then declining as production grows. Ephemeral environments per pull request are worth it for velocity but need a lifecycle policy, or they become a large line item nobody planned for.
Convert the model into a monitored number
The model becomes valuable after launch, not before, provided someone compares it to reality. Instrument cost per active user from week one and compare monthly against the model. When actual is 0.62 USD against a modeled 0.35 USD, the gap itself is the finding: usually egress higher than assumed, storage growing faster because nothing is ever deleted, or a chatty background job. Each of those is a fixable engineering item, and the model is what made it visible.
Price the plan, not a spreadsheet
The weakest link in most launch models is the resource inventory, because a spreadsheet built from memory omits NAT data processing, cross-zone traffic, snapshot storage, log retention, and the second environment. Writing the launch architecture in Terraform and pricing the plan directly gives a complete, resource-level fixed floor and a defensible starting point for the variable layer. C3X prices the plan against a live catalog, so the floor in the model matches what would actually be deployed on launch day. See thethree-tier architecture breakdown for a worked example of a typical floor.
FAQ
How do I estimate infrastructure cost for a product with no usage data?
Build it in three layers from the architecture: a fixed floor that exists at zero users, a variable per-unit cost derived from a stated usage profile, and step functions marking the volumes where a bigger tier or another cluster becomes necessary. The purpose is bounding the answer across scenarios rather than predicting a single number that cannot be validated yet.
What is a typical fixed infrastructure floor for a new product?
Between roughly 800 and 4,000 USD a month for a modest production environment with a managed Kubernetes control plane, NAT gateway, load balancers, a small multi-zone database, a cache, and observability. At low user counts this dominates per-user cost, which is why the floor should be modeled separately rather than blended into the per-unit analysis.
How do I derive variable cost per user before launch?
Define what one active user does per month, such as 900 API calls, 4 GB stored, 1.2 GB egress, 40 background jobs, and 2 third-party calls, then price each component. That might total around 0.35 USD per active user. The individual figures will be imprecise but the structure is what reveals whether the planned price point is viable.
Why model step functions rather than a smooth curve?
Because steps are where launch budgets break. Identify the request rate at which one database instance is insufficient, the storage volume forcing a tier change, the user count requiring a second region, and the log volume triggering a higher observability tier. Stating each as cost jumping by a fixed amount at a known threshold gives engineering something concrete to design around.
How much should non-production cost be budgeted for a new product?
Around 40 to 80 percent of production for a pre-launch product, declining as production grows. Development, staging, and CI infrastructure frequently exceed production cost when the user base is small. Ephemeral per-pull-request environments are worth the velocity but need an explicit lifecycle policy or they become a substantial unplanned line item.
How does the launch model stay useful after launch?
Instrument cost per active user from the first week and compare monthly against the model. A gap, for example 0.62 USD actual against 0.35 USD modeled, is itself the finding and usually points to higher than assumed egress, storage growing because nothing is deleted, or a chatty background job. Each is a fixable engineering item the model made visible.
What to do next
Build the fixed floor from the real plan. C3X prices your launch Terraform against a live catalog. Start with the quickstart.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.