Using AWS for managing traffic to your apps? Chances are you already have one of its solutions in place.
To be honest, I’m a fan of Amazon’s bespoke traffic management tools, depending on your application’s size. Amazon CloudFront performs well. Its Virtual Waiting Rooms are also handy for some smaller applications.
For larger applications using Kubernetes, we have the Kubernetes AWS load balancer controller. Frankly, the existing information around this product makes it almost impossible to decide if it’s worth using or not.
So let’s talk about load balancing, why you need it, and whether this controller is worthwhile.
What is a Load Balancer Controller?
Load balancing means distributing traffic to your application in a way that allows the application to continue functioning smoothly.
First, we need to tell the difference between a load balancer and a controller.
- Load balancers functionally distribute traffic, and
- An LB controller provisions the LBs to satisfy Kubernetes Ingress resources. These resources proxy traffic to different containers.
This means that if you’re operating an application using Kubernetes, you’ll need the Kubernetes AWS load balancer controller to satisfy those Ingress resources. Without this, you can’t take advantage of Kubernetes’ automated storage provisioning services.
Traffic Management, LBs, and Controllers, Oh My!
The majority of the info I’ve found online around this controller is pretty poor. Even Kubernetes SMEs would struggle to fully get their heads around the inconsistencies I’ve seen. For more information, this is the best Kubernetes load balancer provisioning explainer out there for my money.
For LBs themselves, the AWS elastic load balancer is by far the most popular choice — it’s estimated to hold around 75% of the total market share. Simple enough. It’s a solid product.
Meanwhile, a controller simply helps you deploy Kubernetes resources effectively alongside your AWS elastic load balancers.
So do you need a controller besides your LBs? Let’s consider the goals of load balancing.
When is Load Balancing Useful?
LBs help manage various types of traffic to your application. These include:
1. Interactive Traffic
This is comprised of standard visitors to your website or store. They’re constant, so can have an effect on available bandwidth if they’re not prioritized and managed effectively.
2. Latency-Sensitive Traffic
This includes anything that 90s and 00s internet users would regard with fear as their bandwidth crumbled under pressure — games, videos, live calls, etc. Anything that generates a consistently high demand for bandwidth.
These applications require scalable infrastructure behind them. LBs are essential for managing latency-sensitive traffic.
3. Burst Traffic
Burst traffic occurs when there’s a sudden, extremely high demand on your bandwidth due to large files being downloaded by users.
LBs can distribute traffic and limit access to bandwidth to prevent crashes.
How Elastic Load Balancing Helps
The types of traffic listed above can all be managed through AWS elastic load balancers as long as they’re not super-high volume. If your application is fairly small, you’re probably all right without a controller.
This is because Kubernetes may not be necessary for your application — it’s designed primarily for larger-scale applications requiring numerous containers.
Do I Need the Kubernetes AWS LB Controller?
Kubernetes can be slightly overwhelming for smaller applications and arguably isn’t necessary. However, it’s extremely useful for larger applications — in which case it’s worth having the LB controller.
This does mean you’ll need to demystify the slightly inconsistent information behind this product. Automated storage provisioning is a major advantage of Kubernetes, and the controller is what makes it work.
Final Thoughts
Traffic management all sounds rather straightforward until there’s a crash. If you’re operating a more sophisticated application, you’ll need a more advanced solution to ensure all those moving parts keep talking to each other and distributing your traffic efficiently.
My best recommendation? If you’re planning to use Kubernetes for your application, speak to a professional Kubernetes SME first. And hey, if you’re already using it, some expert advice won’t hurt either.