An AZ spans one or more data centers and each AZ is physically isolated from other AZs and
connected by high speed networking. If you want to deploy a highly available application you
should spread your instances across AZs and they will be resilient to the failure of a
single DC
Subnets are created within AZs. Therefore, if you deploy resources into multiple subnets
within an AZ and a data center fails, you may lose all of your instances
You could deploy your instances across separate regions but this is not necessary to create
a highly available application and introduces complexity and cost. For example you may need
multiple ELBs (one per region), complex name resolution and potential data transfer charges