Home / Articles / Cloud & Infrastruktur
Cloud & Infrastruktur

Cheap Cloud Storage Isn't Always Economical: How to Choose the Right Storage Class

The price per gigabyte is just one part of the cloud cost. Before moving files to a cheaper storage class, understand access frequency, data retrieval costs, retention periods, and recovery needs.

Storage Cloud Murah Tidak Selalu Hemat: Cara Memilih Kelas Penyimpanan dengan Benar

Choosing cloud storage often starts with the easiest number to compare: the price per gigabyte per month. The problem is, the real costs don't only arise when data is stored. When files are frequently read, moved, retrieved from archives, or stored too long due to incorrect retention rules, bills can rise unexpectedly.

Therefore, cloud storage should be treated like a warehouse with several zones. Items used daily are placed near the door. Items that are rarely touched can be moved to a cheaper area, but access may not always be as fast or inexpensive as the main area.

Storage class is not just a price choice

Cloud providers typically offer several storage classes, which are categories of storage with different pricing and access characteristics. Standard class is suitable for frequently read data, while cold or archive classes are intended for rarely accessed data.

Google Cloud, for example, distinguishes between Standard, Nearline, Coldline, and Archive. Nearline has a minimum storage duration of 30 days, Coldline 90 days, and Archive 365 days. Colder classes usually lower storage costs but may add data retrieval fees or minimum retention rules. ([docs.cloud.google.com](https://docs.cloud.google.com/storage/docs/storage-classes?utm_source=openai))

Azure uses the terms Hot, Cool, Cold, and Archive. Its documentation explains that Cool and Cold have minimum storage durations of 30 and 90 days, respectively, while Archive is intended for rarely accessed data and may require recovery times of up to hours. ([learn.microsoft.com](https://learn.microsoft.com/en-us/azure/storage/blobs/access-tiers-overview?utm_source=openai))

In Amazon S3, data can be moved through Lifecycle rules to classes such as Standard-IA, Intelligent-Tiering, Glacier Flexible Retrieval, or Glacier Deep Archive. This movement can be configured based on object age, tags, or version status. ([docs.aws.amazon.com](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html?utm_source=openai))

Four often-overlooked costs

1. Storage costs

This is the easiest cost to see: how much data is stored and how long it remains in a class. For large data that rarely changes, cold classes can indeed save on monthly costs.

However, those savings only make sense if the access patterns align. Moving active databases, frequently processed files, or website assets to archive classes just because the storage rate is low can create performance issues and additional costs.

2. Data retrieval and transfer costs

Some storage classes charge when data is read back. If a team stores logs in an archive class but generates reports from those logs daily, the data retrieval costs could wipe out the expected savings.

The same applies to outbound transfer or egress, which is the cost incurred when data is sent from the cloud to the internet, another data center, or different services. The cost depends on the provider, region, volume, and type of operation. Therefore, don't just calculate storage capacity; also consider how often data will be read and where it will be sent.

3. Operational costs

Object storage typically counts operations such as uploads, downloads, listings, copies, and class transitions. A large number of small files can generate many operations even if the total capacity is not large.

Amazon S3, for example, by default does not move objects smaller than 128 KB through Lifecycle rules because the transition request costs can exceed the storage savings. ([docs.aws.amazon.com](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html?utm_source=openai))

4. Design error costs

The most expensive costs are sometimes not the numbers on the invoice, but rather data that is difficult to recover when needed. For example, transaction records stored in a class that requires rehydration time, while the finance team needs them within minutes.

This does not mean archive classes are bad. They are suitable for data that is indeed rarely accessed, such as old records, historical export results, or documents that must be retained for compliance purposes. Importantly, recovery expectations should be clear from the start.

How to determine the storage class

Start with data behavior, not product names. Ask the following four questions:

  1. How often is the data read? Active and frequently accessed data should be in standard class or an automatic class that can adjust to access patterns.
  2. How quickly does the data need to be available? If an application requires immediate response, avoid classes with long recovery processes.
  3. How long will the data be stored? Match retention periods with minimum storage rules. Data that may be deleted in a few days is not suitable for classes with multi-month retention commitments.
  4. Does the data change or only grow? Files that are frequently overwritten can generate old versions, operational costs, and different cleaning rule needs compared to archive files that are only written once.

Lifecycle: let the rules work

Lifecycle is an automated rule for moving or deleting objects based on age, name prefix, tags, or version. A simple example for application logs might look like this:

Day 0-30   : Standard
Day 31-90  : Nearline or rarely accessed class
Day 91+    : Archive or delete according to policy

These numbers are not a universal recipe. Use actual usage data to determine the limits. If logs are still frequently used for investigations for 60 days, moving them on day 30 may be too aggressive.

Lifecycle rules should also cover old versions, failed multipart files, and temporary objects. In buckets that enable versioning, deleting the latest file does not necessarily remove all previous versions. Without a cleaning policy, capacity can continue to grow even if the folder appears tidy.

Google Cloud provides Object Lifecycle Management to manage class transitions, object lifetimes, and inactive versions. Its documentation also reminds that the system does not validate whether user-defined class transitions meet access needs. ([docs.cloud.google.com](https://docs.cloud.google.com/storage/docs/lifecycle?utm_source=openai))

What does this mean for us?

Cheap cloud storage does not mean all data should be moved to the coldest class. A good choice is one that fits access patterns and recovery targets.

For small applications, a practical approach is to separate buckets or object prefixes by function: active/ for frequently used data, logs/ for temporary logs, and archive/ for historical data. With this separation, lifecycle rules are easier to read, and the risk of misapplying policies is reduced.

What you can do now

  • Gather storage usage and transfer data for the last 30 days.
  • Group files by access frequency, not just by size.
  • Note recovery time requirements for each type of data.
  • Create lifecycle rules in a test environment before applying them to production data.
  • Set cost alarms and review reports after the rules are in effect.
  • Test the retrieval of some archived data to ensure the process works as intended.

In conclusion, optimizing storage is not a race to find the lowest per-gigabyte rate. The goal is to place each piece of data in the right spot: fast enough when needed, cheap enough when it just needs to be stored, and still recoverable when things don't go as planned.

Sources & further reading

– Rio Yotto @rioyotto