Каков процесс обеспечения обновления локальной базы данных 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:
Дополнительно, согласно этой документации:
Приложения Django, запущенные в Google Cloud, работают на той же инфраструктуре, что и все продукты Google, что в целом повышает способность приложения адаптироваться к изменяющейся рабочей нагрузке.
Надеюсь, это поможет.