раздел 06

Масштабирование

Что это

Когда пользователей становится больше, Droplet начинает упираться в ресурсы. Масштабирование - как дать проекту больше мощности, не переписывая его.

Зачем

Чтобы продукт не падал под нагрузкой, но вы не платили за лишнее заранее. Растёте по факту.

Как понять, что упёрлись

Что упёрлосьСимптомыЧем смотреть
CPUМедленные ответы под нагрузкойhtop, графики в панели DigitalOcean
RAMПроцессы падают (OOM), система тормозитfree -h, htop
Диск«No space left»df -h

В панели DigitalOcean у каждого Droplet есть вкладка с графиками (Monitoring) - подключите и смотрите тренды, не гадайте.

Resize Droplet

Самый простой способ - увеличить ресурсы того же Droplet. В панели: Droplet - Resize. Есть два варианта:

  • CPU and RAM only - можно менять в обе стороны, диск не трогается. Быстро.
  • Disk, CPU and RAM - увеличивает и диск, но это необратимо (диск нельзя уменьшить обратно).

Resize требует выключения Droplet на короткое время.

Когда переходить на managed-БД и несколько серверов

  • Managed-база (Managed Databases). Когда база критична и нагружена, выносите её из Droplet в managed-сервис: DigitalOcean сам обновляет, бэкапит и следит за доступностью. Дороже, но снимает заботу о данных.
  • Несколько серверов. Когда одного Droplet мало даже после resize, ставят Load Balancer перед несколькими Droplet (горизонтальное масштабирование). Требует, чтобы приложение умело работать в нескольких копиях.

Большинство проектов сначала растят вертикально (resize), а к нескольким серверам и managed-БД приходят позже.

На что смотреть

  • Мониторинг - без графиков непонятно, что упёрлось.
  • Не держать тяжёлые задачи на маленьком Droplet (видео-кодирование, большие сборки, ML) - выносите отдельно или временно увеличивайте.
  • Snapshot перед resize - всегда.

Пример

Бот вырос, в Monitoring видно RAM под 90%. Делаете Snapshot, затем Resize (CPU and RAM only) с 1 ГБ до 2 ГБ - короткое выключение, и готово. Позже, если упрётся база, выносите её в Managed Database.

Антипаттерны

  • Масштабироваться вслепую без мониторинга.
  • Resize без снимка. Рискуете данными, а диск ещё и необратим.
  • Сразу строить кластер из нескольких Droplet «на вырост». Пока хватает resize - не усложняйте.

Что дальше

Финальная шпаргалка: путь от создания Droplet до деплоя на одной странице.