Design High-Performing Architectures
What you will learn
In this domain, you learn how to choose high-performing options that fit the workload for storage (Amazon S3, Amazon EBS, Amazon EFS, and Amazon FSx), compute (Amazon EC2, AWS Lambda, and containers), databases and caching (Amazon Aurora, Amazon DynamoDB, Amazon ElastiCache, and DAX), networking (Amazon CloudFront, AWS Global Accelerator, and Elastic Load Balancing), and data ingestion and analytics (Amazon Kinesis, Amazon Athena, and Amazon Redshift).
Key points
- Storage - S3 for objects, EBS for block storage on one instance, EFS for shared files, and FSx for Lustre for fast reads in computing
- EBS - gp3 lets you set IOPS and throughput separately from capacity, and io2 is used when high IOPS and durability are needed
- Caching - ElastiCache in front of RDS or Aurora, and DAX in front of DynamoDB
- Read distribution - Send reads to Aurora Replicas and read replicas to reduce the load on the writer instance
- Faster delivery - CloudFront for web content, and Global Accelerator for TCP and UDP traffic and fixed IP addresses
- Streaming and analytics - Kinesis Data Streams for real-time ingestion, Athena for SQL on S3, and Redshift for large-scale aggregation
Terms and concepts
Choosing storage
S3 is object storage that you can use without worrying about capacity limits, EBS is block storage attached to instances within one AZ, and EFS is a shared file system used at the same time by many instances in multiple AZs. To read S3 data quickly in compute-intensive workloads, choose FSx for Lustre.
→ Amazon EFS Glossary / → Amazon FSx Glossary / → EBS block storage design
Caching (ElastiCache and DAX)
ElastiCache is an in-memory data store that you place in front of a database to return the results of repeated queries and reduce the database load. Cache reads and writes are written in the application. DAX is a cache dedicated to DynamoDB, and because it has a DynamoDB-compatible API, it requires few application changes.
→ Amazon ElastiCache Glossary / → DAX Glossary / → ElastiCache caching patterns
CloudFront and Global Accelerator
CloudFront caches web content at edge locations around the world and returns it from locations close to users. Global Accelerator does not cache content; it delivers TCP and UDP traffic received at static anycast IP addresses over the AWS network to the nearest healthy endpoint.
→ Amazon CloudFront Glossary / → AWS Global Accelerator Glossary / → Network optimization with Global Accelerator
Types of load balancers
An Application Load Balancer routes based on the content of HTTP and HTTPS requests. A Network Load Balancer operates at the TCP and UDP layer, handles large numbers of connections with very low latency, and can have a fixed IP address for each AZ. A Gateway Load Balancer is used to pass traffic through virtual appliances such as firewalls.
→ Elastic Load Balancing Glossary / → The design rationale of the three ELB types
Lambda performance
In Lambda, CPU power increases in proportion to the amount of memory allocated. To avoid the time needed to prepare an execution environment on the first invocation (a cold start), prepare execution environments in advance with provisioned concurrency.
→ AWS Lambda Glossary / → Countermeasures for Lambda cold starts
Data ingestion and analytics
Kinesis Data Streams receives large volumes of data in order, and multiple applications can read the same data. Athena runs SQL on data as it sits in S3, and you pay only for the amount of data scanned. Redshift is a columnar data warehouse suited to large-scale, complex aggregation.
→ Amazon Kinesis Glossary / → Amazon Athena Glossary / → Amazon Redshift Glossary