#1343: Возможна ли конфигурация системы с выносом на отдельные инстансы сервисов postgresql, redis, backend-frontend?

Вопрос

Возможна ли конфигурация системы с выносом на отдельные инстансы сервисов postgresql, redis, backend-frontend?

Ответ

Такая конфигурация не рекомендуется.

Штатно мы тестируем/поддерживаем схему, когда база данных находится на том же сервере на том же сервере, , а резервное копирование производится на уровне всей виртуальной машины. В таком случае время восстановления = времени восстановления резервной копии виртуального диска, а глубина потерянных данных = время от даты создания резервной копии до времени восстановления.

Если в теории вынести сервер БД во внешний кластер на свой страх и риск, а приложение настроить на подключение к этому самому кластеру, то:

  1. Такая схема штатно не тестируется - поэтому возможны какие-то неожиданные нюансы, которые будет сложно решать.
  2. В случае сценария восстановления после сбоя есть риск (хоть и минимальный), что код приложения, который в контейнерах и версия базы будут отличаться. Особенно если отдельно восстановить данные на стороне БД, если там был сбой. А тогда сложно предсказать поведение приложения - сможет ли оно подняться и корректно прокатить все миграции или нет
  3. В случае поломки, резервирование БД не решает проблему восстановления пользовательских данных , которые лежат в докер волюмах swarmica_ugc, swarmica_uploads, swarmica_runtime, swarmica_cron_d . В теории, конечно, можно примонтировать их как сетевые диски, но тогда будет задержка при чтении/записи этих файлов на latency сети, а это уже будет негативно сказываться на скорости работы веб-интерфейса

Резюме: вместо прироста производительности и отказоустойчивости это даст задержку по сети и деградацию производительности.

Как показывает практика, гораздо надежнее устанавливать Swarmica в одну виртуальную машину достаточной мощности, которую просто бэкапить, просто восстанавливать в случае инцидента, а так же просто администрировать и обновлять.