AWS Solutions Architect: Core Compute, Storage & Database Architecture
A comprehensive cheat sheet and reference guide covering EC2 instances, S3 storage tiers, RDS vs DynamoDB, and High Availability VPC design.
A beginner-friendly deep dive comparing Object Storage, Block Storage, and File Storage with real-life analogies, side-by-side trade-offs, and cloud architecture examples.
Study Progress
Mark this module as reviewed for your cloud exam/team prep
Anyone who has heard the words object storage, block storage, and file storage but is not sure what they actually mean. No prior cloud experience is assumed. Everything is explained with everyday, real-life comparisons first, and the technical detail is added on top only after the idea is clear.
Every application in the world has to keep data somewhere. A mobile app keeps photos, a bank keeps transaction records, a hospital keeps scan reports, a website keeps its own code and logs. At first glance it looks like this should be a solved problem: just save the data on a disk and move on.
In practice, different kinds of data are used in very different ways:
One single storage design cannot be the best answer for all three of these situations.
So the industry settled on three broad ways of organising stored data. They are called block storage, file storage, and object storage. They are not competing products where one wins and the others lose. They are three different shapes of the same raw material, each shaped for a different job.
The One-Line Summary (keep this in mind while reading):
Block storage gives you raw slices of a disk and lets you organise them yourself.
File storage gives you a familiar folder tree that many machines can share.
Object storage gives you a giant flat pool where every item is stored whole, with a unique address and a label describing it.
Imagine you have to store your belongings. There are three different services in town:
You rent an empty unit. It is just bare space with four walls. The company does not care what you put inside or how you arrange it. You bring your own shelves, your own boxes, and your own labelling system. It is the most flexible option and the fastest to access, because you know exactly where everything is — but all the organising work is yours.
There is a room full of cabinets, drawers, and folders, and everyone in the office already knows how to use it. You walk in, follow the labels — Finance -> 2026 -> Q1 -> Invoices — and pick up what you need. Multiple colleagues can use the same room at the same time. The structure is ready-made and familiar, but as it grows to millions of folders it becomes slow and hard to manage.
You hand over a whole suitcase. You do not get shelf space, and you do not get a folder path. You get a unique tag number, and the system attaches a label describing the bag: owner, flight, weight, destination. The bags are not arranged in any tree; they sit in one enormous pool. When you want your bag back, you present the tag and the system finds it instantly. You cannot open the suitcase and change one shirt inside it — you take the whole suitcase and hand back a new one. In exchange, the system can handle a practically unlimited number of bags.
The Key Insight:
The real difference between the three is how small a piece of data you are allowed to address and change.
- Block storage addresses tiny fixed-size chunks.
- File storage addresses a file inside a folder path.
- Object storage addresses one whole object by its unique key, and replaces it entirely when it changes.
Block storage takes a disk and divides it into equal, fixed-size pieces called blocks — typically 512 bytes or 4 kilobytes each. Each block gets its own address, and that is the entire structure. There is no concept of a file, a folder, or a filename at this level. The storage system simply hands out numbered blocks and answers two requests: read block number N and write this data to block number N.
When your computer saves a 10 MB file to a block device, the operating system breaks that file into many blocks, scatters them across the disk wherever there is space, and keeps its own map of which blocks belong to which file. That map is the file system (NTFS on Windows, ext4 or XFS on Linux, APFS on Mac). The block storage itself knows nothing about your file; it only knows the blocks.
A block volume behaves exactly like a physical hard drive plugged into a machine. Before you can store anything on it you have to prepare it, the same three steps you would follow with a brand-new external drive:
/data or drive D:, after which normal programs can read and write to it.Because blocks are small and individually addressable, you can change a tiny part of a large file without rewriting the whole thing. If a database needs to update one row inside a 500 GB table, it changes only the few blocks that hold that row. This ability is called in-place modification, and it is the reason block storage is the foundation of nearly every database in existence.
The other consequence is speed. There is very little machinery between the request and the disk, so latency is extremely low — often under a millisecond on solid-state drives. Performance is usually measured in IOPS (input/output operations per second) and throughput (megabytes per second).
A block volume is normally attached to one server at a time. Two servers cannot both write to the same raw volume safely, because each one keeps its own private map of the blocks and neither knows what the other has changed — the result is corrupted data. Sharing block storage between machines requires special clustered file systems, which are complex and rarely worth it. Block storage also does not scale endlessly: a volume has a fixed size you must decide in advance and grow manually.
File storage is the model everyone already knows, because it is how your laptop presents data to you. Data is stored as named files, and files are placed inside folders, and folders can contain other folders. This produces a tree, called a hierarchy, and every file has an address that is simply its position in that tree — its path:
# Example file path:
/company/finance/2026/Q1/invoice-4471.pdf
Reading left to right, this is a set of directions: start at the top, go into company, then finance, then 2026, then Q1, and pick up the file named invoice-4471.pdf.
File storage sits one level above block storage. Underneath, the data still ends up on blocks — but here the storage system itself owns the file system and manages the mapping for you. You never think about blocks. You think about files and folders.
The decisive advantage this unlocks is sharing. Because the storage system, not the individual server, is in charge of the structure, it can safely let many machines and many users read and write at the same time. It handles the coordination — locking a file while someone edits it, tracking permissions for each user, keeping a consistent view for everyone. This is what a network drive at an office is, and what NAS (Network Attached Storage) devices provide at home.
Access happens over standard network protocols: NFS (Network File System), common in the Linux and Unix world, and SMB or CIFS, common in the Windows world.
The hierarchy that makes file storage so intuitive is also what limits it. Every lookup means walking down the tree, and the storage system must maintain metadata for every folder and every file. That works beautifully for thousands or millions of files. At hundreds of millions, the tree becomes a bottleneck: listing a directory gets slow, backups take forever, and the structure itself becomes hard to reason about. File storage also tends to be more expensive per gigabyte than object storage, and cannot grow without limit.
Object storage throws away the folder tree entirely. Instead of a hierarchy, it uses one huge flat pool, and every item in that pool is called an object. Objects live inside containers, which AWS calls buckets.
Every object is made of three parts:
| Part | What it is | Example |
|---|---|---|
| The data | The actual content, stored as one complete, indivisible unit. A photo, video, PDF, log file, or database backup. | The bytes of a 4 MB JPEG |
| The key | A unique name that identifies the object within its bucket. This is the object's whole address — there is no folder path behind it. | users/8812/avatar.jpg |
| The metadata | A set of labels describing the object. Some are set by the system; you can add as many of your own as you like. | content-type: image/jpeg; uploaded-by: user-8812; region: kerala |
Slashes in a key are NOT folders:
A key such asusers/8812/avatar.jpglooks like a folder path, and cloud consoles helpfully draw it as folders. But there is no tree underneath. The slashes are just characters in a long name, exactly like hyphens would be. This is one of the most common points of confusion for beginners!
You do not attach an object store to a server and you do not mount it as a drive. You talk to it over the internet using an HTTP API — the same protocol your browser uses:
PUT — store an object under a given key.GET — retrieve the whole object by its key.DELETE — remove the object.LIST — list the keys in a bucket, optionally filtered by a prefix.Because access is over plain HTTP, any application in any language can use object storage without special drivers, and a stored file can be served directly to a web browser or CDN.
Objects are immutable. You cannot open an object and edit five bytes in the middle of it. To change anything, you upload a complete new version that replaces the old one.
This sounds like a restriction, and for databases it genuinely is a disqualifying one. But it is exactly what makes object storage scale so well: with no in-place edits and no tree to maintain, the system has far less bookkeeping to do, so it can hold trillions of objects and practically unlimited capacity.
Object storage systems also keep multiple copies of every object across separate physical locations automatically. This is why providers advertise extremely high durability — AWS S3 is designed for 99.999999999% durability (11 nines).
Not all data is read equally often. A profile photo may be fetched every day; a compliance archive from 2019 may never be read again but must legally be kept.
Object storage lets you place each object in a storage class that trades retrieval speed for price:
| Aspect | Block Storage | File Storage | Object Storage |
|---|---|---|---|
| Unit of data | Fixed-size block | File inside a folder | Whole object |
| How it is organised | Flat numbered blocks; you supply the structure | Hierarchical folder tree | Flat pool of objects in buckets |
| How data is addressed | Block address | File path | Unique key |
| Metadata | Almost none | Basic (name, size, dates, permissions) | Rich and fully customisable |
| How it is accessed | Attached to a server as a disk (iSCSI, Fibre Channel, NVMe) | Network protocols (NFS, SMB / CIFS) | HTTP REST API |
| Can be shared | Usually one server at a time | Yes — many clients at once | Yes — unlimited clients over the internet |
| Can you edit part of it | Yes, in place | Yes, in place | No — replace the whole object |
| Latency | Lowest (sub-millisecond) | Low to moderate | Highest (tens of milliseconds) |
| Scalability | Limited; volumes are resized manually | Good, but degrades at very large scale | Practically unlimited |
| Cost per GB | Highest | Moderate to high | Lowest |
| Best suited to | Databases, boot disks, transactional workloads | Shared drives, legacy apps, team collaboration | Media, backups, data lakes, static content |
| Cloud examples | AWS EBS, Azure Disks, GCP Persistent Disk | AWS EFS, Azure Files, GCP Filestore | Amazon S3, Azure Blob, Google Cloud Storage |
It also helps to see that these are not three unrelated technologies sitting side by side. Physical drives are at the bottom of everything. Block storage is the thinnest layer over them. File storage adds a hierarchy and sharing on top of blocks. Object storage is a distributed system built across many machines, each of which is itself using block storage internally.
┌──────────────────────────────────────────────────────────────┐
│ OBJECT STORAGE: Keys, Metadata, HTTP, Unlimited Scale │
├──────────────────────────────────────────────────────────────┤
│ FILE STORAGE: Folders, Filenames, Shared Multi-Client Access│
├──────────────────────────────────────────────────────────────┤
│ BLOCK STORAGE: Numbered Blocks, Raw, Low Latency, Fast │
├──────────────────────────────────────────────────────────────┤
│ PHYSICAL HARDWARE: Disks (HDD / SSD / NVMe) │
└──────────────────────────────────────────────────────────────┘
As you move up the stack you gain scale, sharing, and simplicity; as you move down you gain speed and fine-grained control.
In real projects the decision is rarely agonising. Three questions almost always settle it:
| Ask yourself | If the answer is yes | Choose |
|---|---|---|
| Does the application need to modify small parts of large data very frequently, with the lowest possible delay? Is it a database? | You need in-place edits and sub-millisecond latency. | Block storage |
| Do several servers or several people need to read and write the same data at the same time, through ordinary file paths? | You need a shared, hierarchical, POSIX-style file system. | File storage |
| Is the data written once and read many times, growing without a clear limit, and accessed by whole items rather than pieces? | You need scale and low cost more than you need low latency. | Object storage |
A Useful Rule of Thumb:
If it is a database, it wants block.
If it is a shared folder, it wants file.
If it is a file a user uploaded, a backup, or a log, it wants object.
When you are genuinely unsure and the data is not a database, object storage is usually the safe default — it is the cheapest and the hardest to outgrow.
Most real systems use all three types together. Consider a simple app where users sign up and upload photos:
Notice that no type is 'better'. Each one is placed where its strengths match the workload.
| Term | Meaning |
|---|---|
| Block | A fixed-size chunk of data, usually 512 bytes or 4 KB, that a disk reads and writes as one unit. |
| File system | The software layer that keeps track of which blocks make up which file. Examples: ext4, XFS, NTFS, APFS. |
| Mount | To attach a storage volume to a location in a machine's directory tree so programs can use it. |
| Bucket | A named container that holds objects in an object storage system. |
| Key | The unique name that identifies an object inside a bucket. The object's complete address. |
| Metadata | Data about data — labels describing the content, such as its type, owner, or creation time. |
| IOPS | Input/output operations per second. A measure of how many separate read or write requests storage can handle. |
| Throughput | How much data can move per second, usually in MB/s. Different from IOPS: many small requests versus large volume. |
| Latency | The delay between asking for data and receiving it. Lower is better. |
| Durability | The probability that stored data will not be lost. Often quoted as '11 nines' (99.999999999%). |
| Availability | The probability that stored data can be reached at any given moment. Always lower than durability. |
| Immutable | Cannot be changed in place. To modify it, you replace it entirely. |
| NFS / SMB | Network protocols that let a machine use file storage located on another machine over the network. |
| REST API | A way for programs to talk to a service over HTTP using simple requests such as GET and PUT. |
| CDN | Content Delivery Network. A global set of caches that serve content from a location near the user. |
| Storage class | A pricing and performance tier within object storage, trading retrieval speed for lower cost. |
Block, file, and object storage are three answers to the same question: how should data be organised so it can be found and used again?
None of the three is being replaced by another. Serious systems combine them, matching each workload to the storage model that suits it. Once the three shapes are clear in your mind, the product names offered by AWS, Azure, and Google stop being a confusing list and become simple variations on these three ideas.
Three Sentences to Carry Away:
- Block is a raw disk: fastest, smallest unit, one server, for databases.
- File is a shared folder tree: familiar, collaborative, for teams and legacy applications.
- Object is a labelled pool of whole items: cheapest, endlessly scalable, for media, backups, and data lakes.
A comprehensive cheat sheet and reference guide covering EC2 instances, S3 storage tiers, RDS vs DynamoDB, and High Availability VPC design.