В чем разница между Network Load Balancer и Application Load Balancer в AWS?

«В чем разница между Network Load Balancer и Application Load Balancer в AWS?» — вопрос из категории Облачные платформы, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Network Load Balancer (NLB) и Application Load Balancer (ALB) — это сервисы балансировки нагрузки AWS, работающие на разных уровнях сетевой модели OSI и предназначенные для разных сценариев.

Network Load Balancer (Уровень 4 — транспортный):

  • Принцип работы: Балансирует трафик на основе IP-адресов и портов (TCP/UDP). Не анализирует содержимое пакетов.
  • Ключевые особенности:
    • Сверхнизкая задержка и высокая производительность. Обрабатывает миллионы запросов в секунду.
    • Поддерживает статические IP-адреса и Elastic IP.
    • Идеален для протоколов, не основанных на HTTP/HTTPS (например, игровые серверы, VoIP, FTP, трафик баз данных).
    • Сохраняет исходный IP-адрес клиента (Source IP preservation).

Application Load Balancer (Уровень 7 — прикладной):

  • Принцип работы: Анализирует содержимое HTTP/HTTPS-запросов (заголовки, путь URL, тело).
  • Ключевые особенности:
    • Интеллектуальная маршрутизация. Может направлять трафик на разные группы целей (target groups) на основе:
      • Пути URL (/api/*, /static/*)
      • Значений заголовков (Host: api.example.com)
      • Метода запроса (GET, POST)
    • Поддерживает SSL/TLS-терминацию, перенаправления (redirects), аутентификацию.
    • Идеален для современных веб-приложений и микросервисных архитектур.
    • Интегрируется с AWS WAF и AWS Shield для безопасности.

Практический выбор:

  • Используйте NLB, если вам критичны производительность, низкая задержка и работа с не-HTTP трафиком.
  • Используйте ALB, если ваше приложение — это веб-сервис (HTTP/HTTPS) и вам нужна гибкая маршрутизация, терминирование SSL или работа с контейнерами в ECS/EKS.