Fault-tolerant and self-healing architectures: SAP-C03 study notes and practice questions
What to know about Fault-tolerant and self-healing architectures for the SAP-C03 exam, from the Resilience, Migration, and Business Continuity domain (15% of the exam guide), then 1 free question to test it. Part of the SAP-C03 study guide.
SAP-C03 gives you an architecture with a weak spot (one instance, one AZ, synchronous calls that cascade, a shared component every customer depends on) and asks for the change that makes it tolerate failure with the least effort.
Remove single points of failure
Layer
Resilient pattern
Compute
Auto Scaling group or ECS/EKS service across at least two, usually three AZs, behind an ALB or NLB
Relational database
RDS Multi-AZ (standby or Multi-AZ DB cluster with two readable standbys) or Aurora with replicas in other AZs
Key-value
DynamoDB (multi-AZ by design), global tables for Regions
Cache
ElastiCache with Multi-AZ and automatic failover, or MemoryDB for durability
Files
EFS Regional, FSx Multi-AZ deployments
Network
NAT gateway per AZ, redundant Direct Connect connections at separate locations plus VPN backup
DNS and edge
Route 53 and CloudFront, both globally distributed
Static stability: run enough capacity in each AZ that losing one AZ doesn’t require launching new resources to carry the load (for example, three AZs at 50% each). Recovery that depends on control plane calls during an event is fragile.
Self-healing
ELB health checks on the Auto Scaling group replace instances that fail application checks, not just EC2 status checks.
ECS services and Kubernetes Deployments replace failed tasks and pods; liveness and readiness probes keep traffic off bad ones.
EC2 auto recovery restarts an instance on new hardware for a single, irreplaceable instance.
Aurora and RDS Multi-AZ fail over automatically; applications reconnect through the cluster or instance endpoint (use RDS Proxy to shorten reconnects).
Lambda async retries with dead-letter queues or on-failure destinations; SQS redrive to a DLQ after max receives.
ARC zonal autoshift moves traffic away from an impaired AZ automatically.
Limiting blast radius
Decouple with SQS, SNS, EventBridge or Kinesis so a slow consumer doesn’t break producers; queues absorb spikes (load leveling).
Timeouts on every remote call, and retries with exponential backoff and jitter, capped, only for idempotent operations.
Circuit breakers stop calling a failing dependency and serve a fallback; ECS deployment circuit breaker rolls back failed deployments.
Bulkheads: separate pools of resources (connection pools, queues, functions with reserved concurrency) so one noisy workload can’t starve others.
Cell-based architecture: split customers into independent cells (full copies of the stack) with a thin routing layer, so a failure or bad deployment affects one cell; shuffle sharding reduces overlap between customers’ cells.
Graceful degradation: serve cached or static content when a dependency is down.
Throttling at API Gateway and load shedding keep the system up under overload.
How to choose
Scenario wording
Pick
“Single EC2 instance runs the web tier”
ASG across AZs behind an ALB with ELB health checks
“Orders lost when the processing service is down”
SQS queue between tiers, DLQ for poison messages
“One slow downstream API takes the whole site down”
Timeouts, circuit breaker, fallback
“Bad deployment for one large customer affected all customers”
Cell-based architecture
“Survive an AZ loss with no scaling delay”
Static stability: pre-provisioned capacity in each AZ
Common traps
Retries without backoff, which turn a brownout into an outage.
EC2 status checks only, so a hung application is never replaced.
Relying on Auto Scaling to launch capacity during an AZ event.
Read replicas described as automatic failover for writes on RDS (only Aurora replicas or Multi-AZ fail over automatically).
Synchronous chains of microservices with no queue or fallback.
A retailer runs its product API on Amazon EC2 instances across three Availability Zones behind an Application Load Balancer. Instances occasionally fail, and the team currently replaces them by hand after an alert.
The team wants failed instances replaced automatically, with the capacity kept across all three zones. The API must keep no session state on the instances, because a user's request may reach any instance.
Which solution meets these requirements?
Choose one answer.
AA. Place the instances in an Auto Scaling group across the three zones with load balancer health checks, and store sessions in ElastiCache so that any instance can serve any request.
BB. Run one large instance with an hourly EBS snapshot, and restore from the latest snapshot by hand when the instance fails.
CC. Place the instances in an Auto Scaling group in one zone with EC2 status checks only, and keep sessions in instance memory with sticky sessions enabled on the load balancer's target group.
DD. Add more instances in each zone and keep the spare ones stopped, and start a stopped instance by hand whenever an alert fires.
Show the answer and explanation
Answer: A
A. Right: Correct. The Auto Scaling group replaces unhealthy instances and keeps capacity spread across the zones, and ElastiCache holds the sessions outside the instances. Any instance can then serve any request.
B. Wrong: A single instance is a single point of failure, and a manual restore from an hourly snapshot leaves an outage and up to an hour of changes at risk.
C. Wrong: One zone cannot survive that zone's failure, and status checks miss application failures that the load balancer health checks detect. Sticky sessions in memory also tie users to failing instances.
D. Wrong: Stopped spares need a person to start them, which keeps the manual replacement the team wants to remove. Stopped instances also take time to become serving capacity.
Explanation
An Auto Scaling group across three zones with load balancer health checks replaces failed instances automatically, and ElastiCache keeps sessions off the instances. A single instance, one-zone group with sticky sessions, and manual stopped spares each fail the automatic recovery or the statelessness need.
Want more on Fault-tolerant and self-healing architectures? The 5 full-length practice sets have 6 more Fault-tolerant and self-healing architectures questions, 375 in all, none of them in the free exam. One payment of $14.99, no subscription. See the practice sets →
Study Fault-tolerant and self-healing architectures