Архитектура / Дизайн — Где хранить конфигурацию приложения?

Я создаю веб-приложение в Laravel.
У меня есть много вариантов конфигурации приложения, таких как:

  • цены на платные планы
  • максимальное количество дней в пробном режиме
  • максимальное количество баллов, которое может иметь свободный пользователь
  • адрес отправителя электронной почты по умолчанию

Эти параметры используются во всем приложении и должны быть доступны большую часть времени. Я думаю о наличии таблицы базы данных «config» для хранения и объекта config для доступа к данным … Это было бы хорошим решением? Если нет, как еще я должен это сделать?

1

Решение

Обычно есть две возможности для такой конфигурации:

Какой из них лучше подходит для вашего случая, зависит от:

  • Как часто меняется конфигурация?

Почти никогда, тогда иди за файлами.
Довольно часто, затем перейти на БД

  • Кто должен быть в состоянии изменить конфиг?

Только ваш админ с доступом к CLI / SSH, а затем перейти к файлам.
Большая группа людей, а затем пойти на БД

  • Изменяется ли конфиг для каждого сервера?

Если да, то, возможно, вы можете использовать методы обнаружения среды из стандартного Config Laravels

  • Простые значения (достаточно файлов) или сложные «модели» (БД)

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


В моем текущем приложении я использую оба:

Конфиги плоских файлов содержат: лимиты файлов, которые пользователь может загрузить; размер миниатюр по умолчанию; доступные языки; некоторые сторонние токены; почтовые обратные адреса.

Я полагаю, что эти вещи будут меняться только время от времени и всегда нуждаются в моем (административном) вмешательстве в любом случае.

В БД есть таблицы цен на пакеты; условия награждения и связанные с ними вознаграждения.

Эти значения владелец сайта (мой клиент) может легко изменить сам, и они также содержат структурированные метаданные. Например. как вручить награду, как она называется и переводится и т. д.

2

Другие решения

Других решений пока нет …