<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: MaxHuo</title>
    <description>The latest articles on DEV Community by MaxHuo (@maxhuo).</description>
    <link>https://dev.to/maxhuo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3965826%2F763f228b-9c32-4840-aacb-d5821079e919.png</url>
      <title>DEV Community: MaxHuo</title>
      <link>https://dev.to/maxhuo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/maxhuo"/>
    <language>en</language>
    <item>
      <title>Most People Misunderstand Object Storage (Here’s the Mental Model That Actually Helps)</title>
      <dc:creator>MaxHuo</dc:creator>
      <pubDate>Tue, 16 Jun 2026 12:42:00 +0000</pubDate>
      <link>https://dev.to/maxhuo/most-people-misunderstand-object-storage-heres-the-mental-model-that-actually-helps-1gjk</link>
      <guid>https://dev.to/maxhuo/most-people-misunderstand-object-storage-heres-the-mental-model-that-actually-helps-1gjk</guid>
      <description>&lt;p&gt;If you’ve used S3, MinIO, or any cloud storage API, it’s easy to assume object storage is just a “cloud folder system.”&lt;/p&gt;

&lt;p&gt;That assumption is wrong — and it leads to confusion when you start working with distributed systems.&lt;/p&gt;

&lt;p&gt;Object storage is not a file system.&lt;/p&gt;

&lt;p&gt;It’s closer to a &lt;strong&gt;distributed key-value system with strong durability guarantees and a very specific access model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Once you understand that shift, a lot of cloud infrastructure starts to make more sense.&lt;/p&gt;




&lt;h2&gt;
  
  
  The mental model most people start with
&lt;/h2&gt;

&lt;p&gt;When people first see object storage, they imagine something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/photos/cats.png
/photos/dogs.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A hierarchical file system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;folders&lt;/li&gt;
&lt;li&gt;subfolders&lt;/li&gt;
&lt;li&gt;files inside directories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is how traditional systems like ext4 or NTFS work.&lt;/p&gt;

&lt;p&gt;But object storage doesn’t actually work this way.&lt;/p&gt;




&lt;h2&gt;
  
  
  The actual model: key → object
&lt;/h2&gt;

&lt;p&gt;Object storage is much simpler at its core:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;key → value
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;photos/cats.png&lt;/span&gt;
&lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;binary data&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are no real folders.&lt;/p&gt;

&lt;p&gt;“folders” are just &lt;strong&gt;string prefixes&lt;/strong&gt; used for organization.&lt;/p&gt;

&lt;p&gt;That’s it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this design exists
&lt;/h2&gt;

&lt;p&gt;This model isn’t accidental. It solves real distributed system problems.&lt;/p&gt;

&lt;p&gt;Traditional file systems struggle when you try to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;scale across many machines&lt;/li&gt;
&lt;li&gt;replicate data reliably&lt;/li&gt;
&lt;li&gt;handle partial failures&lt;/li&gt;
&lt;li&gt;coordinate metadata changes at scale&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Object storage avoids many of these problems by simplifying the model.&lt;/p&gt;

&lt;p&gt;Instead of supporting complex file operations, it focuses on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;store object&lt;/li&gt;
&lt;li&gt;retrieve object&lt;/li&gt;
&lt;li&gt;delete object&lt;/li&gt;
&lt;li&gt;list objects by prefix&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing more.&lt;/p&gt;




&lt;h2&gt;
  
  
  The most important design choice: immutability
&lt;/h2&gt;

&lt;p&gt;In most object storage systems:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Objects are not modified in place.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you “update” a file, what actually happens is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;upload a new object&lt;/li&gt;
&lt;li&gt;replace the key pointer&lt;/li&gt;
&lt;li&gt;old object becomes orphaned (eventually cleaned up)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is a huge shift from file systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why this matters
&lt;/h3&gt;

&lt;p&gt;Immutability makes distributed systems easier because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no concurrent write conflicts on the same object&lt;/li&gt;
&lt;li&gt;replication becomes simpler&lt;/li&gt;
&lt;li&gt;caching becomes safer&lt;/li&gt;
&lt;li&gt;failure recovery is easier to reason about&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What object storage optimizes for
&lt;/h2&gt;

&lt;p&gt;Object storage is not trying to be fast at small operations.&lt;/p&gt;

&lt;p&gt;It is optimized for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;high durability (data should not be lost)&lt;/li&gt;
&lt;li&gt;horizontal scalability&lt;/li&gt;
&lt;li&gt;large objects (MBs → TBs)&lt;/li&gt;
&lt;li&gt;simple access patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why it works well for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;backups&lt;/li&gt;
&lt;li&gt;media storage&lt;/li&gt;
&lt;li&gt;data lakes&lt;/li&gt;
&lt;li&gt;AI datasets&lt;/li&gt;
&lt;li&gt;logs and archives&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why listing objects feels “expensive”
&lt;/h2&gt;

&lt;p&gt;One confusing thing for newcomers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Why is listing objects slower than expected?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because there is no real directory structure.&lt;/p&gt;

&lt;p&gt;To list:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;photos/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The system actually has to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;scan keys&lt;/li&gt;
&lt;li&gt;match prefixes&lt;/li&gt;
&lt;li&gt;aggregate results across storage nodes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a &lt;strong&gt;distributed query problem&lt;/strong&gt;, not a simple filesystem lookup.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where systems like RustFS fit in
&lt;/h2&gt;

&lt;p&gt;While studying object storage systems, I’ve been looking at designs like RustFS, an open-source distributed object storage system built in Rust.&lt;/p&gt;

&lt;p&gt;It becomes easier to understand such systems once you realize:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;metadata is the hardest part, not storage&lt;/li&gt;
&lt;li&gt;consistency decisions matter more than raw throughput&lt;/li&gt;
&lt;li&gt;failure handling defines system behavior more than normal execution paths&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’ll go deeper into these ideas in the next parts.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key takeaway
&lt;/h2&gt;

&lt;p&gt;If you remember just one thing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Object storage is not a folder system. It is a distributed key-value system optimized for durability and scale, not navigation and mutation.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Next in this series
&lt;/h2&gt;

&lt;p&gt;In Part 2, I’ll break down:&lt;br&gt;
&lt;strong&gt;“Why distributed storage systems need metadata engines (and why they are the hardest part)”&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>rust</category>
      <category>distributedsystems</category>
      <category>s3</category>
    </item>
  </channel>
</rss>
