High-Availability Solutions
ChatGPT explaining application high availability to a high school kid
Before going into the details, it’s worth figuring out what the application (or system) users need as opposed to what they think they need:
- Fifty Shades of High Availability (2020)
- Figure Out What the Customer Really Needs (2017)
- Are Business Needs Just Excuses for Vendor Shenanigans? (2020)
- Redundancy Does Not Result in Resiliency (2017)
- High Availability Planning: Identify the Weakest Link (2016)
- Meaningful Availability (2020)
- Differential Availability (2020)
Not surprisingly, IT vendors sell magic infrastructure solutions as the high-availability panacea based on the assumption that redundant infrastructure cannot fail. Nothing could be further from the truth:
- High Availability Fallacies (2011)
- If Something Can Fail, It Will (2012)
- How Hard Is It to Think about Failures? (2016)
- This Is What Makes Networking So Complex (2013)
- Decide How Badly You Want to Fail (2019)
- Sometimes You Have to Decide How You Want to Fail (2015)
- Some People Don’t Get It: It Will Eventually Fail (2016)
- The Network Is Reliable and Other Stories (2016)
- Circular Dependencies Considered Harmful (2021)
High Availability Concepts, Technologies, and Solutions
You can use a plethora of approaches depending on your availability targets:
- Disaster recovery is the right tool for the job if you’re OK with the system being down for a few hours.
- Automatic restart of application instances combined with disaster recovery is acceptable if you can accept your system to be down ~0.1% of the time (99.9% availability)
- Availability targets higher than 99.9% can only be reached reliably with proper application design supported by well-designed infrastructure.
I wrote over 130 blog posts on these topics. It would be impossible to list all of them on a single page; major high-availability technologies or concepts thus have dedicated pages:
- Disaster recovery and avoidance
- High availability clusters
- Public and private cloud deployments
- Global and local load balancing with IP anycast
One of the prerequisites for highly available services is also redundant networking infrastructure:
- Redundant Data Center Internet Connectivity – Problem Overview (2013)
- Redundant Data Center Internet Connectivity – High-Level Design (2013)
- Coping with Byzantine Routing Failures (2014)
- Site and Host Multihoming (2023)
- High Availability Switching (2024)
Regardless of your approach, the only sustainable way to get highly available services is the correct design of the application stack. For more details, watch the Designing Active-Active and Disaster Recovery Data Centers webinar; I also wrote a few blog posts on the topic:
- Swimlanes, Read-Write Transactions and Session State (2017)
- Solving the Problem in the Right Place (2017)
- Moving Complexity to Application Layer? (2017)
- Optimizing the Time-to-First-Byte (2021)
Notable Outages
Finally, here are a few notable outages. TL&DR: it can happen to the big guys and will eventually happen to you.
Other High Availability Blog Posts
- 2015
- 2014
- 2013
- 2012