Non-production databases often outnumber production ones five to one and run identical configurations. Scheduling, sizing, and sharing them typically cuts that spend by 70 to 85 percent with no impact on anyone's work.
A remote state backend is one of the cheapest things a platform team runs, right up until it is not. Locking tables, versioning, request volume, and hundreds of workspaces turn a rounding error into a real line. Here is what each backend option costs at scale.
Managed CI minutes are simple and priced per minute. A self-hosted fleet is cheaper per minute and comes with idle capacity, autoscaling, caching, and maintenance. The crossover depends on utilization more than volume. Here is how to run the numbers for your fleet.
A remote build cache turns compute minutes into storage and transfer charges. That trade is usually excellent and occasionally terrible, depending on hit rate, object size, and where the cache lives relative to the runners. Here is the arithmetic.
Registries are append only by default, so every build ever produced is still there. At a few hundred megabytes per image and dozens of builds a day, storage compounds quietly for years. Here is how retention policies change the number.
Non-production is typically 30 to 40 percent of a cloud bill and used for 30 percent of the hours. The savings are large and safe, but only if the changes do not add friction. Here is the playbook that cuts spend without cutting velocity.
Hosted CI runners are billed per minute and get expensive at high build volume; self-hosted runners on your own compute can cost far less per minute but add operational and idle-capacity overhead. Here is the tradeoff.
GitHub Actions bills by the minute for hosted runners, with multipliers for larger and non-Linux runners and per-GB charges for storage and data transfer. Here is how Actions minutes are priced, what the multipliers mean, and how to cut CI costs.
GitLab CI bills compute minutes on shared runners (with a free allowance and cost factors by runner type), or you run self-managed runners on your own infrastructure. Caching, right-sized runners, and self-hosting for scale cut it. Here is the model.
Build artifacts, packages, and container images accumulate in storage, billed per GB, and unpruned artifacts grow the bill quietly. Retention policies, pruning, and tiering keep it flat. Here is how.