1

I'm taking my first course For AWS cloud practitioner and I am curious:

The case: I have a single, client-facing application hosted on an EC2 instance. Let's keep it simple and say it's brochureware, the database is in a volume attached to the instance. It's using us-west-2a as its availability zone.

The conundrum: I understand the use of CDNs as they essentially store a copy of the application in the edge locations so clients can be delivered a static copy quickly without using up EC2 compute time.

I also understand regions but only to the extent that it is an initial starting point for building out your application.

What would be the nature of cases that would require me to duplicate my EC2 instance to a new availability zone and run the two exact same applications simultaneously?

A few things pop-up for me initially:

  • Computational availability (ex: the application client needs to request specific data, like a user defined request)
  • Zone based version control (ex: an incremental rollout of a feature)
  • And if I'm using this term right, fault tolerance (graceful degradation?). If one zone is down we can fall back to another.

Are these assumptions correct?

1

First a primer on regions and availability zones

Regions are physical places where the AWS resources are located. As such different regions may offer different resources. This is also important for latency-sensitive operations and data sovereignty laws. Having an EC2 instance in the us-east-1 region means all of my instance resources are in that region of the United States.

Availability Zones, while in the same geographic area, may be backed by one or multiple data centers. However, if you have an EC2 instance running in two availability zones, they will run in separate data centers. So an EC2 instance in us-east-1a and us-east-1b will be in two separate data centers.

Imagine you have a mission critical application that needs high availability. By setting up a load balancer (controlled by the region and not the availability zone) you can help scale your application across multiple availability zones and redirect traffic if something happens to an availability zone. This helps create a highly available infrastructure.

To answer your three examples:

  • Computational availability is not really a factor. You could always throw a larger instance (or multiple instances in the same availability zone) to decrease load.
  • While you could use multiple zones for rolling out upgrades, this can also be done within the same availability zone.
  • Your third point here is the main draw to the availability zones. If a data center catches on fire, floods, gets hit by a meteor and all your EC2 instances are tied to that center then you would be unable to access whatever application you had running.
| improve this answer | |
  • 1
    Your labels are a little bit off. There is no us-east region, and us-east-1 and us-east-2 are regions, not availability zones. Availability Zones are designated with the region name and a letter, such as us-east-1f and us-east-2c. – Michael - sqlbot Sep 25 '19 at 2:51
  • 1
    @Michael-sqlbot: Good catch! Answer has been edited with the proper labels. – Wesley Rolnick Sep 25 '19 at 2:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.