A bucket is an API, not a drive
Object storage is a service that keeps files in the cloud as objects: each one a key, the bytes and a little metadata, held in a bucket and fetched with an HTTP request rather than a disk read. Amazon S3 defined the interface and nearly everyone copied it, which is why moving between providers is normally a change of endpoint and credentials rather than a change of code. Nothing in that picture belongs to a particular machine. Your VPS can be destroyed and rebuilt without the bucket noticing, because the provider is holding copies across its own hardware and handing them back by key. Access works the same way: a bucket is closed until a policy or a signed URL opens it, which is exactly why misconfigured policies are how private data ends up indexed by strangers. Bucket names are also claimed globally within a provider, which is why every tutorial ends up appending a suffix nobody else has taken yet.
The first mistake is almost always the same one. Tools such as s3fs and rclone will happily present a bucket as a folder, and the illusion holds until an application appends to a file, seeks into the middle of one, or expects a lock. Objects are written and read whole. There are no real directories either, only keys containing slashes and a console that draws a tree which does not exist. What the model suits is material written once and read many times: user uploads, images and video, database dumps, log archives, build artefacts, and entire static sites served straight from a bucket behind a CDN. Live application state is the opposite shape, so databases and session files stay on a real volume where partial writes are allowed. Listing is the other habit worth unlearning: asking a bucket what it contains is a paged request that grows slower as the bucket fills, so serious applications keep their own index in a database and treat the bucket purely as the place bytes are kept.
The bill lives in the egress
Keeping data in a bucket is cheap and predictable. Getting it back out to visitors is the part that grows with your success, because providers meter outbound transfer, and an architecture that streams large files directly from a bucket can invert the whole cost model. Cloudflare markets R2 on precisely this point in its own documentation: storage is charged, egress is not. Read the transfer terms before the storage price, and keep a cache in front so the origin stays quiet.
