#ruby-on-rails #version #production #rollout
#ruby-on-rails #версия #производство #развертывание
Вопрос:
Интересно, как люди справляются с постепенным внедрением функций и версий в производственную среду. сценарий заключается в том, что у вас есть две версии тестируемого кода, одна из которых уже находится в рабочей среде, а другая будет развернута, это общие проблемы..
- разные версии кода в одном приложении rails.
- различные версии приложения rails во время развертывания для пользователей.
- разные структуры базы данных между версиями
- перемещение данных по новым базам данных и серверам.
вот несколько идей для обсуждения вышеизложенного
- операторы if с константой, номера версий в именах M, V, C.
- баланс нагрузки на разные серверы приложений (как сделать sticky?), RVM
- сделайте старые и новые поля в таблицах временными или перенесите записи в новые таблицы или
базы данных. - нет простого способа перемещать данные между серверами.
Комментарии:
1. Вы когда-нибудь находили какую-нибудь полезную информацию по этому поводу?
Ответ №1:
Похоже, вам нужна хорошая стратегия ветвления и слияния. Если вы используете что-то вроде Git или SVN, то все, что находится в master или trunk, соответственно, должно быть готового к производству качества. Если вы сталкиваетесь с ситуациями, когда AbcController
все хорошо и готово к работе, но XyzController
не работает, то XyzController
, вероятно, требуется дополнительное тестирование, и оно еще не должно быть в master.
Миграции в rails также соответствуют этой политике, которая приводит к вашей структуре данных. Если вы считаете, что готовы к работе, то в вашей базе данных не должно быть существенных изменений. Возможно, вам нужно добавить столбец или функцию, но вы уже давно прошли массовый рефакторинг базы данных.
Наконец, загрузка / обновление данных — это проблема в любой ситуации миграции. По моему опыту, это включает в себя написание SQL-скриптов для выполнения перемещений или обновления базы данных для какой-либо новой функции. Эти SQL-скрипты также должны находиться под вашим управлением исходным кодом. Rails может упростить это, написав ваши сценарии миграции в самом файле миграции. В зависимости от вашей конкретной ситуации это может сработать.
Комментарии:
1. сценарий заключается в том, что у вас есть две версии тестируемого кода, одна уже в производстве, а другая в развертывании, однако вы постепенно внедряете новую версию, что означает, что в какой-то момент у вас будут пользователи с разными версиями кода, возможно, с разными требованиями к базам данных.
2. Я не думаю, что это отвечает на вопрос. Распространение обновлений фреймворка, функций и т.д. на десять процентов вашей пользовательской базы идеально подходит для минимизации риска.