Средний

Вертикальное и горизонтальное масштабирование

Урок 1 из 3 в курсе Масштабирование backend-систем

Содержание курса (1/3)

Вертикальное и горизонтальное масштабирование

вертикальное — сделать машину мощнее, горизонтальное — добавить больше машин.

Почему это важно: Выбор стратегии масштабирования влияет на архитектуру, стоимость и отказоустойчивость.

Главная идея

Вертикальное масштабирование проще, но ограничено. Горизонтальное сложнее, но теоретически безгранично.

Как это выглядит на практике

  1. Приложение упирается в CPU на одной машине.
  2. Первый ход — увеличить инстанс (vertical): 4 → 16 vCPU.
  3. Дальше — поставить load balancer и запустить несколько инстансов (horizontal).
  4. Состояние приложения нужно вынести наружу, чтобы любой инстанс мог обработать любой запрос.

Что происходит под капотом

  • Stateless-приложение — обязательное условие для горизонтального масштабирования.
  • Session state хранится в Redis/БД, а не в памяти процесса.
  • Load balancer распределяет запросы: round-robin, least connections, weighted.
  • Автоскейлинг (HPA в K8s, ASG в AWS) добавляет инстансы при росте нагрузки.

Типичные ошибки и заблуждения

  • Ошибка: горизонтальное всегда лучше. На малых объёмах оно сложнее и дороже.
  • Ошибка: БД легко масштабируется горизонтально. На самом деле это одна из самых сложных задач.
  • Ошибка: автоскейлинг решает всё. Холодный старт и cold cache снижают эффект.
  • Ошибка: 10 серверов выдерживают в 10 раз больше. Из-за сетевых оверхедов масштабирование не линейно.

Ключевые выводы

  • Stateless — ключ к горизонтальному масштабированию.
  • Вертикальное упирается в потолок железа.
  • Оба подхода часто используются вместе.
  • Автоскейлинг экономит деньги, но требует настройки.

Термины урока

Vertical scaling (scale up): увеличение ресурсов одной машины.
Horizontal scaling (scale out): добавление дополнительных машин.
Stateless: отсутствие состояния в процессе приложения.
Load balancer: распределитель запросов между инстансами.

Связь с работой backend-разработчика

Начните с вертикального масштабирования, перейдите к горизонтальному, когда станет тесно. Не усложняйте раньше времени.

Мини-разбор реальной ситуации

Стартап переписывал сервис в микросервисы 'ради масштабирования'. Оказалось, что монолит на 16-ядерной машине справлялся бы ещё год. Архитектура усложнилась, и деплой стал медленнее.

Что запомнить

  • Stateless — фундамент horizontal scaling.
  • Вертикальное проще — начинайте с него.
  • Масштабирование — компромисс, не серебряная пуля.

Итог

Правильное масштабирование — это не всегда больше серверов, а часто — правильный выбор момента и стратегии.

Комментарии к уроку

Войдите, чтобы оставить комментарий.

Пока нет комментариев — будьте первым.