Перейти к содержанию

·Naasson Apps

Одна общая база вместо девяти отдельных

Каждое приложение из каталога умеет поднять себе свой Postgres. Девять приложений — девять баз, девять резервных копий, девять обновлений. Есть режим общей.

Почти любой Helm-чарт из каталога умеет поднять себе базу данных. Это удобно для одного приложения и превращается в проблему на десятом.

Девять приложений с собственными базами — это девять экземпляров Postgres в кластере. Девять наборов настроек. Девять расписаний резервного копирования, из которых работают не все. Девять версий, которые расходятся. И девять раз оплаченная память под то, что могло быть одним процессом.

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

Что это даёт

Одно место для резервного копирования. Это главное. Резервная копия, которая делается в одном месте по одному расписанию, имеет шанс быть проверенной; девять копий в девяти местах не проверяет никто.

Одна версия. Обновление базы становится одной операцией с одним окном, а не девятью операциями, которые никогда не делаются одновременно.

Понятный расход. Память и диск под базы видны одной цифрой, а не размазаны по namespace-ам.

Чего это стоит

Связности. Общий экземпляр — общая точка отказа: его недоступность останавливает все приложения, которые в него смотрят, а не одно.

И общий бюджет производительности: приложение, которое неаккуратно обращается к базе, теперь мешает соседям.

Когда стоит выбирать общую, а когда нет

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

Отдельная база нужна там, где приложение действительно грузит хранилище, где к нему особые требования по восстановлению или где его нельзя останавливать вместе с остальными.

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

Почему это выбор при установке, а не потом

Потому что переезд приложения с собственной базы на общую — это миграция данных, и её никто не делает без причины.

Значит, решение надо принимать в момент установки, когда данных ещё нет. Именно поэтому режим общей базы — параметр команды установки, а не настройка, которую можно поменять позже.

Общее правило, которое здесь видно

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

Значение по умолчанию — то, что делает сам чарт, то есть своя база. Это не потому, что мы считаем такой вариант лучшим, а потому что он ожидаемый: приложение ведёт себя так, как описано в его документации.

Отклонение от ожидаемого поведения должно быть явным. Поэтому общая база включается флагом и остаётся видимой в истории команд.