It is not a filesystem
Object storage holds whole objects addressed by a key, retrieved over HTTP. There are no directories, and you cannot modify part of a file in place; you replace the whole object.
That constraint is what makes it cheap and effectively unlimited. It also makes it wrong for anything expecting filesystem semantics, such as a database data directory.
What it is good for
- User uploads such as images, video and documents
- Static website assets, usually behind a CDN
- Backups and database dumps
- Data lake storage for analytics
- Build artefacts and container layers
Four separate charges, not one
The headline per-gigabyte price is only part of the bill.
- Storage, per gigabyte per month
- Requests, per thousand operations, with writes costing more than reads
- Egress, per gigabyte leaving the provider
- Retrieval, on cold and archival tiers, on top of the request charge
A workload that stores little but reads constantly can spend more on requests and egress than on storage.
Storage classes are a real saving, with a catch
Providers offer tiers from hot to archival. The colder the tier, the cheaper the storage and the more expensive and slower the retrieval. Archival tiers can take hours to restore.
Most also have a minimum storage duration: delete an object from a cold tier early and you are still billed for the minimum period. Lifecycle rules that move data down tiers automatically are worth setting up, but check those minimums before applying them to data that changes.
S3 compatibility is the norm
Most providers implement the S3 API, including DigitalOcean Spaces, Linode Object Storage and UpCloud. In practice that means existing tooling and libraries work with a change of endpoint, and switching providers is genuinely feasible.
This is one of the few areas of cloud with real portability, and it is worth preserving by not depending on provider-specific extensions.
Bundled bandwidth changes the maths
Where object storage is bundled with generous transfer allowances, as it is on several developer clouds, the effective cost for a public-facing asset bucket can be far lower than a hyperscaler’s per-gigabyte egress rate.
For a media-heavy site this difference is often the single largest factor in the bill.
Related accounts
Accounts on the platforms discussed here: Buy AWS Accounts, Buy DigitalOcean Accounts, Buy UpCloud Accounts.
Related cloud accounts
Accounts on the platforms discussed here, with every configuration and price published up front:
- Buy AWS Accounts — from $25.00. Over 200 services, from EC2 to Bedrock.
- Buy DigitalOcean Accounts — from $25.00. Droplets, managed Kubernetes and Spaces.
- Buy UpCloud Accounts — from $30.00. MaxIOPS storage and no egress charges.
Further reading
- DigitalOcean vs UpCloud: Which Cloud Account Should You Buy?
- AWS vs Kamatera: Which Cloud Account Should You Buy?
- Managed Database or Self-Hosted: An Honest Comparison
- Where to Rent GPUs: Comparing the Options
Official documentation
Provider behaviour, quotas and pricing are defined by the platform itself. These are the first-party references for the services discussed above:
Frequently asked questions
No. It has no filesystem semantics and no partial writes. Use block storage for databases.
Almost always requests and egress. High-traffic buckets generate large numbers of billable operations.
Largely yes, because most implement the S3 API. Avoid provider-specific extensions to keep it that way.