Design High-Performing Architectures
Match the primitive to the access pattern
Performance starts with choosing the right primitive for the workload's access pattern — not with tuning. Each category has a natural fit: compute (general purpose vs compute-, memory-, or accelerated-optimized), storage (object vs file vs block, hot vs cold), database (relational, key-value, in-memory, graph, or warehouse), and network (throughput-sensitive vs latency-sensitive). Pick the wrong primitive and you waste money and milliseconds that no amount of later tuning will win back.
Offload the read path with caching and replicas
Most performance wins come from not hitting the origin at all. CloudFront caches content at the edge for users around the world, ElastiCache and DynamoDB DAX soak up hot-key reads, and read replicas let read-heavy relational workloads scale out horizontally. When the problem is distance rather than load, S3 Transfer Acceleration speeds up long-haul uploads and Global Accelerator improves TCP and UDP paths.
Scale out and asynchronously, not up
Rather than buying a bigger instance, add stateless capacity behind a load balancer and let Auto Scaling grow it. And when the requirement reads like 'handle unpredictable load with no servers to manage', reach for serverless — Lambda, Fargate, S3, DynamoDB on-demand. Pushing the expensive work into asynchronous pipelines is what keeps the synchronous request path fast.
Storage primitive by access pattern
| Primitive | AWS service | Access model | Best for | Watch-out |
|---|---|---|---|---|
| Object | S3 | Key-based over HTTPS API | Static assets, data lakes, backups, large unstructured objects | Not a filesystem — no partial in-place edits |
| File | EFS (NFS) / FSx | Shared mounted filesystem (POSIX or Windows) | Many instances sharing the same files, lift-and-shift apps | Higher per-IO latency and cost than block |
| Block | EBS / instance store | Single-instance block device | Boot volumes, databases, low-latency random I/O | EBS is AZ-scoped (snapshot to move); instance store is ephemeral |
| In-memory | ElastiCache / DAX | Network key-value cache | Microsecond reads, hot keys, session state | Volatile — back it with a durable store |