Notes from the team building C3X. Cost estimation for Terraform, the economics of cloud infrastructure, and how to ship FinOps tooling without a SaaS gate.
A static website hosted on S3 and CloudFront, or a static host, costs almost nothing at low traffic, often pennies to a few dollars a month, with data transfer and requests the only real meters. Here is the breakdown and where costs can grow.
Hosting an API can cost almost nothing at low volume with serverless, or a predictable monthly amount on a small server, and the crossover depends entirely on request volume. Here is how to estimate API hosting cost and pick the cheaper model.
Running a website on AWS spans a huge range: a static site costs pennies, a small dynamic site tens of dollars, and a high-traffic app hundreds or thousands a month. The cost depends on whether it is static, dynamic, and how much traffic it serves. Here is the map.
AWS Cost Explorer is the built-in tool for understanding your bill, but its default view hides more than it shows. Grouping by service, filtering by tag, and switching to amortized cost turns it from a total into an explanation. Here is how to read it.
Cost per 1000 inference requests is the unit metric that tells you whether serving a model is economical. It ties GPU or serverless cost to actual usage, and it is the number to optimize as you scale. Here is how to compute and reduce it.
Traffic between availability zones inside the same region is not free. At roughly a cent per GB in each direction, cross-AZ transfer quietly adds up for chatty microservices, replicated databases, and Kafka clusters. Here is how it is billed and how to cut it.
CloudWatch has a free tier, but logs, custom metrics, dashboards, and high-resolution alarms all cost money, and log ingestion in particular can quietly rival compute spend. Here is what is free, what is not, and how to keep monitoring cheap.
S3 has a genuine free tier for the first year, but requests, data transfer out, and storage class choices shape the bill the moment you outgrow it. Here is what the free tier covers and what actually drives S3 cost.
Self-managed Kafka, MSK, and Kinesis price streaming very differently: broker instances plus replication transfer versus shards or throughput units. The cheapest choice depends on throughput, retention, and how much operational work you want. Here is the breakdown.
Both scale Kubernetes nodes, but Karpenter picks instance types and sizes dynamically while Cluster Autoscaler scales fixed node groups. The difference shows up as bin-packing efficiency, spot usage, and idle waste. Here is how each affects the bill.
A shared cluster hides which team spends what. Splitting cost by namespace, using resource requests, actual usage, and node cost, turns one opaque bill into per-team accountability. Here is how namespace cost attribution works and where it gets tricky.
A pod has no price tag; it inherits a slice of its node's cost based on the CPU and memory it requests or uses. Understanding that translation reveals why over-requesting is expensive and where pod-level waste hides. Here is the model.
The gap between the node capacity you buy and the pod usage you actually run is idle cost, and in many clusters it is the single largest source of waste. Here is where idle capacity comes from and how to shrink it.
Resource requests, not actual usage, decide how many nodes Kubernetes buys, so they are the single biggest lever on cluster cost. Set them too high and you pay for idle capacity; too low and you risk instability. Here is how to get them right.
Spot nodes can cut Kubernetes compute cost by well over half, but they can be reclaimed at short notice, so they suit fault-tolerant workloads with graceful handling. Here is how to use spot safely and how much it saves.
Running Lambda functions on ARM-based Graviton instead of x86 costs about 20 percent less per unit of compute, and many functions run just as fast or faster. Here is how the savings work, what to check before switching, and how to migrate.
Lambda bills on requests and on compute measured as memory times duration, with memory also determining CPU. Understanding that model reveals why right-sizing memory, cutting duration, and choosing ARM are the levers that control serverless cost. Here is the full picture.
RDS Multi-AZ roughly doubles instance and storage cost by running a standby in a second Availability Zone for automatic failover. Here is what you actually pay for, and when the availability is worth the premium.
Each RDS read replica is a full additional instance with its own compute and storage cost, plus data transfer for cross-region replicas. Here is how read replica pricing works and how to scale reads without overpaying.
Redshift bills for provisioned or serverless compute plus storage; Snowflake bills for compute credits by the second with separate storage, pausing when idle. Which is cheaper depends on your query pattern and utilization. Here is the comparison.
A reserved instance only saves money if it is used. Low utilization means paying for commitment you are not applying, quietly erasing the discount. Here is how to measure, maintain, and maximize RI utilization.
Kubernetes pod requests reserve node capacity whether used or not, so over-set requests waste cluster resources and money. Right-sizing requests and limits to real usage packs more work onto fewer nodes. Here is how.
Lambda memory controls both cost and CPU, so the cheapest setting is not always the lowest. Right-sizing memory to minimize cost per invocation, factoring in faster execution, is a real optimization. Here is how to tune it.
RDS instances are often provisioned larger than the workload needs, and unlike stateless compute, resizing a database takes care. Here is how to right-size RDS instance class, storage, and IOPS to real usage without risking the database.