В настоящее время я работаю с запуском, находящимся в переходной фазе.Непрерывное развертывание по кластеру серверов
У нас есть веб-приложение PHP и мы используем непрерывную интеграцию со стандартными модулями и регрессионными тестами (селен), выполняющимися над jenkins. У нас есть сервер разработки, на котором размещается новый код и промежуточный сервер, который поддерживает сборку, готовую к развертыванию на рабочий сервер. Способ развертывания на производственном сервере осуществляется с помощью рудиментарного сценария, который извлекает последнюю копию svn и перезаписывает изменения в каталоге htdocs. Любые изменения SQL применяются через функцию синхронизации из MySQL Workbench.
Эта настройка отлично подходит для очень простой среды, но теперь мы переходим от установки одного сервера к кластерам из-за большого трафика, и я столкнулся с головоломкой.
Моя главная забота как именно мы включаем развертывание из одного сервера в кластере серверов? Каждый сервер будет иметь свои собственные htdocs и базу данных SQL и при текущей настройке мне нужно будет выполнить сценарий на каждом сервере, который звучит как отвратительная вещь до . Я изучал марионетку, которая может использоваться для автоматизации задач sysadmin, но я не уверен, является ли это грозным подходом для развертывания новых сборок в кластере.
Моя вторая проблема связана с базой данных. Теперь мое предположение о том, что изменения кода будут применены немедленно, но поскольку у нас будет репликация master/slave db, моя проблема заключается в том, что изменения в базе данных будут занимать больше времени для распространения и, таким образом, ввести несоответствия во время развертывания. Как синхронизировать код AND и одновременно?
Моя третья проблема связана с автоматизацией изменений базы данных. Кто-нибудь знает, каким образом я могу автоматизировать процесс обновления схемы БД без ручного запуска синхронизации? В настоящий момент я должен вручную запустить инструмент синхронизации рабочего инструмента, тогда как я действительно ищу подход фиксации и забывания. Я фиксирую это, и изменения БД автоматически синхронизируются по настройкам dev и QA.
Какую структуру PHP вы используете? Предоставляет ли он инструменты для миграции? Кроме того, * Subversion *? Почему бы не раздавать что-то вроде 'git' или Mercurial? Subversion имеет тенденцию быть болезненно медленным на нетривиальных кодовых основах. – tadman
Я использую Zend Framework 1.12. Это было решение, сделанное коллегой перед тем, как я был открыт. – Rijndael