раздел 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 до деплоя на одной странице.