AWS Design for Failure: 3 Services to Support Resilient Systems

Design for Failure and Nothing Will Fail

Question

When designing a system, you use the principle of “design for failure and nothing will fail”

Which of the following services/features of AWS can assist in supporting this design principle? Choose 3 answers from the options given below.

Answers

Explanations

Click on the arrows to vote for the correct answer

A. B. C. D.

Answer - A, B and C.

Each AZ is a set of one or more data centers.

By deploying your AWS resources to multiple Availability zones, you are designing with failure in mind.

So if one AZ were to go down, the other AZ's would still be up and running.

Hence your application would be more fault-tolerant.

For disaster recovery scenarios, one can move or make resources run in other regions.

And finally, one can use the Elastic Load Balancer to distribute load to multiple backend instances within a particular region.

For more information on AWS Regions and AZ's, please refer to the below URL:

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html

The principle of "design for failure and nothing will fail" means that when designing a system, you assume that failure is inevitable and design the system in a way that it can tolerate and recover from failures. This principle is also known as "resiliency" in the context of cloud computing. AWS provides several services and features that can assist in supporting this design principle, including:

A. Availability Zones: AWS provides multiple Availability Zones (AZs) in each region. An Availability Zone is a separate data center that is isolated from other AZs in terms of power, networking, and cooling. By deploying your application across multiple AZs, you can ensure that your application remains available even if one AZ goes down due to a disaster, outage, or maintenance activity. AWS provides a 99.99% uptime SLA for each AZ.

B. Regions: AWS has multiple regions across the world, each consisting of multiple Availability Zones. By deploying your application across multiple regions, you can ensure that your application remains available even if one region goes down due to a disaster, outage, or other event. However, deploying across multiple regions can introduce higher latency and higher costs due to data transfer fees.

C. Elastic Load Balancer: AWS provides Elastic Load Balancers (ELBs) that can distribute traffic across multiple instances of your application running in different AZs. By using ELBs, you can ensure that traffic is directed to healthy instances and avoid overloading any single instance. ELBs can also automatically detect and redirect traffic away from unhealthy instances, thereby ensuring high availability of your application.

D. Pay as you go: "Pay as you go" is not a service or feature of AWS that directly supports the principle of "design for failure." It is a pricing model that allows you to pay only for the resources that you consume, without any upfront costs or long-term commitments. This pricing model can be beneficial when designing a resilient architecture, as you can provision resources across multiple AZs or regions without worrying about underutilization or overprovisioning.

In summary, the three services/features of AWS that can assist in supporting the "design for failure" principle are Availability Zones, Regions, and Elastic Load Balancers.