gRPC and ALB
Problem: gRPC uses HTTP/2 multiplexing — one connection carries many streams.
ALB balances at the connection level → all streams go to one backend.
Fix options:
- Client-side load balancing via Envoy sidecar — proxy establishes multiple backends
- ALB gRPC target group with
round-robin or least-outstanding-requests algorithm
- NLB + client-side load balancer (e.g., tonic with multiple endpoints)
For ECS + tonic gRPC: use ALB with protocol-version: GRPC on the target group.
ALB then load-balances individual gRPC streams, not connections.