Comparison of Cloud Storage Services
Tags: aws, devops, cloud, design
Published: 2024-04-22 13:36:26

When designing workloads in the cloud, it is rare to have a workload without persistent storage, for storing and retrieving data.  
In this blog post, we will review the most common cloud storage services and the different use cases for choosing specific cloud storage.  
## Object storage
Object storage is perhaps the most commonly used cloud-native storage service.  
It is been used by various use cases from simple storage or archiving of logs or snapshots to more sophisticated use cases such as storage for data lakes or AI/ML workloads.  
Object storage is used by many cloud-native applications from Kubernetes-based workloads using CSI driver (such as [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/s3-csi.html), [Azure AKS](https://learn.microsoft.com/en-us/azure/aks/azure-blob-csi?tabs=NFS), and [Google GKE](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver)), and for Serverless / Function-as-a-Service (such as [AWS Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/olap-use.html), and [Azure Functions](https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli)).  
As a cloud-native service, the access to object storage is done via Rest API, HTTP, or HTTPS.  
Unstructured data is stored inside object storage services as objects, in a flat hierarchy, where most cloud providers call it buckets.  
Data is automatically synched between availability zones in the same region (unless we choose otherwise), and if needed, buckets can be synched between regions (using cross-region replication capability).  
To support different data access patterns, each of the hyperscale cloud providers, offers its customers different storage classes (or storage tiers), from real-time, near real-time, to archive storage, and a capability for configuring rules for moving data between storage classes (also known as lifecycle policies).  
As of 2023, all hyperscale cloud providers enforce data encryption at rest in all newly created buckets.  
### Comparison between Object storage alternatives:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/plu3skqja41r0stzm4ns.png)

As you can read in the comparison table above, most features are available in all hyper-scale cloud providers, but there are still some differences between the cloud providers:  
* **AWS** – Offers a cheap storage tier called [S3 One Zone-IA](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html#sc-infreq-data-access) for scenarios where data access patterns are less frequent, and data availability and resiliency are not highly critical, such as secondary backups. AWS also offers a tier called [S3 Express One Zone](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone.html) for single-digit millisecond data access requirements, with low data availability or resiliency, such as AI/ML training, Amazon Athena analytics, and more.  
* **Azure** – Most storage services in Azure (Blob, files, queues, pages, and tables), require the creation of an [Azure storage account](https://learn.microsoft.com/en-us/azure/storage/common/storage-account-overview) – a unique namespace for Azure storage data objects, accessible over HTTP/HTTPS. Azure also offers a [Premium block blob](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-block-blob-premium) for high-performance workloads, such as AI/ML, IoT, etc.  
* **GCP** – Cloud storage in Google, is not limited to a single region but can be provisioned and synched automatically to [dual-regions](https://cloud.google.com/storage/docs/locations#location-dr) and even [multi-regions](https://cloud.google.com/storage/docs/locations#location-mr).  

## Block storage
Block storage is the disk volume attached to various compute services – from VMs, managed databases, Kubernetes worker notes, and mounted inside containers.  
Block storage can be used as the storage for transactional databases, data warehousing, and workloads with high volumes of read and write.  
Block storage is not just limited to traditional workloads deployed on top of virtual machines, they can be mounted as persistent volumes for container-based workloads (such as [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html)), and for Kubernetes-based workloads using CSI driver (such as [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html), [Azure AKS](https://learn.microsoft.com/en-us/azure/aks/azure-disk-csi), and [Google GKE](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/gce-pd-csi-driver)).  
Block storage volumes are usually limited to a single availability zone within the same region and should be mounted to a VM in the same AZ.  
### Comparison between Block storage alternatives:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hiw69145d937xmjur9zu.png)

As you can read in the comparison table above, most features are available in all hyper-scale cloud providers, but there are still some differences between the cloud providers:  
* **AWS** – Offers a feature called [Amazon Data Lifecycle Manager](https://docs.aws.amazon.com/ebs/latest/userguide/snapshot-lifecycle.html), which automates the process of creation, retention, and deletion of EBS snapshots.  
* **Azure** – Offers the ability to manage data replication of persistent disks within the same region ([Locally redundant storage / LRS](https://learn.microsoft.com/en-us/azure/virtual-machines/disks-redundancy#locally-redundant-storage-for-managed-disks) and [Zone-redundant storage / ZRS](https://learn.microsoft.com/en-us/azure/storage/common/storage-redundancy#zone-redundant-storage)) and between primary and secondary regions ([Geo-redundant storage / GRS](https://learn.microsoft.com/en-us/azure/storage/common/storage-redundancy#geo-redundant-storage), [Geo-zone-redundant storage / GZRS](https://learn.microsoft.com/en-us/azure/storage/common/storage-redundancy#geo-zone-redundant-storage), and [Read-access geo-redundant storage / RA-GRS](https://learn.microsoft.com/en-us/azure/storage/common/storage-redundancy#read-access-to-data-in-the-secondary-region)).  
* **GCP** – Offers the ability to replicate persistent disks across two zones in the same region ([Regional Persistent Disk](https://cloud.google.com/compute/docs/disks#repds)). GCP also offers the ability to pre-purchase capacity, throughput, and IOPS to be provisioned as needed ([Hyperdisk Storage Pools](https://cloud.google.com/compute/docs/disks/storage-pools)).  

## File storage
File storage services are the equivalent of the traditional Storage Area Network (SAN).  
All major hyperscale cloud providers offer managed file storage services, allowing customers to share files between multiple Windows (CIFS/SMB), and Linux (NFS) virtual machines.  

File storage is not just limited to traditional workloads sharing files between multiple virtual machines, they can be mounted as persistent volumes for container-based workloads (such as [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/efs-volumes.html), [Azure Container Apps](https://learn.microsoft.com/en-us/azure/container-apps/storage-mounts-azure-files?tabs=bash), and [Google Cloud Run](https://cloud.google.com/run/docs/configuring/services/nfs-volume-mounts)), Kubernetes-based workloads using CSI driver (such as [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html), [Azure AKS](https://learn.microsoft.com/en-us/azure/aks/azure-files-csi), and [Google GKE](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/filestore-csi-driver), and for Serverless / Function-as-a-Service (such as [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/services-efs.html), and [Azure Functions](https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli)).  
Other than the NFS or CIFS/SMB file storage services, major cloud providers also offer a managed NetApp files system (for customers who wish to have the benefits of NetApp storage) and managed Lustre file system (for HPC workloads or workloads that require extreme high-performance throughput).  

### Comparison between NFS File storage alternatives:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t2nal99i4mwkb9az4kkj.png)

As you can read in the comparison table above, most features are available in all hyper-scale cloud providers, but there are still some differences between the cloud providers:  
* **AWS** – Offers cheap storage tier called [EFS One Zone file system](https://docs.aws.amazon.com/efs/latest/ug/OneZoneAZs.html), for scenarios where data access pattern is less frequent, and data availability and resiliency are not highly critical. By default, data inside the One Zone file system is automatically backed up using AWS Backup.  
* **Azure** – Offers an additional security protection mechanism such as malware scanning and sensitive data threat detection, as part of a service called [Microsoft Defender for Storage](https://learn.microsoft.com/en-us/azure/defender-for-cloud/defender-for-storage-introduction).
* **GCP** – Offers enterprise-grade tier for critical applications such as SAP or GKE workloads, with regional high-availability and data replication called [Enterprise tier](https://cloud.google.com/filestore/docs/service-tiers#enterprise_tier).

### Comparison between CIFS/SMB File storage alternatives:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/190vfe2uqcz0wnn3sgs1.png)

### Comparison between managed NetApp File storage alternatives:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5kis30dkxrwh3j23wnux.png)

### Comparison between File storage for HPC workloads alternatives:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ytr8y9qg899uohuuq28u.png)

## Summary
Persistent storage is required by almost any workload, including cloud-native applications.  
In this blog post, we have reviewed the various managed storage options offered by the hyperscale cloud providers.  
As best practice, it is crucial to understand the application's requirements, when selecting the right storage option.  

### About the Author
Eyal Estrin is a cloud and information security architect, and the author of the books [Cloud Security Handbook](https://amzn.to/3xMI4Ak), and [Security for Cloud Native Applications](https://bit.ly/4cyxaA6), with more than 20 years in the IT industry.  
You can connect with him on [Twitter](https://twitter.com/eyalestrin).  
Opinions are his own and not the views of his employer.  
👇Help to support my authoring👇  
☕[Buy me a coffee](https://medium.com/r/?url=https%3A%2F%2Fbuymeacoffee.com%2Feyalestrin)☕