Performance
Storage Performance Principles tips
Efficient Resource Utilization
- Serverless storage services that are built to scale on demand, such as Amazon S3
- Auto-scaling of storage resources
- Utilize virtualization to maximize utilization of resources
- Utilize resource pooling to minimize workloads
- Automate processes and create alerts for resource utilization
- Utilize a streamlined storage architecture.
- Consolidate hardware to reduce maintenance and power costs
- Resource usage monitoring system
Efficient Logic, queries
- Proper indexing of data to improve query performance
- Database indexes to optimize query performance
- Stored procedures to improve query performance
- Multi-threading or parallel processing to improve query performance
- Utilize query optimization techniques such as query rewrite and query optimization tools
- Query optimization techniques like query rewriting, query optimization and query caching
- Database query tuning tools like EXPLAIN PLAN or SQL Profiler to identify inefficient logic
- Serverless compute services like AWS Lambda or Azure Functions to implement custom logic
Efficient Storage, read/write
- Solid-state drive (SSD) technology to improve storage performance
- Utilize RAID technology to improve storage performance
- Caching techniques such as read and write ahead to reduce I/O operations
- Compression techniques to reduce storage space
- Services that are optimized for read/write performance such as Amazon S3 or Azure Blob Storage
- Storage services that use compression and deduplication techniques to reduce storage costs
- Built-in replication for redundancy and fault tolerance
- Amazon ElastiCache or Azure Redis Cache to reduce read/write latency
Concurrency (Hardware/Software)
- Distributed storage to improve concurrency
- Multi-threaded storage transfers to improve concurrency
- Message queues, semaphores, and locks to improve concurrency
- Storage load balancing technologies to improve concurrency
- Task scheduling system
- Intelligent thread pooling system
- Intelligent task synchronization system
- Distributed computing frameworks such as Hadoop or Spark to process large datasets in parallel
- Serverless compute services such as AWS Lambda or Azure Functions to run tasks in parallel
- Messaging services such as Amazon SQS or Azure Service Bus to queue requests for asynchronous processing
Caching (Hardware/Software)
- Object storage services such as Amazon S3 or Azure Blob Storage to enable caching of objects
- Hardware-based caching like write-back caching
- Software-based caching like memcached or Redis
- Application-level caching techniques such as object caching
- Content delivery networks (CDNs) to improve caching performance
- Intelligent caching system
- Eviction policy to ensure data is being cached in the most efficient manner
- Ensure queries are being cached
- Cache audit system
Capacity
- Object storage services such as Amazon S3 or Azure Blob Storage to store unstructured data
- Use cloud storage to increase capacity
- Utilize disk striping or disk mirroring to increase capacity
- Use disk replication or disk pooling to increase capacity
- Distributed file systems such as HDFS or GlusterFS to store and manage large amounts of data
- Disk striping with parity to increase capacity and improve data availability
- Utilize an intelligent capacity planning system to ensure resources are being provisioned efficiently
- Intelligent storage monitoring system to ensure data is being stored in the most efficient manner
- Capacity audit system
- Intelligent capacity forecasting system
- Use a capacity optimization system
Performance Tips - AWS
Instance-related Tips
- Use Amazon EBS-optimized instances.
- Enable EC2 instance I/O credits.
- Use multiple small I/O operations instead of fewer large I/O operations.
- Striped EBS volumes for increased IOPS.
- Consider using provisioned IOPS SSDs.
S3 latency/speed tips
- Use Amazon S3 Transfer Acceleration for uploads.
- Use Amazon S3 multipart uploads for large objects.
- Use Amazon CloudFront for content delivery.
- Use S3 Transfer Acceleration with Amazon CloudFront.
- Use AWS Snowball for large data transfers.
- Use AWS Snowball Edge for local data processing and transfer.
- Use AWS Direct Connect to reduce network latency and improve data transfer speeds.
- Use Amazon S3 Transfer Manager for automated, large-scale data transfers.
S3 cost optimization tips
- Use Amazon S3 Intelligent-Tiering for data with unknown or changing access patterns..
- Use Amazon S3 object tagging for better organization and cost optimization.
- Enable Amazon S3 Transfer Acceleration for faster uploads.
- Consider using Amazon S3 One Zone for infrequently accessed data.
- Consider using Amazon S3 Lifecycle policies to transition data to other storage classes.
Organization and security tips
- Use Amazon S3 Inventory to track changes in your objects.
- Use Amazon S3 Select to retrieve only the data you need.
- Use Amazon S3 Lifecycle to automatically move objects to the appropriate storage class.
- Use Amazon S3 Select and S3 Glacier Select for efficient data retrieval.
- Use Amazon S3 presigned URLs for secure data access.
- Use AWS Key Management Service (KMS) for encryption of S3 data.
- Consider using Amazon S3 storage class analysis to optimize storage costs.
- Use Amazon S3 batch operations to process large numbers of objects.