Complexity

I know this is some dude’s home setup where he is probably just using it to learn and play, but it reminds me of overly-complex enterprise setups that are unsupportable and so convoluted no one knows how they work (especially after the person who built it leaves).

Ran into a few of these myself over the years, and alas to my great shame in my early years of IT (early 2000s) I even built a few of these monstrosities.

This commenter said it best about how I now feel about such needless complexity.

I went to the page to read details about how he load balanced upstream connections, or if he was using heartbeat or whatnot. I didn’t find that, but what I did find was a gratuitous amount of kit that made me happy my infrastructure choice at home is much, much simpler.

My setup is Comcast going into a simple, reliable Surfboard modem, feeding a Google Wifi setup. If it goes down, which it just really doesn’t do, we can use cellular data.

Complexity is the enemy of availability. Keep it as simple as possible, but no simpler.

A few years ago, I was involved in the design of a call center that needed failover capability. I can’t go into details as it would involve just loads of writing no one would care about, but my simple design was overruled in favor of a much more complex one that had multiple points of redundancy, an extremely convoluted networking and phone setup, and other complications that in someone’s mind made it more resilient.

My design was simple enough that a person with no technical skill of any kind (save functioning hands) could unplug one cable and plug in another cable to achieve effective redundancy. This was a 24-hour call center, so someone was always available to do this task. (With a slight modification and a little more money, this manual cable plugging could’ve been avoided, at the cost of a bit more complexity.)

Even better, my design would’ve run somewhere in the neighborhood of $50,000. The design that won was closer to half a million dollars all in. My design, I was told, was not “reliable, not elegant, and was not enterprise class, and depended on people rather than systems.”

Eventually, the design I was against was implemented and as I’d expected, it was not at all reliable. It was failure-prone, no one knew how to support it, and it had undiagnosable failure modes. During the first weeks of production it went down catastrophically several times, vexed with inexplicable problems.

There were hours and hours of downtime on the “more elegant and reliable” system that I didn’t design. In my less complex system that would’ve actually worked, I estimate that the call center would’ve experienced less than five minutes of downtime in that entire year.

Complexity in matters like this is your enemy, always. HA and redundancy should be as simple as possible so that any schmuck can invoke it and have it work without having to call in 20 system admins and network administrators.

This commenter also makes the same point.