If you have multiple EC2 instances that are part of an application, you should deploy them into
separate availability zones (AZs). Each AZ has redundant power and is also fed from a different
grid. AZs also have low-latency network links which is often advantageous for most applications.
You do not need to deploy into separate regions to prevent a power outage bringing your
application down. AZs have redundant power and grids so you are safe deploying your applications
into multiple AZs. If you split your applications across regions you introduce latency which may
impact your application. You may also run into data sovereignty issues in some cases.
Deploying your EC2 instances into different VPCs is not required and would complicate your
application deployment. Also, bear in mind that VPCs within a region use the same underlying
infrastructure so deploying into different VPCs may still result in your EC2 instances being
deployed into the same AZs. It is a best practice to deploy into separate AZs.