В последнем месте, где я работал, QA проводило тестирование в среде QA. Любые серьезные проблемы должны быть устранены, проверены и проверены перед развертыванием.
После того, как сборка была сертифицирована QA, команда поддержки производства отправила код в промежуточную среду, где клиент просматривает сайт и проверяет, что все соответствует требованиям.
Фактический запуск производства происходит в нерабочее время (после 9 часов вечера, если это аварийный ночной толчок, или с 5 часов утра до 8 часов утра, если это обычно запланированный запуск).
Сайт размещен на нескольких серверах, балансировка нагрузки которых осуществляется с помощью F5 Load Balancer:
- Пара серверов снята с производства,
- код установлен, а
- выполняется краткая проверка на серверах перед возвратом серверов в пул.
Это повторяется до тех пор, пока все серверы не будут обновлены до последней версии, и сайт не будет работать все время.
Этот процесс идеален, но бывают случаи, когда необходимо обновить базу данных.
Если это так, то есть два варианта, в зависимости от того, будет ли новая база данных нарушать работу сайта.
Если новая база данных несовместима с существующим интерфейсом, у вас нет другого выбора, кроме как иметь окно времени, когда сайт не работает.
Но если новая база данных совместима с существующим внешним интерфейсом, вы все равно можете вытолкнуть код без какого-либо фактического простоя, но для этого требуется два сервера производственной базы данных.
- Весь трафик направляется во вторую БД, и первый сервер БД извлекается.
- Первая БД обновляется и после завершения проверки возвращается в рабочий режим.
- Весь трафик направляется в первую БД, а вторая БД извлекается.
- Вторая БД обновляется и после завершения проверки возвращается в рабочий режим.
- Следующим шагом является частичное обновление, как описано выше.
Итак, подведем итог:
При развертывании изменений на действующем веб-сайте, как вы проверяете, что действующая система работает правильно? В лучшем случае это делается постепенно.
Какие инструменты вы используете? Ручные проверки для проверки правильности установки кода вместе с некоторыми основными автоматизированными тестами с использованием любого инструмента автоматизации. Мы использовали Selenium IDE.
Кто это делает? Администратор БД выполняет обновления БД, техподдержка / системные администраторы загружают / извлекают серверы и устанавливает код, а служба обеспечения качества или производственная поддержка выполняет ручные тесты и / или запускает Автоматизированные тесты.
Вы блокируете доступ к сайту на период тестирования? Если возможно, этого следует избегать любой ценой, особенно, как упоминал ранее Жиль, если это платный сайт.
Какое время простоя допустимо? Время простоя должно быть ограничено временем, когда пользователи будут реже всего использовать сайт, и должно быть менее чем за 3 часа.
Примечание: 3 часа очень щедро. После тренировки и репетиций, как упоминал jplindstrom, команда полностью остановит процесс и может войти и выйти иногда менее чем за час.
Надеюсь, это поможет!