Как управлять параллельными действиями и миграциями GitHub в проектах Django + React

Я работаю над проектом Django + React, и мы используем GitHub Actions для CI/CD. Типичный рабочий процесс, когда поднимается запрос на изменение ветки, включает в себя запуск Selenium-тестов, для эффективного выполнения которых требуется большой набор данных в базе данных. Как только тесты пройдут, я объединяю ветку, запуская AWS CodePipeline, который проходит через стадии исходного кода, ручного утверждения и развертывания.

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

Текущая настройка

GitHub Actions - Выполняет запросы, запускает Selenium-тесты и применяет миграции к базе данных тестирования.

AWS CodePipeline - после прохождения тестов и слияния PR, он обрабатывает ручное утверждение и развертывание в производство.

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

Беспокойства

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

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

Мои вопросы

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

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

Как обеспечить плавную миграцию базы данных и предотвратить конфликты, когда несколько разработчиков вносят изменения, требующие обновления схемы?

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

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