What the Heck is "High Availability" (and How Do You Explain It to Your Boss)?
by Lauren Camacci, on Feb 20, 2020 10:15:00 AM
One of the hardest concepts in DevOps for me to understand (as a Marketing person) is the difference between load balancing and high availability. Both are about spreading traffic out over multiple servers, right? To protect your stuff?
Well, yes and no. Load balancing is a function, where HA is a mindset.
Because this is a difficult concept for non-technical people to "get," I wanted to share my favorite way to understand the differences between load balancing and HA with my fellow Inedoins. This is purposely a not-super-technical explanation, and maybe it will help you explain this technical concept to higher-ups at your company that also "don't speak dev."
What is Load Balancing?
Load balancing is the process of distributing network traffic across multiple servers, so each server does less work and can perform better. It's common sense: One server handling thousands of requests will move more slowly (and is more likely to crash) than four servers handling that same number of requests.
My favorite analogy to understand this is picturing an elevator: We've all been in the situation of being in a hotel waiting with 30 other people for the two elevators to take everyone to their respective floors. It takes forever and quickly gets really frustrating. Contrast this with the speed of a hotel with eight elevators, which gets that same crowd of 30 to their destinations much faster and with fewer trips each. That's load balancing.
Whether it's handling standard traffic or peak load, your server cluster performs better when load is balanced between multiple servers instead of just one.
What is High Availability?
High Availability is made possible by load-balanced server clusters, but rather than a feature, it's more of a mindset: High Availability is making sure you have 100% up-time 100% of the time because the alternative is not just unacceptable but unthinkable.
My favorite analogy for this is the power generator. Imagine a time when the power went out at your home for an hour or two. Not ideal but probably not the end of the world. You sat in the dark, have fun living your life by candlelight, and you celebrated when you could finally charge your phone again. But would this experience make you want to go buy a power generator? No way.
But now imagine you run a hospital. Patients rely on powered equipment literally to stay alive. At a hospital, a power outage isn't inconvenient; it's a humanitarian crisis. Buying a generator for your home is probably being "extra," but for a hospital? It's an obvious, necessary choice. THAT is the High Availability mindset.
High Availability is possible when your server cluster is load-balanced and means that your system is almost literally incapable of catastrophic failure because of built-in back-ups and automatic failover.
Do We Need Both?
Pretty much everyone would benefit from load balancing, because servers are designed to handle only so much traffic. But not every business needs the High Availability mindset. There are no external criteria to tell you whether you should have the HA mindset; only stakeholders at your company can determine that.
"But I'm not a business stakeholder, Lauren!" Hey, neither am I. But that doesn't mean we can't start these conversations to learn more about how our companies work. (In fact, Inedo research showed that individual contributors actually enjoy work more and do a better job when they understand higher-level stuff about their company.) DevOps is as much about communication as technology; have a conversation to discuss HA with your manager and you might learn more about how your company works.
Load Balancing and HA in ProGet
Inedo's private container repository and container registry, ProGet, is designed to support these advanced features that keep your business up and running 100% of the time. Adding load balancing and enabling HA in ProGet is simple once you upgrade to ProGet Enterprise. Compare features by edition to learn about what you get in the different versions of ProGet.