Процесс выпуска / развертывания / обслуживания веб-службы

Я занимаюсь исследованием некоторых методов процесса выпуска нестандартных версий в среде веб-сервисов, работающей в режиме 24x7x365. Какие из ваших любимых методов выпуска кода из среды разработки в критически важную производственную среду? Это включает не только изменения кода, но и изменения схемы базы данных. Предположим, что все было протестировано и оценено в экосистеме среды разработки.

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

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

Спасибо!


person Community    schedule 09.12.2008    source источник


Ответы (2)


Есть несколько принципов, которые, на мой взгляд, важно соблюдать:

  1. Выпуск только из системы управления версиями (выделенная ветка или тег в основной ветке). Нет возможности выпустить прямо из рабочего каталога.
  2. Сделайте процессы push-to-production и push-to-staging полностью автоматизированными (включая обновления схемы)
  3. Имейте под рукой сценарий автоматического отката и не бойтесь использовать его, если что-то не так.
  4. Все изменения схемы базы данных выполняются с помощью инструмента с возможностью инкрементного повтора / отката (например, ActiveRecord или Liquibase). Требование полного восстановления БД должно быть редкостью.
  5. (для действительно больших кластеров) Выполняйте скользящие обновления; используйте два балансировщика нагрузки: один для выпуска версии N и один для выпуска N + 1. Непрерывное тестирование по мере того, как дополнительные узлы присоединяются к группе N + 1.
person Denis Hennessy    schedule 09.12.2008

Денис Хеннесси написал прекрасное резюме. Что касается инструментов, обратите внимание на Capistrano.

person Christian Lescuyer    schedule 09.12.2008