How to Make Legacy EC2 Applications Fault Tolerant After Migration?
A company is migrating a data center from its on-premises location to AWS. The company has several legacy applications that are hosted on individual virtual servers. Changes to the application designs cannot be made. Each individual virtual server currently runs as its own EC2 instance. A solutions architect needs to ensure that the applications are reliable and fault tolerant after migration to AWS. The applications will run on Amazon EC2 instances. Which solution will meet these requirements?
Community Insight
The test is distinguishing replacement after failure from concurrent multi-AZ redundancy; the trap is treating an Auto Scaling group with min=1 and max=1 as fault tolerant.
Legacy EC2 applications that cannot be redesigned achieve fault tolerance by cloning each server from an AMI and running the copies in separate Availability Zones behind a Network Load Balancer. This page establishes why C, not single-instance Auto Scaling or backup restore, matches the reliability requirement.
The most common wrong pick is A, because Auto Scaling sounds highly available, but max=1 keeps only one running EC2 instance and cannot keep the application serving during an AZ failure.
Community Discussion (24 comments)
Comments & Corrections
No comments yet — spotted an error or have a note? Share it below.
Expert Analysis
Why the Answer Is Correct
C is the only option that creates redundant live copies of each unmodified legacy server. Creating an AMI preserves the existing server configuration, and launching two EC2 instances from that AMI in separate Availability Zones means an AZ failure does not take down the application. A Network Load Balancer provides Layer 4 traffic distribution and health checks, which suits legacy workloads that may not be HTTP/HTTPS aware. Because no application redesign is required, this satisfies both reliability and fault tolerance without violating the constraint.Why the Other Options Are Wrong
A uses an Auto Scaling group with minimum 1 and maximum 1, so it maintains only a single running instance; Auto Scaling can replace a failed instance, but that is recovery with a gap, not fault tolerance. B relies on hourly AWS Backup and restore, which leaves an RPO of up to an hour and a lengthy RTO, so the application is unavailable during recovery. D uses Migration Hub Refactor Spaces and ECS/Fargate, which requires breaking the application into components and changing its design; the question also states the applications will run on EC2 instances. Thus A, B, and D either lack concurrent redundancy or violate the no-redesign constraint.Community Comment Notes
Vasiliy argued for A on the idea that max=1 Auto Scaling replaces a failed instance, but that still leaves only one live copy at a time. sandordini's comment, including the fragment "Hourly backup... RPO 1hr", correctly rejects B because backup restore is not fault tolerance. LeonSauveterre and JA2018 both favored C for the AMI plus multi-AZ redundancy and load-balancer availability, which aligns with the requirement.Official Reference
Exam Strategy
Look for the phrase fault tolerant and ask whether the option keeps a second live copy during a failure. If an option only restarts or restores after failure, such as max=1 Auto Scaling or AWS Backup, it is not fault tolerant.
Frequently Asked Questions
Why is Auto Scaling with min=1 and max=1 not fault tolerant for these legacy apps?
It keeps only one running instance at a time, so a failure causes a replacement gap and no concurrent capacity in another AZ. Fault tolerance needs a second live copy.
Why use a Network Load Balancer instead of an Application Load Balancer for the cloned EC2 servers?
NLB is Layer 4 and handles arbitrary TCP/UDP legacy workloads, while ALB is HTTP/HTTPS-specific and may not fit unmodified applications.
Related Analysis
Practice All SAA-C03 Questions
Access 120 questions with complete answers and detailed explanations.
View Full SAA-C03 Practice Test →