Every line of a cloud bill is usage × rate. FinOps works on both sides: use less (usage optimisation) and pay less per unit (rate optimisation).
flowchart LR U["Usage: hours, GB-months, requests, GB transferred"] --> C["Cost"] R["Rate: on-demand, commitment, spot"] --> C C --> BILL["Invoice by account, service, region"] D["Discounts and credits"] --> BILL %% step U: Usage is measured per second, hour, GB-month, million requests or GB transferred. %% step R: The rate depends on the purchase option you used for that usage. %% step C: Each usage line multiplied by its rate becomes a cost line in the billing data. %% step D: Negotiated discounts, credits and refunds are applied on top. %% step BILL: The invoice groups everything by account, service, region and charge type.
Purchase options for compute
| Option | Commitment | Typical discount vs on-demand | Fits |
|---|---|---|---|
| On-demand | None | 0% | Spiky, short-lived or unknown workloads |
| Savings Plans (AWS) / savings plan for compute (Azure) | 1 or 3 years of $/hour spend | up to ~65–72% | Steady baseline usage that may change instance type |
| Reserved Instances / reservations / committed use discounts | 1 or 3 years for a specific resource family | up to ~72% | Very stable usage of one service, such as databases |
| Spot / Spot VMs | None, can be interrupted | up to ~90% | Fault-tolerant batch, CI, stateless workers |
Discount levels vary by provider, region, term and payment option (no upfront, partial, all upfront); always check the provider's current pricing.
The usual cost drivers
| Driver | Watch for |
|---|---|
| Compute (VMs, containers, functions) | Oversized instances, idle dev/test, always-on batch fleets |
| Storage | Old snapshots, unattached volumes, everything in the hottest tier |
| Data transfer | Traffic out to the internet, across regions and across AZs; NAT gateway processing |
| Managed services | Databases sized for peak, provisioned throughput nobody uses |
| Observability | Log ingestion and retention that grow silently |
Reading a bill
- Charge types: usage, purchase (upfront fees), tax, credits, refunds, support.
- List vs. billed vs. effective cost: list = public price; billed = what is invoiced; effective = amortized cost after discounts — the best number for comparing teams (more in module 2).
- Free tiers and credits hide true cost; remove them when you compare.
Traps: buying commitments before cleaning up waste (you lock in paying for things you should delete); and forgetting that data transfer between availability zones and through NAT gateways is billed, which surprises many teams.