Одна общая база вместо девяти отдельных
Каждое приложение из каталога умеет поднять себе свой Postgres. Девять приложений — девять баз, девять резервных копий, девять обновлений. Есть режим общей.
Почти любой Helm-чарт из каталога умеет поднять себе базу данных. Это удобно для одного приложения и превращается в проблему на десятом.
Девять приложений с собственными базами — это девять экземпляров Postgres в кластере. Девять наборов настроек. Девять расписаний резервного копирования, из которых работают не все. Девять версий, которые расходятся. И девять раз оплаченная память под то, что могло быть одним процессом.
Поэтому в каталоге есть режим общей базы: приложения подключаются к одному экземпляру, имя которого задаётся при установке.
Что это даёт
Одно место для резервного копирования. Это главное. Резервная копия, которая делается в одном месте по одному расписанию, имеет шанс быть проверенной; девять копий в девяти местах не проверяет никто.
Одна версия. Обновление базы становится одной операцией с одним окном, а не девятью операциями, которые никогда не делаются одновременно.
Понятный расход. Память и диск под базы видны одной цифрой, а не размазаны по namespace-ам.
Чего это стоит
Связности. Общий экземпляр — общая точка отказа: его недоступность останавливает все приложения, которые в него смотрят, а не одно.
И общий бюджет производительности: приложение, которое неаккуратно обращается к базе, теперь мешает соседям.
Когда стоит выбирать общую, а когда нет
Общая подходит для набора внутренних сервисов с невысокой нагрузкой — а это подавляющее большинство того, для чего вообще ставят каталог приложений. Панель мониторинга, вики, трекер, автоматизация, учёт паролей — они почти не нагружают базу и очень нагружают эксплуатацию, если каждый тянет свою.
Отдельная база нужна там, где приложение действительно грузит хранилище, где к нему особые требования по восстановлению или где его нельзя останавливать вместе с остальными.
Правильная стратегия обычно смешанная: общая база для мелочи и отдельные для одного-двух приложений, которые этого заслуживают.
Почему это выбор при установке, а не потом
Потому что переезд приложения с собственной базы на общую — это миграция данных, и её никто не делает без причины.
Значит, решение надо принимать в момент установки, когда данных ещё нет. Именно поэтому режим общей базы — параметр команды установки, а не настройка, которую можно поменять позже.
Общее правило, которое здесь видно
Каталог не пытается решить за вас, но делает правильный вариант доступным одной командой.
Значение по умолчанию — то, что делает сам чарт, то есть своя база. Это не потому, что мы считаем такой вариант лучшим, а потому что он ожидаемый: приложение ведёт себя так, как описано в его документации.
Отклонение от ожидаемого поведения должно быть явным. Поэтому общая база включается флагом и остаётся видимой в истории команд.