Каков процесс обеспечения обновления локальной базы данных Django на производстве?

В настоящее время я использую Django 5.1.1 и размещаю его в стандартной среде Google App Engine.

Когда я работаю над сайтом, у меня запущен Cloud SQL Auth Proxy. Это означает, что все изменения в базе данных происходят в облачной базе данных.

В дальнейшем я хочу иметь две базы данных: тестовую, локальную, и рабочую, которую я использую сейчас в облаке. Я предполагаю, что это можно сделать с помощью settings.py, проверяющего переменные окружения и устанавливающего нужную базу данных для использования. Затем, когда я разверну изменения в Google, я должен буду использовать консоль облака Google для запуска миграций, чтобы обновить структуру производственной базы данных.

Правильный ли это способ работы с отдельными базами данных для тестирования и производства? Есть ли какие-нибудь проблемы или другие вещи, о которых стоит беспокоиться при такой установке?

Я предполагаю, что это можно сделать, если в settings.py проверить переменные окружения и установить нужную базу данных для использования.

Да, используйте настройки, чтобы установить базу данных, которую вы хотите использовать: https://docs.djangoproject.com/en/5.1/ref/settings/#databases

Для этого хорошо подходит файл

Использование файла .env. В нем можно задать имя пользователя, пароль и т. д.


Большинству ответов на StackOverflow уже много лет, поэтому я хотел подтвердить, что это хороший способ справиться с данной ситуацией.

Да, это все еще работает так же. Нет причин менять это на самом деле.


Есть ли какие-либо проблемы или другие вещи, о которых следует беспокоиться при использовании этой установки, которую я описал?

Убедитесь, что локально и в производстве используется один и тот же движок (например, Postgres). Локально вы можете использовать другой, но иногда возникают небольшие различия.

Что касается автоматизированных тестов, то их можно запускать через SQLite, чтобы работать быстрее - но перед развертыванием их следует запустить один раз с текущим движком.


Вопрос в заголовке:

Каков процесс обеспечения обновления локальной базы данных Django на производстве?

Миграции делают это за вас: https://docs.djangoproject.com/en/5.1/topics/migrations/#workflow

Вы можете рассмотреть возможность использования базы данных Cloud SQL for MySQL или Cloud SQL for PostgreSQL, которая управляется и масштабируется компанией Google, а также поддерживается Django. Оба поддерживают Сервис миграции баз данных (DMS) из исходных баз данных (клиент mysql или клиент psql в качестве тестовой базы данных) в целевую базу данных Cloud SQL (Cloud SQL для MySQL или PostgreSQL в качестве производственной базы данных). DMS облегчает миграцию данных в Google Cloud.

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

image

Дополнительно, согласно этой документации:

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

Надеюсь, это поможет.

Вернуться на верх