У меня есть проект Laravel (API для приложения iOS), и в настоящее время я устанавливаю сервер непрерывной интеграции (Jenkins) для обработки развертываний в AWS. Для этого я использую такие инструменты, как Capistrano, Packer и Terraform.Непрерывная интеграция/развертывание и базы данных
И в настоящее время приложение имеет две среды: постановка и производство.
Тем не менее, я пытаюсь найти хороший способ работы с базами данных в этой системе.
В принципе, я себе трубопровод нечто вроде:
- Извлекает код
- запускать тесты
- развертывания Поэтапное МАСС и стоячую новой инфраструктуры
- QA и развертывание МАСС производства
Тем не менее, между этапами 3 и 4 мне бы хотелось сделать «сухой ход» производственного развертывания - wh Это означает, что вы пытаетесь выполнить миграцию и имеете доступ к потенциально большому набору данных, который будет иметься в производстве.
Так что я вижу 2 варианта:
1) Когда мы готовы QA, экспортировать Продукцию БД и импортировать его в постановщики. Затем запустите «процесс» (миграции, terraform, упаковщик и т. Д.). Если все пойдет хорошо, то перейти к производству
ПРОФИ:
- Вы все попробовать на прямом наборе данных производства, поэтому у вас есть уверенность вещи будут работать
- Вы работать с большие наборы данных и проверить, есть ли какие-либо узкие места в результате там быть большое количество записей, по сравнению с типичной промежуточной средой
СВОДОМ:
- В конце концов, производственная база данных может быть очень большой, и экспорт это ежедневно или несколько раз в день, может стать очень медленным
- Аналогично выше точки, это делает для очень медленной непрерывной интеграции
2) Вместо импорта из производства напишите конфигурируемые сеялки для всех моделей баз данных и запустите их по мере необходимости для обеспечения качества.
ПРОФИ:
- Вы можете Seed базы данных с малыми или очень большими наборами данных, в зависимости от ваших потребностей для конкретного развертывания
- сеялок только простой сценарий и могут быть запущены очень быстро
СВОД:
Вы должны постоянно обновлять сеялки при любых изменениях Модели, которые вы делаете.
В общем, этот процесс кажется более подверженным человеческой ошибке, чем экспорт фактического набора данных из Production.
Как люди в целом подходят к этому процессу?
Большое спасибо за ваш ввод! Я фактически делаю все остальные шаги почти так же, как вы их описали (AMI, Terraform, Blue Green и т. Д.). Хорошо, что я, вероятно, должен использовать БД Prod и решать только проблемы времени, если это действительно становится проблемой. И прямо сейчас, это, конечно, достаточно маленькая БД, где это разумно. – djt