Design high-performing architectures

SAA-C03 notes, 24% of the exam, updated November 2026

This domain is 24% of the exam. The question gives you a workload (IOPS, latency, throughput, users around the world, streaming data) and four services that technically fit. You pick the one built for that access pattern, and that scales to future needs. Learn the characteristic numbers of each service, because they separate right from almost right.

Storage

Storage types

Type Service Behaviour
Block EBS, instance store A raw disk attached to one instance (EBS Multi-Attach aside). Lowest latency, OS boots from it, databases use it
File EFS, FSx A shared file system many clients mount over NFS or SMB
Object S3 Whole objects through an HTTP API, effectively unlimited, no mounting

EBS volume types

Type Medium Performance Use
gp3 SSD 3,000 IOPS and 125 MB/s baseline, scale IOPS up to 16,000 and throughput to 1,000 MB/s independently of size Default for boot volumes and most workloads
gp2 SSD 3 IOPS per GB, burst to 3,000, max 16,000 Legacy. gp3 is cheaper and better
io2 / io2 Block Express SSD Up to 64,000 IOPS (256,000 on Block Express), sub-millisecond latency, 99.999% durability, Multi-Attach Large I/O-intensive databases (Oracle, SQL Server, SAP HANA)
io1 SSD Up to 64,000 IOPS, Multi-Attach Older provisioned IOPS
st1 HDD Throughput optimized, up to 500 MB/s Big sequential reads: logs, data warehouses, Kafka
sc1 HDD Cold, up to 250 MB/s, cheapest Infrequently accessed sequential data
  • HDD volumes (st1, sc1) can’t be boot volumes. EBS is in one AZ, so snapshots (incremental, stored in S3) move data to another AZ or Region. Fast Snapshot Restore removes first-use latency. Volumes can be resized and retyped while attached. EBS-optimized instances give dedicated bandwidth to storage.
  • Instance store is physically attached NVMe, giving the highest IOPS and lowest latency, but data is lost if the instance stops, fails or terminates. Use it for caches, buffers and scratch data, or for replicated systems that tolerate node loss.
  • Performance needs more than 64,000 IOPS from one instance: stripe several volumes (RAID 0) or use an instance store.

EFS and FSx

Service Protocol / OS Pick when
EFS NFS v4, Linux Shared, elastic file system across many instances and AZs (also Lambda, containers). Grows and shrinks automatically. Elastic throughput by default, or provisioned throughput. Storage classes Standard, Infrequent Access and Archive, with lifecycle management
FSx for Windows File Server SMB, Windows Windows shares with Active Directory, NTFS, DFS. Multi-AZ option
FSx for Lustre POSIX parallel HPC, ML training, media rendering. Hundreds of GB/s, sub-millisecond. Links to S3 buckets as a fast cache. Scratch (temporary, fastest) or persistent
FSx for NetApp ONTAP NFS, SMB, iSCSI Moving NetApp workloads, multi-protocol, snapshots, cloning
FSx for OpenZFS NFS Moving ZFS workloads, very low latency
  • EFS vs EBS: EFS is shared across AZs and instances (a file system); EBS is one disk in one AZ. EFS vs S3: EFS is a mounted POSIX file system; S3 is an object API. EFS One Zone is cheaper with less resilience.

S3 performance

  • S3 supports at least 3,500 write (PUT/COPY/POST/DELETE) and 5,500 read (GET/HEAD) requests per second per prefix, with no limit on the number of prefixes. Spread heavily used keys over several prefixes and parallelise.
  • Multipart upload: recommended above 100 MB and required above 5 GB (max object 5 TB), uploads parts in parallel and retries single parts. Byte-range fetches parallelise downloads.
  • S3 Transfer Acceleration speeds uploads from far-away clients by entering through the nearest edge location and travelling the AWS backbone. Use it when users upload to a distant bucket over the internet.
  • CloudFront speeds repeated downloads. S3 Express One Zone is a single-AZ class with single-digit millisecond latency for the most latency-sensitive workloads.
  • S3 is strongly consistent for reads after writes and listing. SSE-KMS requests count against KMS request quotas on very busy buckets (S3 Bucket Keys reduce this).

Hybrid and scalable storage

  • AWS Storage Gateway connects on-premises to AWS storage with local caching: S3 File Gateway (NFS/SMB files stored as S3 objects), FSx File Gateway (low-latency on-prem access to FSx for Windows), Volume Gateway (iSCSI block volumes: cached keeps the data in S3 with hot data locally, stored keeps everything locally and backs up to S3) and Tape Gateway (virtual tape library replacing physical tapes).
  • DataSync automates and speeds one-off or scheduled transfers between on-premises (NFS, SMB, HDFS), other clouds and S3, EFS, FSx, with verification and bandwidth control. Transfer Family exposes S3/EFS over SFTP/FTPS/FTP. Snow Family devices move data offline (check current availability for new orders). Direct Connect gives a steady high-bandwidth link.
  • To scale for future needs choose services that grow without provisioning: S3 (unlimited), EFS (elastic), DynamoDB on-demand, Aurora storage (auto-grows to 128 TiB), RDS storage autoscaling.

Compute

EC2 instance families

Family Optimised for Examples of use
M, T General purpose. T is burstable (CPU credits) Web servers, small databases, dev and test
C Compute Batch, media encoding, HPC, gaming servers, high-traffic web
R, X, z1d Memory In-memory databases, caches, big-data analytics, SAP HANA
I, D, H Storage (NVMe, dense HDD) NoSQL databases, data warehouses, distributed file systems
P, G, Trn, Inf Accelerated computing (GPU, Trainium, Inferentia) ML training and inference, graphics
Hpc High-performance computing Tightly coupled simulations
  • Suffix hints: g = Graviton (Arm, better price-performance, usually about 20% cheaper), d = local NVMe, n = enhanced networking, a = AMD. Nitro is the hypervisor and hardware platform, and EBS/network performance depends on instance size.
  • Placement groups: cluster (one AZ, lowest latency and highest throughput between instances, for HPC and tightly coupled), spread (each instance on separate hardware, up to 7 per AZ per group, for a few critical instances), partition (groups on separate racks, for Kafka, Cassandra, HDFS). Enhanced networking (ENA) and Elastic Fabric Adapter (EFA) raise network performance for HPC and ML.
  • Hibernation saves RAM to an encrypted EBS root volume, so a long-booting app resumes where it left off. Burstable T instances are cheap for low average CPU but throttle if credits run out (unlimited mode avoids it with extra charge).
  • Right-size: use Compute Optimizer and CloudWatch to pick type and size. Memory and disk metrics need the CloudWatch agent.

Scaling

  • EC2 Auto Scaling keeps the right number of instances across AZs from a launch template. Policy types:
Policy Use
Target tracking Hold a metric at a target (CPU 50%, requests per target). The usual best answer
Step / simple Scale by amounts based on alarm size. Step handles spikes better than simple
Scheduled Known events, such as Monday 9 a.m.
Predictive Forecasts cyclical load from history and launches capacity early
  • Warm pools hold pre-initialised instances for slow-starting applications. Lifecycle hooks run actions at launch and terminate. Mixed instances groups blend On-Demand and Spot across instance types.
  • AWS Auto Scaling (the console plan) covers ECS, DynamoDB, Aurora replicas and Spot Fleets with the same target tracking idea. Application Auto Scaling is the API behind it.
  • Identify scaling metrics from the bottleneck: CPU for compute-bound, ALBRequestCountPerTarget for web tiers, SQS queue depth per instance for queue workers, memory (custom metric) for memory-bound.
  • Decouple so parts scale separately: SQS or Kinesis between web and worker tiers, caching in front of databases, static content on S3 and CloudFront.

Serverless, containers and batch

  • Lambda performance: memory sets CPU (about 1,769 MB equals one vCPU), so raising memory often shortens runtime and can lower cost. Timeout up to 15 minutes. Cold starts matter for latency: use provisioned concurrency or SnapStart (Java, Python, .NET). Reserved concurrency caps and protects. Lambda in a VPC can reach private resources. For long or heavy jobs use Fargate or Batch.
  • Fargate vs EC2 launch type: Fargate for no infrastructure management; EC2 for GPU, special instance types and Spot-heavy cost control. ECS is simplest, EKS for Kubernetes.
  • AWS Batch runs batch jobs (thousands of jobs) on managed EC2, Spot or Fargate compute with queues and priorities. Use it for “run many independent compute jobs and manage the fleet for me”.
  • Elastic Beanstalk: upload code, AWS provisions EC2, load balancer and scaling. EMR: managed Spark, Hadoop and Presto clusters for big data. Outposts put AWS infrastructure on premises for low-latency local processing. Local Zones and Wavelength put compute near cities and 5G networks. VMware Cloud on AWS runs vSphere workloads.

Databases

Choosing a database

Need Pick
Relational, standard engines, joins, transactions RDS (MySQL, MariaDB, PostgreSQL, Oracle, SQL Server, Db2)
Relational with higher throughput, fast failover, up to 15 replicas, MySQL/PostgreSQL compatible Aurora (up to 5x MySQL and 3x PostgreSQL throughput claims). Unpredictable load: Aurora Serverless v2
Key-value / document, single-digit ms, any scale, serverless DynamoDB
Microsecond reads for DynamoDB DAX
In-memory caching, sessions, leaderboards, pub/sub ElastiCache (Redis OSS/Valkey, Memcached)
Durable in-memory primary database, Redis-compatible MemoryDB
MongoDB-compatible documents DocumentDB
Graph relationships (social, fraud, recommendations) Neptune
Cassandra-compatible wide column Keyspaces
Time-series (IoT, metrics) Timestream
Analytics, data warehouse, columnar, SQL over petabytes Redshift
Search, log analytics, full-text OpenSearch Service
Ledger Aurora/DynamoDB with audit design (QLDB is retired)

RDS and Aurora performance

  • Storage and engine: gp3 is the default, io2/Provisioned IOPS for heavy I/O. Instance size and memory-optimised classes for large working sets. Storage autoscaling grows storage automatically.
  • Read replicas offload reads (reports, dashboards) but are asynchronous (replica lag). The application must point reads at the replica endpoint. Aurora offers a reader endpoint that load-balances across replicas and custom endpoints. For writes, scale up the instance, shard, or move to Aurora/DynamoDB.
  • RDS Proxy pools and shares connections, which helps Lambda and spiky apps that exhaust connection limits, and speeds failover. Aurora Serverless v2 scales capacity in fine ACU steps for variable load, and can scale to zero.
  • Aurora Global Database puts low-latency local reads in other Regions. Aurora Limitless shards writes. Aurora I/O-Optimized removes per-I/O charges for I/O-heavy workloads.
  • Multi-AZ is availability, not performance.

DynamoDB capacity and access patterns

  • Capacity modes: on-demand (pay per request, unpredictable traffic, no planning) or provisioned (set read/write capacity units with auto scaling, cheaper for steady load).
  • 1 RCU = one strongly consistent read per second for items up to 4 KB (an eventually consistent read costs half). 1 WCU = one write per second up to 1 KB. Item max 400 KB. Transactions use double.
  • Choose a partition key with high cardinality to avoid hot partitions. Add global secondary indexes for other query patterns (local secondary indexes share the partition key and must be created with the table).
  • DAX is a write-through in-memory cache for DynamoDB with microsecond reads and no application rewrite beyond the client. DynamoDB Streams capture changes for Lambda. TTL deletes expired items for free.
  • Use DynamoDB when access is by key and scale is unpredictable. Use a relational database when you need joins, ad hoc SQL and strong relational integrity.

Caching

ElastiCache for Redis OSS / Valkey ElastiCache for Memcached
Data types Rich (lists, sets, sorted sets, hashes) Simple strings
Persistence, replication, Multi-AZ failover Yes No
Multi-threaded No (per shard) Yes
Use Sessions, leaderboards, pub/sub, durable-ish caching Simple, horizontally scaled object cache
  • Cache patterns: lazy loading (read-through on miss) and write-through. Cache read-heavy, rarely changing data to cut database load and latency. ElastiCache Serverless scales automatically. Redis supports AUTH, encryption in transit and at rest.

Engines and migration

  • Homogeneous migration (Oracle to Oracle, MySQL to Aurora MySQL) uses AWS DMS alone, with CDC for ongoing replication and minimal downtime. Heterogeneous migration (Oracle to PostgreSQL) uses the Schema Conversion Tool / DMS Schema Conversion first to convert the schema, then DMS to move data. MySQL vs PostgreSQL: both open source; PostgreSQL has richer types and extensions, MySQL is simple and widely used, and Aurora supports both.
  • Capacity planning: estimate peak reads and writes, item or row size, connections and working set. Then choose instance class, Provisioned IOPS, capacity units or ACUs.

Networking and content delivery

Edge services

CloudFront Global Accelerator
Does CDN. Caches static and dynamic content at 400+ edge locations Routes TCP/UDP over the AWS backbone to the closest healthy endpoint
Protocols HTTP/HTTPS, WebSocket Any TCP or UDP (games, VoIP, MQTT, non-HTTP)
IPs Changing Two static anycast IPs
Failover Origin groups Health-based, in seconds, no DNS TTL
Pick Reduce latency and origin load for web content, video, downloads Static IPs, non-HTTP traffic, fast Regional failover, improving consistency for dynamic traffic
  • CloudFront: OAC to keep S3 private, TTLs and cache policies, invalidations, signed URLs/cookies, geo restriction, WAF, price classes, Lambda@Edge and CloudFront Functions for lightweight edge logic (header rewriting, redirects, auth), and HTTPS to viewers and origins. A CloudFront origin can be S3, an ALB, API Gateway or any HTTP server.
  • Route 53 latency routing sends users to the closest Region. Elastic Load Balancing spreads traffic inside a Region.

Load balancer choice

Use ALB for HTTP microservices and path-based routing, NLB for TCP/UDP, static IPs, extreme throughput and PrivateLink, and GWLB to insert firewalls and inspection appliances. Classic Load Balancer is retired.

Designing the VPC and connecting networks

  • Plan IP addressing: choose non-overlapping CIDRs from the start (overlap blocks peering, VPN and Transit Gateway), leave room for growth, and use enough subnets per tier per AZ. Use IPv6 or an egress-only gateway where IPv4 is scarce.
  • Subnet tiers: public (load balancers, NAT), private (app), isolated/data (databases). Place resources near users and each other: same AZ for chatty low-latency pairs (with a cluster placement group), multiple AZs for resilience.
  • Connection options:
Option Use
VPC peering One-to-one VPC link, private, no transitive routing, no overlapping CIDR, no bandwidth bottleneck. Works cross-Region and cross-account
Transit Gateway Regional hub connecting thousands of VPCs, VPNs and Direct Connect with transitive routing and route tables. Peers with other Regions’ TGWs
PrivateLink Expose one service, one-way, to many VPCs
Site-to-Site VPN Encrypted over internet, quick, about 1.25 Gbps per tunnel. Multiple VPNs over a TGW with ECMP add bandwidth
Direct Connect Dedicated private link, 1/10/100 Gbps dedicated, partner-hosted from 50 Mbps. Predictable latency. Use a Direct Connect gateway to reach VPCs in many Regions, and private, public or transit virtual interfaces
Client VPN Remote users into a VPC
  • Hybrid DNS uses Route 53 Resolver inbound and outbound endpoints. Global designs combine CloudFront, Route 53 latency or geolocation routing, and per-Region stacks. VPC Reachability Analyzer debugs paths.

Data ingestion, transformation and analytics

Streaming and ingestion

Service Role
Kinesis Data Streams Real-time stream. Shard = 1 MB/s or 1,000 records/s in, 2 MB/s out. Retention 24 hours to 365 days, replay, multiple consumers (enhanced fan-out gives each consumer 2 MB/s per shard). On-demand mode scales automatically. Ordered per partition key
Amazon Data Firehose Fully managed delivery to S3, Redshift, OpenSearch, Splunk and HTTP endpoints, with buffering, optional Lambda transform and format conversion. Near real time. No replay
Managed Service for Apache Flink Real-time analytics and SQL-style processing on streams (was Kinesis Data Analytics)
Kinesis Video Streams Video from devices for analytics
Amazon MSK Managed Apache Kafka for existing Kafka apps
SQS Simple buffering when you need no replay or multiple readers
  • Pick Data Streams when you build custom consumers, need ordering, replay or sub-second processing; Firehose to just land the data in S3 or Redshift with no code. Match shard count or capacity mode to ingest rate, and use a high-cardinality partition key.
  • Data ingestion patterns depend on frequency: continuous streaming (Kinesis, MSK), micro-batches (Firehose buffer), scheduled batches (Glue, DataSync, AppFlow), and one-off bulk (Snow Family, DataSync). Secure ingestion points with IAM, VPC endpoints, KMS and TLS.

Transfer sizing

Rule of thumb: a fully used 1 Gbps link moves roughly 10 TB a day. Tens of TB with no spare bandwidth, or a poor link, favours offline devices; steady recurring transfers favour DataSync over Direct Connect or VPN. Combine S3 multipart and Transfer Acceleration for single large objects over the internet.

Transformation and analytics

Service Job
AWS Glue Serverless ETL (Spark), crawlers that infer schemas, the Data Catalog, job bookmarks, DataBrew for visual prep. Convert CSV to Parquet/ORC (columnar, compressed) to cut scan cost and time
Amazon Athena Serverless SQL directly on S3 using the Glue catalog. Pay per data scanned, so use Parquet, compression and partitioning
Amazon EMR Managed Spark/Hadoop/Hive/Presto clusters for heavy big-data processing, with Spot task nodes
Amazon Redshift Columnar data warehouse for complex analytic SQL. Spectrum queries S3. Serverless option. RA3 nodes separate compute from storage
Lake Formation Build and secure data lakes on S3, with central fine-grained (column, row) permissions and cataloguing
OpenSearch Service Log analytics, search, dashboards
QuickSight Serverless BI dashboards, SPICE in-memory engine, ML insights, embedded analytics
Data Exchange Find and subscribe to third-party datasets

A standard lake: ingest (Firehose, DMS, DataSync) → S3 (raw, curated) → Glue (catalog and ETL) → Athena, Redshift or EMR (query) → QuickSight (visualise), governed by Lake Formation.

Exam checklist

  • Block for databases and boot (gp3 default, io2 for the highest IOPS), file for shared access (EFS Linux, FSx Windows, FSx Lustre for HPC), object for everything else (S3).
  • Highest IOPS and lowest latency, data can be lost: instance store. Big sequential throughput: st1.
  • Upload from far away: Transfer Acceleration and multipart. Many requests: spread across prefixes.
  • Cluster placement group for low latency, spread for isolation, partition for big distributed stores.
  • Scale the right metric: target tracking by default, scheduled for known peaks, predictive for cyclical, queue depth for workers.
  • Lambda slow: raise memory. Cold starts: provisioned concurrency or SnapStart. Hit 15 minutes: Fargate or Batch.
  • Read-heavy relational: read replicas and caching. Too many connections: RDS Proxy. Microsecond DynamoDB reads: DAX. Unpredictable relational load: Aurora Serverless v2. Unpredictable key-value load: DynamoDB on-demand.
  • Heterogeneous migration: SCT plus DMS. Homogeneous: DMS.
  • Global static content: CloudFront. Static IPs or non-HTTP or instant failover: Global Accelerator.
  • Many VPCs and on-premises: Transit Gateway. One-way service sharing: PrivateLink. Consistent private performance: Direct Connect, with VPN as quick or backup path.
  • Custom real-time consumers, replay: Kinesis Data Streams. Load into S3/Redshift with no code: Firehose. SQL on S3: Athena. CSV to Parquet: Glue. Secure the lake: Lake Formation. Dashboards: QuickSight.

Test what you just read. 63 practice questions on design high-performing architectures.

Practise this domain

All SAA-C03 notes