SAP-C02 - Design for New Solutions (29% of the exam) - Section 2.4

Design a reliability strategy using Multi-AZ and multi-Region patterns, EC2 Auto Scaling and loosely coupled integration with Amazon SQS, Amazon SNS and AWS Step Functions.

Design reliable, loosely coupled architectures using Multi-AZ deployments, EC2 Auto Scaling groups, Amazon SQS queues, and Amazon SNS topics to absorb failures and traffic spikes without cascading. Recognise where AWS Step Functions orchestrates long-running workflows and when a queue versus a direct invocation improves fault tolerance.

Multi-AZEC2 Auto ScalingAmazon SQSLoose coupling

Practice question for this objective

Free sampleDesign for New Solutionshard

A retailer runs an order-intake web tier on an EC2 Auto Scaling group that synchronously calls a downstream payment-and-fulfilment worker fleet. During flash sales the worker fleet cannot keep pace, requests time out, and orders are lost when individual workers fail mid-processing. The architecture team must absorb unpredictable spikes, let the worker fleet scale on real backlog, and guarantee no order is dropped if a worker instance terminates, all with the least operational overhead. Which design MOST effectively meets these goals?

  • APlace an Amazon SNS topic between the web tier and the workers, subscribe the worker fleet to the topic, and scale the Auto Scaling group on the topic's published-message rate so every order is pushed straight to a worker.
  • BPut an Amazon SQS queue between the web tier and the workers, have the workers poll and delete messages only after success, and scale the worker Auto Scaling group on the queue's ApproximateNumberOfMessages depth. Correct
  • CKeep the synchronous call but enlarge the worker Auto Scaling group's maximum size and add retries with exponential backoff in the web tier so failed calls are reattempted until a worker eventually accepts the order.
  • DStream each order into an Amazon Kinesis Data Stream sized with enough shards for peak, have the workers read from the shards, and scale the Auto Scaling group on the stream's incoming-records metric during sales.
Use an SQS queue to decouple producer and consumer tiers, buffer spikes, and drive Auto Scaling on durable backlog without losing work. An SQS queue stores each message durably until a consumer deletes it after successful processing, so a terminated worker's message reappears after the visibility timeout and is retried, while queue depth gives Auto Scaling a true measure of backlog to scale the fleet against.

Why A is wrong: SNS is push-based pub/sub with no durable per-consumer buffer, so a spike or a failed worker drops the in-flight message, which violates the no-order-lost requirement even though it decouples the tiers.

Why B is correct: SQS durably buffers every order so spikes are absorbed, a worker that dies before deleting returns the message to the queue after the visibility timeout, and queue depth drives Auto Scaling on real backlog with no servers to manage.

Why C is wrong: Larger maximum capacity and client retries still couple the tiers synchronously, so a sustained spike exhausts retries and timeouts and an order in flight when a worker dies is simply lost.

Why D is wrong: Kinesis suits ordered high-throughput analytics streaming, but it needs shard capacity planning and offset handling, which is more operational overhead than a queue for simple decoupled task processing.

See more SAP-C02 practice questions, answers explained.

Exam traps in Design for New Solutions

Answers that look right on this material and are not. Each one is a distractor from a different question in the SAP-C02 bank for this domain.

  • Keep the Lambda functions invoking one another in sequence but add a shared DynamoDB table that each function updates so the team can query which step a claim reached.

    Why it is wrong: This rebuilds the brittle hand-rolled orchestration the team is replacing, so it still lacks managed retries, error handling and durable waits and keeps the custom state-tracking code they want to remove.

  • Run the Auto Scaling group across two Availability Zones and deploy the database as a single-AZ instance with an automated cross-Region read replica promoted by a Route 53 health check during an Availability Zone failure.

    Why it is wrong: A single-AZ database is itself lost when its Availability Zone fails, and using a cross-Region replica for an in-Region zone fault adds latency and conflates Regional DR with Availability Zone high availability.

  • Insert an Amazon SQS queue between every pair of Lambda functions so each stage consumes from its own queue, and rely on dead-letter queues and the visibility timeout to retry failed stages and hold the claim during the assessor wait.

    Why it is wrong: Per-stage SQS queues decouple the steps but give no central workflow state or branching logic, and holding a claim for hours through queue redelivery is awkward, so orchestration and visibility still rely on custom code.

Examworthy is not affiliated with or endorsed by Amazon Web Services. Original, blueprint-aligned practice material only.