Głębiej
Różnica polega na tym, co load balancer „rozumie”.
L4 (transport)
- Routuje po IP/porcie i informacjach o połączeniu TCP/UDP.
- Nie analizuje ścieżek/headerów HTTP.
- Zwykle mniejszy narzut i działa dla protokołów nie-HTTP.
L7 (aplikacja)
- Rozumie HTTP/HTTPS (często też gRPC/WebSockets).
- Może routować po host/ścieżce/headerach, robić TLS termination, redirecty i reguły typu WAF.
- Umożliwia np. rate limiting i bardziej zaawansowane health checki (zależnie od produktu).
Praktyka
- L7 dla większości aplikacji web (routing, TLS termination, funkcje HTTP).
- L4 dla usług TCP/UDP lub gdy zależy Ci na minimalnym narzucie.
Typowe pułapki
- TLS termination w złym miejscu (widoczność vs wymagania end-to-end encryption).
- Brak zachowania IP klienta (często potrzebne `X-Forwarded-For`/proxy protocol).
- Założenie, że każdy L7 wspiera wszystkie funkcje protokołów (sprawdź wsparcie WebSocket/gRPC).