AWS provides different types of load balancers for distributing incoming traffic across multiple backend resources. The main differences between Application Load Balancer (ALB), Network Load Balancer (NLB), and Classic Load Balancer (CLB) are based on the OSI layer they operate at, routing capabilities, performance, and supported use cases.
Application Load Balancer (ALB)
An ALB operates primarily at Layer 7, making it suitable for HTTP and HTTPS applications. It can make routing decisions based on application-level information such as hostnames, URL paths, HTTP headers, and query parameters.
For example, /api traffic can be routed to one target group while /images traffic goes to another. ALB is commonly used for web applications, microservices, and containerized workloads.
Network Load Balancer (NLB)
An NLB operates at Layer 4, handling TCP, UDP, and TLS traffic. It is designed for applications that require very high performance, low latency, static IP addresses, or protocols other than HTTP/HTTPS.
Because NLB works at the network level, it does not provide the same application-aware routing capabilities as an ALB. It is often suitable for high-throughput services and specialized network applications.
Classic Load Balancer (CLB)
The Classic Load Balancer is the older generation of AWS load balancing. It supports basic Layer 4 and Layer 7 load balancing but provides fewer modern routing and application features than ALB and NLB.
For new applications, ALB or NLB is generally preferred depending on the workload. Existing systems may still use CLB for compatibility or legacy requirements.
Final Thoughts
A simple way to remember the difference is:
ALB = application-aware HTTP/HTTPS routing
NLB = high-performance network-level traffic
CLB = older load-balancing generation
For most modern AWS architectures, the decision usually comes down to whether the application needs Layer 7 routing and web features (ALB) or high-performance Layer 4 networking (NLB).