Что меняет этот выбор
Выбор меняет границы конкуренции за ресурсы, сетевого взаимодействия и отказов. Разделение полезно только тогда, когда эксплуатационная выгода оправдывает ещё один хост, путь учётных данных и процедуру восстановления.
Сравните факторы решения
| Фактор | API и база данных на одном VPS | Отдельные VPS для приложения и базы данных |
|---|---|---|
| Путь запроса | Локальное соединение избегает сетевого перехода между хостами. | Каждый запрос зависит от сетевого маршрута и его аутентификации. |
| Конкуренция за ресурсы | API, воркеры и база данных совместно используют CPU, RAM и активность диска. | У каждого хоста отдельный бюджет ресурсов. |
| Граница отказа | Одно событие на хосте может затронуть приложение и базу данных вместе. | Отказ хоста приложения не обязан останавливать базу данных, но для работы сервиса нужны оба. |
| Область доступа | Одна административная граница может достигать обоих компонентов. | Администрирование базы данных может использовать более узкую границу хоста и сети. |
| Планирование соединений | Локальным пулам всё ещё нужны лимиты для API и воркеров. | Пулам нужны лимиты плюс решения по сетевому тайм-ауту и повторным попыткам. |
| Восстановление | Одна пересборка должна восстановить обе роли и их совместимые версии. | Каждое восстановление и соединение приложения с базой данных должны быть отработаны вместе. |
Когда каждый вариант оправдывает себя
Оставляйте небольшой стек объединённым, пока измеряемое пересечение укладывается в резерв и одна граница обслуживания приемлема. Разделяйте базу данных, когда её требования к ресурсам, доступу или восстановлению становятся независимо важными.