High-Availability Solution: As the word says, it means that it is highly available in all the times. Lets see it more clearly what is HA solution exactly means.
- Consists of set (2 or more) of loosely coupled servers which have fail-over capabilities
- Loosely coupled means it will be coupled together but not dependent on each other all the time. Not all the servers will be running at all times.
- System is independent and self-contained
- It is independent of any other servers in the same cluster. If something happens to one server, other servers will not be affected.
- Yet the servers are health monitoring each other and if one fails, another will take over and get restarted.
- Even though the systems are not dependent on each other, it does keeps an eye on the other servers and if one server fails or if the OS hanged, the other server will take over and the application will be started from the other healthy server.
- For Example: Windows Server Fail-over Clustering
- It can recover in the magnitude of seconds.
- But there cannot be a zero-second downtime. But an assured backup.
- Flexible – recovers any application running on any server in the cluster
- It recovers any of the application running on any of the server in the same cluster. as they are all independent and one server’s failure does not affect any other server.
Fault Tolerant Solution: This kind of solution will provide no fault solution for the applications running on the server.
- Tightly coupled systems which provide redundancy.
- Unlike HA solutions, in FT the servers are tightly coupled, meaning the systems are dependent on each other. The applications running will be the same in both servers.
- Single copy of the OS and application within running consistently on two physical servers.
- Common OS for all the servers in the cluster. If any instruction is executed on one system, it is also executed on the second system.
- If the main system has a hard failure, secondary system takes over. There is no downtime
- It can bring up the application with zero downtime.
Now that we have seen some details on both, there should be some level of understanding already. To summarize the difference:
|Loosely Coupled Servers||Tightly Coupled Servers|
|Failover Capabilities||Redundancy Capabilities|
|Systems are independent||Mirrored and dependent|
|Chances to have downtime||No downtime|
The pros and cons of HA and FT Solutions
Pro for FT: This solution provides great resilience to hardware faults. If one of the server is plugged off, the other takes over immediately without any downtime.
Con for HA: There will be a small downtime for the other server to take over if any of the above issue happens. HA does not provide zero downtime
Pro for HA: All the servers are independent of each other and so if there is any issue with OS in any one of the server, it does not affect the rest in the same cluster.
Con for FT: FT runs using a common operating system, so if there is any issue with OS in one of the server, then both goes down and there will be no protection from software fault scenarios.
Pro for HA: This solution does not need all the servers to be up and running all the time. The resources can be saved a lot if HA is the solution used.
Con for FT: In FT, both servers will be running all the time and consuming more or double the resources and cost. It is almost like running two servers to use only one server.
If the app is a critical app and you are not worried about minimal hardware failures, then FT could be the better solution. But for all other cases, HA could be the better solution. Again it boils down to the business requirement and the kind of applications it is used for and also the SLA that needs to be achieved.