HOSTING & CLOUD OPERATIONS

Cloud storage costs: capacity, requests and data transfer explained

Two applications can store the same amount of data and generate very different bills. Object storage pricing depends on how the files are written, read, delivered and retained. Build a workload model before comparing a per-gigabyte headline.

Gallery sculpture combining stacked blue storage blocks, small brass request beads and an outward-flowing amber ribbon.
Capacity, operations and data delivery should be modelled separately before comparing storage services.
In this guide
  1. Describe the workload before the service
  2. Separate the billable dimensions
  3. Build a workload worksheet
  4. Use a clearly fictional calculation
  5. Check less obvious lifecycle charges
  6. Validate delivery and recovery
  7. Review actual use after launch

Describe the workload before the service

Write down the objects, typical size, total retained volume and how they are accessed. A public image library, a private document archive and a nightly backup repository behave differently. Include temporary copies and older versions if the proposed design keeps them.

For a fictional software publisher, the workload might contain article images, original uploads and social previews. One visitor can request several files, while a cache may serve some without reaching object storage. Estimate storage requests from the delivery architecture rather than assuming one page view always equals one storage read.

Separate the billable dimensions

Amazon S3’s pricing guidance distinguishes storage classes, request types, retrieval and transfer conditions. Cloudflare R2’s pricing documentation separates storage and operation classes, adds retrieval charges for its infrequent-access class and states that direct R2 egress has no bandwidth charge. Connected metered services can still have their own charges.

Use the current documentation for the selected region, storage class and access path. Do not assume S3 API compatibility means identical prices or billing rules. The application’s delivery, transformation and compute services belong in the same total-cost model even when they appear on separate billing lines.

Build a workload worksheet

Object-storage cost inputs
DimensionInput to estimateQuestion to resolve
CapacityAverage retained GB-monthAre versions and copies included?
Writes and listingsOperations by billable classDoes one upload use several operations?
ReadsStorage requests after cachingWhich requests reach the bucket?
Retrieval and transferBytes on applicable pathsWhich allowances and conditions apply?

Use an ordinary month and a busy month. Record where the estimate comes from and which values are assumptions. A proposed service should be compared against both scenarios. The lowest storage rate may not produce the lowest overall bill for frequently accessed small files.

Use a clearly fictional calculation

Suppose a hypothetical provider charges €0.02 per GB-month for storage and €0.40 per million billable reads. Storing 100 GB for the month and making five million billable reads would produce €2.00 plus €2.00, or €4.00 for those two components. These rates are invented solely to explain the arithmetic.

The example excludes writes, transfer, retrieval, taxes, minimum charges and other services. Add the applicable components from the real quote. Keep units visible: a rate per million requests must not be multiplied as if it were a rate per individual request. Apply the provider’s rounding and allowance rules separately.

Check less obvious lifecycle charges

An archive may look inexpensive until the team needs to read it often or delete it earlier than expected. Check minimum storage duration, minimum billable object size where applicable and the cost of retrieval or restoration. Document how long the business intends to keep each object class.

A migration can also generate reads, writes and transfer on different sides of the move. Include the source service as well as the destination. Test a small permitted sample and inspect the metering before moving the full library. Avoid turning an estimated migration bill into a fixed promise without knowing the actual object and request pattern.

Validate delivery and recovery

Confirm that a normal reader can access the required public files while private originals remain restricted. Inspect the content type and caching behaviour of representative images and downloads. A successful upload is not proof that the final website can display the object correctly.

For private backups, test the restoration workflow instead of only checking that files exist. Record which application version and configuration are needed to use the restored data. Object durability does not by itself establish an application recovery time or protect against every mistaken deletion in the surrounding system.

Review actual use after launch

Assign an owner to compare usage with the model and investigate unexpected request growth. Separate legitimate audience growth from a changed integration or a cache configuration mistake. Set the account’s available billing alerts and document how the team responds.

The Amazon S3 profile provides product context. The software exit-plan guide covers export and migration responsibilities. Compare storage services using the whole access pattern and operational requirements, then revise the estimate when real metering becomes available.

Frequently asked questions

Is stored data volume enough to estimate cloud storage cost?

No. Include applicable request, retrieval, transfer, lifecycle and connected-service charges.

Does no egress fee mean the entire delivery stack is free?

No. Storage operations and connected compute, delivery or transformation services can still be metered.

Are the example rates current vendor prices?

No. They are hypothetical rates used to explain the units and calculation. Use the selected provider’s current pricing for a purchase.

Put the guide into practice

Explore cloud platforms tools, then compare your shortlist.

Explore the category →