Cloud Scale Intelligent Load Balancing for a Modern-day Microservices Application Architecture
Load balancers have played a key role in providing enhanced performance experience to clients since pretty much the advent of client server architecture. Most load balancers fall in two categories:
- Hardware based load balancers working in OSI Layer 4
- Application based load balancers (ALB) working with HTTP services in OSI Layer 7
Application based load balancers are more intelligent in that they can support adaptive routing based on intelligent algorithms that look for a variety of parameters to route the incoming requests to a more suitable instance. In the last 5 years, application load balancers have inherited more responsibilities as Service Oriented Architectures and Distributed Systems gained prominence. This trend is mostly attributed to their flexibility and ability to rely on an intelligent algorithm. Today, ALBs are taking up even more complex roles like SSL acceleration that can save costly processing time by taking away the responsibility of encrypting and decrypting the traffic from the application server. This immensely boosts server performance. That said, the ask from load balancers is ever increasing, given the modern world of API driven development and the Microservices architecture.
With cloud scale becoming a reality, application server responsibilities are increasing demonstrating a self-contained behavior. ALBs are now required to meet the demands of this new application development paradigm and cloud scale infrastructure support. The good news is that cloud providers are listening. Amazon has taken a step forward by announcing the launch of an ALB option for its Elastic Load Balancing service. The most important feature it provides is support for container based applications and content based routing. The ALB will have access to HTTP headers and will be able to route to a specific set of API endpoints based on the content, which essentially means that you will be able to route and load balance requests from different client devices to different sets of API endpoints depending on the need for scale. With support for containers, the ALB can load balance requests to different service containers hosted in the same instance, and that is pretty cool! AWS has leaped into a new future for ALBs and I am sure competition will not be far behind in announcing their equivalents.