КАК УСПЕШНО ЗАПУСТИТЬ
ПРОЕКТ В ПРОДАКШЕН
ВЫ РАЗРАБОТАЛИ САЙТ
И хотите разместить его в
интернете, заменив
предыдущую версию
ДВА ИНСТРУМЕНТА УСПЕХА
Репетиция Автоматизация
СТЕЙДЖИНГ
 Прежде, чем выкладывать на продакшен, надо всё отладить на стейджинге
 Такой же как продакшен
 Используется для тестирования перед выкладкой на продакшен
 Автоматизированная конфигурация через Chef, Puppet, ...
 Автоматизированная выгрузка через Capistrano
ОТСЛЕЖИВАНИЕ ОШИБОК
 Airbrake ловит исключения
 Vexor запускает модульные тесты при каждом пуше в репозиторий
 Hound следит за соблюдением style guide & best practices
 New Relic отслеживает проблемы производительности
 brakeman проверяет компоненты на уязвимости и советует обновить
 Логи
 Код храним на github, чтобы все эти интеграции стали возможными
МИГРАЦИЯ ДАННЫХ
 Классы адаптеры: LegacyUser.find(id).migrate -> User.create(id: id, name:
legacy_user.name, password: legacy_user.password, ...)
 Дамп базы с сервера, где редактировались данные
 Копирование файлов
 Создаём bash-скрипт, который делает миграцию
 Запускаем его на продакшене внутри screen
ТЕСТИРОВАНИЕ
 Нагрузочное. Собрать все основные URL'ы и погонять их программой siege
или хотя бы ab.
 Функциональное. Представить себя пользователем и попытаться
воспользоваться системой.
 Безопасность. Убедиться, что используете компоненты без известных
уязвимостей.
ПЕРЕКЛЮЧЕНИЕ DNS
 Reverse proxy - чтобы мгновенно переключить. Apache mod_proxy,
nginx ngx_http_proxy_module
 Отредактировать настройки DNS
 Если нечего переключать, то можно перед выгрузкой основного сайта
сделать статический сайт-заглушку
РЕДИРЕКТЫ
 Пройдитесь по логам старого веб-сервера и соберите URL’ы
 Сделайте 301 редиректы на новые роуты
ПОДДЕРЖКА
Получение
обратной связи от
пользователей
очень важно в
первые часы после
запуска
Настройте Zendesk
КОНТРОЛЬНЫЙ СПИСОК
 Есть доступы ко всем серверам и сервисам: приложение, БД, файлы, DNS,
почта, ...
 Работает скрипт миграции данных
 Работает скрипт запуска
 Работает функционал сайта
 Работают системы отслеживания ошибок
 Согласованы дата и время запуска
 ... - любые ваши пункты. Критерий: чтобы был доволен пользователь, вы и
заказчик. Минимизировать сюрпризы.
ЧТО ДОЛЖНО РАБОТАТЬ ПОСЛЕ
ЗАПУСКА? (MVP)
 Регистрация
 Авторизация
 Оплата
 Основная функция
 Поддержка пользователей - Zendesk
ДАТА ЗАПУСКА
 Когда вы на 100% уверены, что MVP будет протестирован к этому времени.
 Можете дежурить в это время
 Благоприятный момент для бизнеса
СКРИПТ ЗАПУСКА
 Бэкапит свежайшее состояние БД
 Запускает скрипт миграции данных
 Бэкапит состояние БД сразу после миграции (что-то может измениться за это
время)
 Запускает все необходимые сервисы
 Включает обратное проксирование со старого сервера
РЕПЕТИЦИЯ
 Это как запуск, только без финального переключения на новый сайт.
 Репетировать столько раз, пока время выполнения действий не станет
константой.
ИНСТРУКЦИЯ ЗАПУСКА
 Перед запуском обязательно напишите себе инструкцию, чтобы не пришлось
думать
 Задеплоить новую конфигурацию и код (chef exec bundle exec knife solo cook
deploy@123.123.123.123; cap production deploy)
 Запустить скрипт запуска (bin/go-live) на продакшене внутри screen
 Убедиться по контрольному списку, что всё работает, как ожидается
 Дежурство - техподдержка и команда разработки. Получить обратную связь
от пользователей и исправить критические баги. Быть готовыми быстро
откатиться обратно.
ПОСЛЕ ЗАПУСКА
 Исправление багов - 1-2 недели.
Например: Мы добавили HTTPS, устранили ошибку авторизации, несколько
ошибок с платежами
 Маркетинг
ВОПРОСЫ?
Пётр Адрианов
RubyTeam Lead
NTR Lab
padrianov@sinergo.ru
peter.adrianov@gmail.com
31 марта 2016

Как успешно запустить проект в продакшен. Пётр Адрианов

  • 1.
  • 2.
    ВЫ РАЗРАБОТАЛИ САЙТ Ихотите разместить его в интернете, заменив предыдущую версию
  • 3.
  • 4.
    СТЕЙДЖИНГ  Прежде, чемвыкладывать на продакшен, надо всё отладить на стейджинге  Такой же как продакшен  Используется для тестирования перед выкладкой на продакшен  Автоматизированная конфигурация через Chef, Puppet, ...  Автоматизированная выгрузка через Capistrano
  • 6.
    ОТСЛЕЖИВАНИЕ ОШИБОК  Airbrakeловит исключения  Vexor запускает модульные тесты при каждом пуше в репозиторий  Hound следит за соблюдением style guide & best practices  New Relic отслеживает проблемы производительности  brakeman проверяет компоненты на уязвимости и советует обновить  Логи  Код храним на github, чтобы все эти интеграции стали возможными
  • 9.
    МИГРАЦИЯ ДАННЫХ  Классыадаптеры: LegacyUser.find(id).migrate -> User.create(id: id, name: legacy_user.name, password: legacy_user.password, ...)  Дамп базы с сервера, где редактировались данные  Копирование файлов  Создаём bash-скрипт, который делает миграцию  Запускаем его на продакшене внутри screen
  • 10.
    ТЕСТИРОВАНИЕ  Нагрузочное. Собратьвсе основные URL'ы и погонять их программой siege или хотя бы ab.  Функциональное. Представить себя пользователем и попытаться воспользоваться системой.  Безопасность. Убедиться, что используете компоненты без известных уязвимостей.
  • 11.
    ПЕРЕКЛЮЧЕНИЕ DNS  Reverseproxy - чтобы мгновенно переключить. Apache mod_proxy, nginx ngx_http_proxy_module  Отредактировать настройки DNS  Если нечего переключать, то можно перед выгрузкой основного сайта сделать статический сайт-заглушку
  • 12.
    РЕДИРЕКТЫ  Пройдитесь пологам старого веб-сервера и соберите URL’ы  Сделайте 301 редиректы на новые роуты
  • 13.
    ПОДДЕРЖКА Получение обратной связи от пользователей оченьважно в первые часы после запуска Настройте Zendesk
  • 14.
    КОНТРОЛЬНЫЙ СПИСОК  Естьдоступы ко всем серверам и сервисам: приложение, БД, файлы, DNS, почта, ...  Работает скрипт миграции данных  Работает скрипт запуска  Работает функционал сайта  Работают системы отслеживания ошибок  Согласованы дата и время запуска  ... - любые ваши пункты. Критерий: чтобы был доволен пользователь, вы и заказчик. Минимизировать сюрпризы.
  • 15.
    ЧТО ДОЛЖНО РАБОТАТЬПОСЛЕ ЗАПУСКА? (MVP)  Регистрация  Авторизация  Оплата  Основная функция  Поддержка пользователей - Zendesk
  • 16.
    ДАТА ЗАПУСКА  Когдавы на 100% уверены, что MVP будет протестирован к этому времени.  Можете дежурить в это время  Благоприятный момент для бизнеса
  • 17.
    СКРИПТ ЗАПУСКА  Бэкапитсвежайшее состояние БД  Запускает скрипт миграции данных  Бэкапит состояние БД сразу после миграции (что-то может измениться за это время)  Запускает все необходимые сервисы  Включает обратное проксирование со старого сервера
  • 18.
    РЕПЕТИЦИЯ  Это какзапуск, только без финального переключения на новый сайт.  Репетировать столько раз, пока время выполнения действий не станет константой.
  • 19.
    ИНСТРУКЦИЯ ЗАПУСКА  Передзапуском обязательно напишите себе инструкцию, чтобы не пришлось думать  Задеплоить новую конфигурацию и код (chef exec bundle exec knife solo cook deploy@123.123.123.123; cap production deploy)  Запустить скрипт запуска (bin/go-live) на продакшене внутри screen  Убедиться по контрольному списку, что всё работает, как ожидается  Дежурство - техподдержка и команда разработки. Получить обратную связь от пользователей и исправить критические баги. Быть готовыми быстро откатиться обратно.
  • 20.
    ПОСЛЕ ЗАПУСКА  Исправлениебагов - 1-2 недели. Например: Мы добавили HTTPS, устранили ошибку авторизации, несколько ошибок с платежами  Маркетинг
  • 21.
    ВОПРОСЫ? Пётр Адрианов RubyTeam Lead NTRLab padrianov@sinergo.ru peter.adrianov@gmail.com 31 марта 2016