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

Preview:

Citation preview

КАК УСПЕШНО ЗАПУСТИТЬ ПРОЕКТ В ПРОДАКШЕН

ВЫ РАЗРАБОТАЛИ САЙТ

Click icon to add pictureИ хотите разместить его в интернете, заменив предыдущую версию

ДВА ИНСТРУМЕНТА УСПЕХА

Репетиция Автоматизация

СТЕЙДЖИНГ Прежде, чем выкладывать на продакшен, надо всё отладить

на стейджинге Такой же как продакшен Используется для тестирования перед выкладкой на

продакшен Автоматизированная конфигурация через 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 редиректы на новые роуты

ПОДДЕРЖКА

Click icon to add pictureПолучение обратной связи от пользователей очень важно в первые часы после запускаНастройте 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, устранили ошибку авторизации, несколько ошибок с платежами

Маркетинг

ВОПРОСЫ?

Click icon to add pictureПётр АдриановRuby Team LeadNTR Labpadrianov@sinergo.rupeter.adrianov@gmail.com31 марта 2016