There are several approaches to making our EC2 instances and the applications running on them highly available. The approach we take will be dependent on the SLA that we need to achieve in our application, that is, whenever it is higher than the SLA of the EC2 service. When we are designing applications, we should always be thinking of them as disposable objects that do not need to be protected, but that kind of approach is not possible with a lot of legacy and enterprise workloads being moved to the cloud. Thus when talking about high availability, we need to determine the following:
- Are our instances stateful or stateless?
- Are tasks being processed by our instances sticky or distributed?
- What does our SLA define as the percentage of high availability?
- What is the Recovery Time Objective (RTO) and Recovery Point Objective (RPO) when failures occur...