Storage Antipatterns
(Compiled from AWS, Azure, Google and and other community sources)
The following are antipatterns to avoid:
- You only use one storage type, such as Amazon Elastic Block Store (Amazon EBS), for all workloads.
- You assume that all workloads have similar storage access performance requirements.
- You only use one storage type, such as Amazon EBS, for all workloads.
- You use Provisioned IOPS for all workloads without real-world testing against all storage tiers.
- You assume that all workloads have similar storage access performance requirements.
- You assume that storage performance is adequate if customers are not complaining.
- You only use one tier of storage, assuming all workloads fit within that tier.
Object-storage Antipatterns
Avoid:
- Storing everything in a single bucket: Storing all objects in a single bucket can lead to performance issues, as well as security and compliance issues.
- Using non-unique object names: Using non-unique object names can lead to overwrites, making it difficult to retrieve and manage specific objects.
- Not defining a clear object lifecycle: Not defining a clear object lifecycle, including object retention and deletion policies, can lead to compliance issues and increased costs.
- Ignoring security best practices: Ignoring security best practices, such as implementing access control, encryption, and logging, can lead to security vulnerabilities and data breaches.
- Using only one cloud provider: Using only one cloud provider for object storage can lead to vendor lock-in and can limit your ability to take advantage of other cloud provider's offerings.
- Not considering data transfer costs: Not considering data transfer costs when using object storage across multiple regions or cloud providers can lead to unexpected expenses.
- Not optimizing object storage performance: Not optimizing object storage performance, such as through object partitioning or optimizing retrieval time, can lead to increased latency and reduced application performance.
- Over-reliance on object versioning: Over-reliance on object versioning can lead to increased storage costs and reduced performance, as well as compliance and regulatory issues.
- Not regularly monitoring and optimizing costs: Not regularly monitoring and optimizing costs, such as through deleting unused objects or reducing storage classes, can lead to unnecessary expenses.
- Ignoring interoperability and portability: Ignoring interoperability and portability between cloud providers can limit your ability to move data between providers or to leverage different cloud services.
Block-storage Antipatterns
Avoid:
- Oversizing volumes: Oversizing block storage volumes can lead to increased costs and wasted storage space, as well as reduced application performance.
- Using a single disk for all data storage: Storing all data on a single disk can lead to data loss if that disk fails, as well as reduced performance for applications that require high IOPS or low latency.
- Using block storage for all data storage: Using block storage for all data storage needs, regardless of the data's access patterns or performance requirements, can lead to increased costs and reduced application performance.
- Ignoring block storage performance characteristics: Ignoring block storage performance characteristics, such as IOPS and latency, can lead to reduced application performance and user experience.
- Not backing up block storage data: Not backing up block storage data can lead to data loss in the event of a disaster or other unexpected event.
- Over-reliance on block storage replication: Over-reliance on block storage replication, without also implementing backup and recovery procedures, can lead to data loss in the event of a disaster or other unexpected event.
- Failing to implement encryption: Failing to implement encryption for block storage volumes can lead to security vulnerabilities and data breaches.
- Not considering the impact of block size: Not considering the impact of block size, such as by using large blocks for small files, can lead to increased storage costs and reduced performance.
- Not considering the impact of block storage type: Not considering the impact of block storage type, such as by using standard block storage for high-performance applications, can lead to reduced application performance and user experience.
- Not regularly monitoring and optimizing costs: Not regularly monitoring and optimizing costs, such as by deleting unused volumes or using lower-cost storage classes, can lead to unnecessary expenses.
- Using block storage for non-persistent data: Using block storage for non-persistent data, such as temporary files or logs, can lead to increased costs and reduced performance.
- Failing to implement access controls: Failing to implement access controls, such as by using open access policies or not regularly reviewing permissions, can lead to security vulnerabilities and data breaches.
- Not considering the impact of network latency: Not considering the impact of network latency, such as by using block storage located far from application servers, can lead to reduced performance and user experience.
- Failing to plan for disaster recovery: Failing to plan for disaster recovery, such as by not replicating data across multiple regions or cloud providers, can lead to data loss and downtime in the event of a disaster.
- Not regularly testing backup and recovery procedures: Not regularly testing backup and recovery procedures can lead to data loss or extended downtime in the event of a disaster or other unexpected event.
- Not considering the impact of volume type: Not considering the impact of volume type, such as by using standard volumes for high-performance applications, can lead to reduced application performance and user experience.
- Over-provisioning block storage resources: Over-provisioning block storage resources, such as by allocating more storage than is currently needed, can lead to increased costs and wasted resources.
Archive-storage Antipatterns
Avoid:
- Storing frequently accessed data in archive storage: Storing frequently accessed data in archive storage can lead to increased retrieval costs and reduced performance.
- Using archive storage for all data storage: Using archive storage for all data storage needs, regardless of the data's access patterns or performance requirements, can lead to increased costs and reduced application performance.
- Failing to implement retention policies: Failing to implement retention policies, such as by not specifying how long data should be retained in archive storage, can lead to compliance violations and unnecessary costs.
- Failing to implement encryption: Failing to implement encryption for archive storage can lead to security vulnerabilities and data breaches.
- Not considering the impact of access latency: Not considering the impact of access latency, such as by using archive storage located far from application servers, can lead to reduced performance and user experience.
- Over-reliance on archive storage replication: Over-reliance on archive storage replication, without also implementing backup and recovery procedures, can lead to data loss in the event of a disaster or other unexpected event.
- Using archive storage for non-archive data: Using archive storage for non-archive data, such as frequently updated files or transactional data, can lead to increased costs and reduced performance.
- Failing to regularly review and delete expired data: Failing to regularly review and delete expired data, such as by using retention policies, can lead to unnecessary storage costs and potential compliance violations.
- Not regularly testing backup and recovery procedures: Not regularly testing backup and recovery procedures can lead to data loss or extended downtime in the event of a disaster or other unexpected event.
- Failing to plan for disaster recovery: Failing to plan for disaster recovery, such as by not replicating data across multiple regions or cloud providers, can lead to data loss and downtime in the event of a disaster.