Question

Difficulty: HardImproving Database and Caching Efficiency

A financial services company hosts an investment tracking application on AWS. The application's transaction ledger is stored on an Amazon Aurora MySQL database cluster with one writer and two reader instances. During end-of-month reporting cycles, read queries on the ledger spike significantly, causing CPU utilization on the reader instances to reach 100%, resulting in query timeouts. Additionally, the application requires a caching layer to store session state tokens and transient calculations. The cached data must be replicated across multiple Availability Zones to ensure high availability, and must survive potential cache node failures. Which combination of database and caching optimization strategies should the solutions architect implement to address the performance degradation and satisfy the durability and scaling requirements? (Select TWO.)

  1. Deploy Amazon RDS Proxy for the Aurora cluster, and configure the application to direct read-intensive ledger queries to the proxy's read-only endpoint.Answer
  2. Implement Amazon ElastiCache for Redis to store session state tokens, configuring Multi-AZ with automatic failover.Answer
  3. C
    Deploy Amazon ElastiCache for Memcached to store session state tokens, enabling Multi-AZ replication to ensure the cached tokens survive node failures.
  4. D
    Migrate the ledger database to an Amazon RDS for MySQL database in a Multi-AZ deployment, and route read queries to the standby replica to scale read capacity.
  5. E
    Configure the application to connect to the Aurora cluster endpoint for read operations, and configure Aurora Auto Scaling to dynamically add reader replicas.

Answer

Deploy Amazon RDS Proxy for the Aurora cluster, configuring the application to direct read queries to the proxy's read-only endpoint, and implement Amazon ElastiCache for Redis with Multi-AZ and automatic failover for session caching.
Deploying Amazon RDS Proxy with the read-only endpoint allows the application to handle connection spikes gracefully while routing read-intensive queries to the reader replicas. Amazon ElastiCache for Redis with Multi-AZ enabled provides the replication and automatic failover needed to ensure that cached session tokens survive node failures.

Step-by-Step Solution

1
Analyze the database read performance issue.
The reader instances are hitting 100% CPU utilization due to a spike in read queries during reporting cycles, indicating a need for better connection pooling and traffic distribution.
Identifying the bottleneck ensures that the routing solution specifically targets read workloads without affecting the primary writer instance.
2
Evaluate the database routing and connection pooling options.
Deploying Amazon RDS Proxy and using its read-only endpoint pool will manage connection surges and distribute reads to Aurora Replicas.
RDS Proxy reduces database overhead from connection churn and handles read scaling transparently.
3
Analyze the caching durability and high availability requirements.
Session state and calculations must survive node failures and replicate across Availability Zones.
This requirement determines the choice of caching engine and configuration parameters.
4
Select the appropriate caching engine.
Amazon ElastiCache for Redis is selected because it supports Multi-AZ replication and failover, whereas Memcached lacks replication capabilities.
Redis satisfies the high availability and persistence requirements, while Memcached would lose data upon node failure.

Key Concept

Optimizing read scaling in Aurora using RDS Proxy, and ensuring high-availability caching with ElastiCache for Redis.
Estimated Time:3m 0s
Rate this question