Какие типы масштабирования приложений вы знаете?

«Какие типы масштабирования приложений вы знаете?» — вопрос из категории Архитектура, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В контексте тестирования и обеспечения качества важно понимать типы масштабирования, чтобы проектировать соответствующие нагрузочные тесты и проверять отказоустойчивость системы.

Основные типы:

  1. Горизонтальное масштабирование (Scaling Out/In)

    • Что это: Добавление или удаление одинаковых экземпляров приложения (нод, серверов) для распределения нагрузки.
    • Пример для QA: Необходимо тестировать работу балансировщика нагрузки (Nginx, AWS ALB) и корректность распределения сессий (stateless-архитектура). Проверяем, как система ведет себя при добавлении нового инстанса в кластер.
  2. Вертикальное масштабирование (Scaling Up/Down)

    • Что это: Увеличение или уменьшение ресурсов (CPU, RAM, диск) у одного экземпляра сервера.
    • Пример для QA: После апгрейда инстанса БД с db.t3.micro до db.t3.large нужно провести нагрузочное тестирование, чтобы убедиться в росте производительности (TPS, latency) и отсутствии утечек памяти.
  3. Автомасштабирование

    • Что это: Динамическое изменение количества инстансов или их мощности на основе метрик (CPU utilization, количество запросов).
    • Пример для QA: Критически важно тестировать политики автомасштабирования (AWS Auto Scaling Group, Kubernetes HPA). Мы создаем нагрузку, имитирующую пик трафика, и проверяем:
      • Срабатывают ли алерты и scaling policies.
      • Укладывается ли система в целевые метрики (например, 70% CPU).
      • Происходит ли плавное добавление/удаление инстансов без downtime.
      • Корректно ли работает health checks для новых нод.

Ключевые аспекты для тестировщика:

  • Горизонтальное масштабирование требует тщательного тестирования на отсутствие состояния (stateless) у сервисов и корректность работы shared-хранилищ (кеш, БД).
  • Вертикальное масштабирование имеет физический предел, что проверяется стресс-тестами.
  • Автомасштабирование — это комплексная проверка мониторинга, алертинга и времени реакции инфраструктуры.