I recently got into watches. Naturally, I became an insufferable bore almost immediately. It’s a culture and a field of engineering that comes with two centuries of jargon from hairsprings to tourbillons. If you can’t tell your tapisserie dial from your patisserie croissant, you’ll find it pretty impenetrable and exclusive.
So obviously it made me think about load balancers and other app infrastructure.
In the world of horology (which is the fancy word for timekeeping), you won’t get far without understanding some esoteric stuff like the fact that “water-resistant to 100 meters” doesn’t actually mean you can swim with a watch at a depth of 100 meters.
There are some obvious parallels in tech, where existing infrastructure, tools, workflows, code, and assumptions act as gatekeepers to new entrants. If my Twitter feed has taught me one thing, it’s that a lot of people are looking for easier ways to get into fields like cyber security, InfoSec, DevOps, and platform engineering. Yeah, my Twitter feed is weirdly specialized.
It’s hard to get over that initial hump. (Except all those folk sporting box crystal watches two centimeters thick. For them, the hump is the point.)
But whether we are looking at Swiss watches or traditional load balancer appliances, we don’t have to let the legacy of the past dictate how we understand watches or tech options today.
Watches have changed and there are many cheaper and simpler options for people who just want to tell the time as easily as possible. There are smartwatches for people who want to add convenient timekeeping features to their broader ecosystem. Then there’s the ubiquity of timekeeping across multiple devices and channels, such that many people choose not to wear a watch at all.
App services and infrastructure follow similar evolution, from traditional enterprise load balancers to free open source alternatives to cloud-native add-ons to ubiquitous multi-cloud app services platforms.
Let’s dig in and see what we can learn about load balancers (and your infrastructure strategy) from the watch that may or may not be dangling from your wrist.
Swiss Watches and Traditional Load Balancers
When I say “Swiss watches”, I really mean that as a shorthand for mechanical or automatic watches, which are made in many countries besides Switzerland, but that’s harder to explain in a headline. On the other hand, everyone knows what I mean when I say “Swiss watch”. It is a byword for heritage, quality, expertise, and, well, cost.
If you’re not familiar with mechanical and automatic watches, all you really need to know is that they are powered by nothing more than potential energy stored in a mainspring and released slowly to move the hands. A mechanical watch is wound by turning the crown while automatic watches are wound by a weighted rotor that spins when the watch moves.
It’s simple in theory, but to pull it off accurately requires many moving parts machined, assembled, and regulated to an incredibly high standard. This process can take a lifetime to learn and decades to turn into a repeatable process that you can train others to do. That’s why the best watches in this category come from brands that have been around for years. Some of the oldest Swiss watchmakers like Vacheron Constantin and Breguet have been around longer than Switzerland has existed as a modern state.
Beyond an accurate mechanical movement, these watches are typically made from long-lasting luxury materials such as titanium or gold, with dials made of meteorite or handmade enamel, and straps of exotic leather.
All this time, expertise, and luxury mean these watches command a high price. They are expensive to buy, have a steep learning curve, and in the course of a lifetime can be costly to maintain, with servicing costing hundreds of dollars for even relatively simple watches let alone complex chronographs with many times more parts. This is not a hobby to be taken lightly and presents a high barrier to entry.
What does this all have to do with load balancers?
One word: F5. Well, it’s not really a word, just a letter and a number. F5 has been doing application load balancing for years and along with Citrix is the closest thing IT Ops has to a Rolex. If you ask most normal people to name a watch, they are likely to say “Rolex”, and if you ask an IT person to name a load balancer, guess what they’ll probably say.
F5 load balancer appliances have a lot in common with Swiss watches. Years of experience and expertise have gone into building a load balancer that is robust and opulent in its broad and deep feature set. Its heritage makes F5 a trusted brand, relied upon by many of the biggest companies in the world. It is in some ways the gold standard.
But if you’re not familiar with watch culture, you might be surprised to learn that not everyone covets a Rolex. To have a Rolex, you either need to be the sort of person whose whole life revolves around watches or be so wealthy that $30,000 is neither here nor there. And to have F5 today, you need to be the sort of person whose life revolves around F5 load balancing, or a company with deep, deep pockets (and preferably both).
Those who have had the pleasure of deploying, configuring, and maintaining one of F5’s BIG-IP load balancer appliances will be no stranger to the phrases “expensive to buy”, “steep learning curve”, or “costly to maintain”.
Like that moon phase perpetual calendar chronograph, those F5 iRules can do practically anything. But be prepared to spend a while setting it up, and for goodness sake don’t take it into the swimming pool.
To put it simply, whether you’re into Swiss watches or traditional load balancers – it’s a lot. You have to be seriously into it to put up with the cost and complexity. For the right people, there’s nothing else like it. For everyone else, there are a million cheaper, easier options.
Quartz Watches and Free Load Balancers
Quartz watches work completely differently from mechanical and automatic watches. A battery provides an electrical current that causes a quartz crystal to oscillate at a specific frequency – usually 32,768 times per second, though there are higher frequency variants. A circuit counts the number of oscillations and emits an electrical pulse after every 32,768. This pulse, therefore, happens once a second and is used to move the hands forward one “tick”.
In comparison with traditional Swiss watches, quartz watches are easier to manufacture. This means quartz watches – like pretty much every model from Casio – are much cheaper and extremely reliable. This makes them popular with people who want to know the time with as little fuss or expense as possible.
Some watch-snobs look down on quartz movements as being somehow “lesser” than mechanical movements, and to be fair quartz lacks the same heritage and tactile joy that you typically get from a mechanical watch. However, quartz doesn’t mean bad.
Quartz movements power everything from cheap plastic beater watches to luxury dress watches to accurate chronographs running at a higher frequency of 262kHz. Quartz works, and it does its job extremely well.
Anyone who’s tried a low-cost, free, or open-source load balancer will have had a similar experience.
A great example is HAProxy. It’s free and open-source so anyone can use it and gain many of the benefits of a load balancer without dealing with the high cost and complexity of something like F5. With HAProxy you get solid layer 7 application load balancing with the flexibility to deploy in modern cloud-native environments. HAProxy is good enough that other companies wrap it up in a hardened package and sell it as a commercial product.
That certainly speaks to the quality foundation that HAProxy provides, but also to its limitations. HAProxy by itself won’t be enough for many enterprise app delivery teams because it lacks commercial support backed by an SLA; it doesn’t have built-in WAF security; it doesn’t have built-in global server load balancing (GSLB); and so on.
This means businesses considering HAProxy must also consider whether their development team can integrate the missing functionality from other sources, or whether they must pay HAProxy for enterprise support and extra components.
In the same way that a cheap quartz watch might leave you wanting more than just good timekeeping, a cheap or free load balancer might make you realize how much you are missing when compared with a hardened enterprise-grade product.
Smartwatches and Cloud-Native Load Balancers
Smartwatches such as Apple Watch, Android Wear, and Samsung Galaxy Watch provide not just a different type of movement from mechanical or quartz but a different vision of what a watch should be. Smartwatches treat timekeeping as only one feature out of many, and perhaps not even the most important feature on the roster. Health monitoring, communications, navigation, music, and Internet of Things (IoT) automation all compete for attention on smartwatches.
Smartwatches also offer (or rely on, depending on how you look at it) deep integration with device/OS/service ecosystems from Apple and Google. If you use a Mac, iPhone, AirPods, and HomePod (I mean, someone must be), then the Apple Watch can interact with all of them fairly seamlessly. If you love the ecosystem, this might be a huge benefit. If you have a hybrid ecosystem or regularly switch between them, this integration might be a huge limitation. On top of that, the ecosystem lock-in can become expensive, as you need to keep buying more from the same company to keep everything working together properly.
Smartwatches, then, appeal to a very different type of user. Someone who wants to be able to do almost anything without being restricted to what was historically possible in the category. Someone who values features over tradition or simplicity. Someone who sees convenience in embracing vertical integration.
Yeah, I’m basically describing the average AWS engineer. Cloud-native infrastructure such as AWS, Azure, GCP, Linode, and DigitalOcean has spawned cloud-native app services. Every cloud has its own native components providing application load balancing. They typically bring a powerful combination of rapid updates, modern features (such as autoscaling), and convenient integration with every part of the cloud ecosystem.
For example, if you deploy in AWS, and run containers in Amazon EKS, then using Amazon ALB at the ingress seems like the obvious choice. It’s practically the default option. You’d need a good reason not to do it.
But there are good reasons. If you use more than one cloud, or if there’s the slightest possibility your business might migrate to a different cloud, then investing in cloud-specific infrastructure could be a costly mistake. None of it is portable to another cloud. If you need to make the switch, all the time and effort you put into configuring load balancing and security policies in one cloud will be lost when you move to another. Cloud-neutral app services from a third-party platform provide continuity in multi-cloud or cloud migration scenarios.
If you need to customize your load balancing and security for highly specific scenarios or high-security enterprise requirements, the native options built into AWS and the rest might prove inadequate to the task. Most have limited customizability and nothing that compares with the total flexibility of, say, F5’s iRules.
Finally, if you need predictable and controlled costs, scaling ALB in AWS might present a few nasty surprises. What starts out cheap and convenient can suddenly hit you with a $25,000 bill because traffic spiked on one day and your ALB scaled out automatically. That’s not how most IT departments want to do business.
Your smartwatch might seem futuristic or at times magical, but it comes with a cost – both figurative and literal. Cloud-native load balancers are the same. ALB (and the others) are great options for those deeply committed to one particular cloud and comfortable with the, let’s say, generously flexible pricing. For others uncomfortable with that sort of lock-in, something a bit more cloud-neutral and platform-agnostic might be the answer.
Do You Even Need A Watch?
Perhaps this watch analogy is making you scratch your head. “Who still wears a watch!?” you might be screaming. And you have a point.
A 2017 survey (I couldn’t find anything more recent) by Consumer Watch Report revealed only 32% of people wear a watch every day, with millennials and younger people being most unlikely to wear one.
The most obvious explanation for this is that most people now carry a smartphone in their pocket that always tells the correct time. But I think there’s more to it than that. Time, now, is everywhere.
Yes, it’s on my phone. It’s also in the top-right corner of my computer screen as I write this blog post. It’s available on request from smart speakers such as Amazon Echo and Google Nest Home.
One of my proudest parenting moments was when my dad asked my preschool daughter if she could tell the time. She said, “Of course. Alexa, what’s the time?”
Who still wears a watch when time is ubiquitous? Answer: someone who likes wearing a watch and thinking about watches. We see a similar development in load balancing and other app services.
The Infrastructure as Code (IaC) movement is taking what used to be appliances or functions that need to be individually managed and turning them into ubiquitous and fully automated services. With the right setup, load balancing and application security can be available on-demand without you really needing to think about it.
I like to think our own Snapt Nova is the best example of this. Sure, you can use the nice web GUI or spend as long as you like writing custom rules to your heart’s content. But you can also just grab the REST API and put Nova’s dynamic app services to work in your CI/CD pipeline.
Maybe your PlatformOps or Platform Engineering team needs to occasionally worry about updating global policy and provisioning new team access, but developer and DevOps teams can deploy and scale the app services they need automatically and get on with other stuff.
Best of all, this marries enterprise-grade features and customizability with modern cloud-native design in a truly cloud-neutral and platform-agnostic approach. The best of both worlds.
I’ve come to love watches. I think there’s a watch out there for everyone. But I also get why people don’t want to wear one. There’s not much practical reason for most people to wear a watch when time is everywhere.
Load balancers and app services are as varied as watches, and there’s an option to fit virtually any use case. I think we will increasingly see the rise of invisible and ubiquitous app services, to meet the needs of people who just don’t want to think about it but still need to know that their apps are safe, reliable, scalable, and fast.
For the tinkerers who love load balancers and actually enjoy thinking about them, you’re welcome to have a go deploying Snapt Nova on a Raspberry Pi running on an ARM processor as our solutions engineer Armand Sultantono did at KubeCon this year!