1.Host your application on Amazon Cloud First to make use of easy to configure HA features available on Amazon Cloud.
2. Host your applications in multiple EC2 instances in auto scaling group and load balancer in front.
3. The auto scaling group rules are configured in such way that number of EC2 instances hosting your application will increase when load increases making your application is highly available.
4. Load balancer will evenly distribute the application load among available servers.
5. If your application is highly database centric, you can use AWS RDS services with database synchronised replication with master and slave configured. If master fails, the slave acts as master making your application available even in case of master database failures.
Additionally, I would recommend take snapshots of EBS volumes that get stored in S3. S3 is highly durable store. In case the EBS volume fail, data can be recovered from these snapshots.
Further based on the business criticality, one can decide/plan to have a standby application stack in another region.
How to make your application highly available?
1.Host your application on Amazon Cloud First to make use of easy to configure HA features available on Amazon Cloud.
2. Host your applications in multiple EC2 instances in auto scaling group and load balancer in front.
3. The auto scaling group rules are configured in such way that number of EC2 instances hosting your application will increase when load increases making your application is highly available.
4. Load balancer will evenly distribute the application load among available servers.
5. If your application is highly database centric, you can use AWS RDS services with database synchronised replication with master and slave configured. If master fails, the slave acts as master making your application available even in case of master database failures.