Где должен быть сервер БД и откуда его запускать скрипты обновлений?

В настоящее время у меня есть веб-приложение и база данных на одном сервере. Я перемещаю базу данных на новый сервер, который определен как база данных. Теперь у меня есть ночные сценарии, которые выполняются в веб-приложении, которые вставляют и обновляют данные для приложения из нашей системы ERP. Должны ли скрипты, выполняющие этот импорт, запускаться с сервера базы данных или с сервера приложений? Для меня имеет смысл хранить всю логику приложения вместе, но с точки зрения производительности имеет больше смысла (я думаю) иметь скрипты, которые обновляют базу данных каждую ночь, чтобы запускаться с реального сервера базы данных.

Может или не может быть необходимо для вопроса, но у меня есть веб-сайт и 3 веб-приложения, которые все конвертируются из локальных баз данных в новую центральную базу данных.

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

Дополнительная информация, если это полезно: все приложения Python (TG и Flask), запущенные из postgresql 9

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

1 ответ

Решение

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

Я голосую за то, что легче всего поддерживать. Две причины сохранить сценарии на вашем сервере приложений:

1) Меньше изменений в вашем существующем способе ведения дел

2) Весь ваш код (включая эти скрипты) находится в одном месте. Это может иметь преимущества в управлении версиями / развертывании.

А для брандмауэра /DMZ: чем меньше доверия между базой данных и приложением, тем лучше. Если вы можете разместить свой сервер базы данных за брандмауэром и разрешить порты PostgreSQL (по умолчанию 5432/tcp) только с вашего сервера приложений в DMZ, тогда взломанная учетная запись приложения должна будет пройти через порт PostgreSQL для дальнейшего проникновения или мусор ваши данные.

Затем вы можете дополнительно ограничить приложение на уровне базы данных с помощью:

1) Минимальные права доступа к базе данных приложения (только при необходимости, выберите...)

2) Обновляемые представления (метод, который может обеспечить более ограниченное обновление данных)

3) Триггеры при обновлении (еще один метод, который может ограничивать обновления)

Безопасность в слоях:)

Другие вопросы по тегам