Запуск новой версии приложения Rails

#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. Я не думаю, что это отвечает на вопрос. Распространение обновлений фреймворка, функций и т.д. на десять процентов вашей пользовательской базы идеально подходит для минимизации риска.