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

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

Upload: ntr-lab

Post on 14-Jan-2017

417 views

Category:

Business


1 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

продакшен Автоматизированная конфигурация через Chef, Puppet, ... Автоматизированная выгрузка через Capistrano

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

ОТСЛЕЖИВАНИЕ ОШИБОК Airbrake ловит исключения Vexor запускает модульные тесты при каждом пуше в

репозиторий Hound следит за соблюдением style guide & best practices New Relic отслеживает проблемы производительности brakeman проверяет компоненты на уязвимости и советует

обновить Логи Код храним на github, чтобы все эти интеграции стали

возможными

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

МИГРАЦИЯ ДАННЫХ Классы адаптеры: LegacyUser.find(id).migrate -> User.create(id:

id, name: legacy_user.name, password: legacy_user.password, ...) Дамп базы с сервера, где редактировались данные Копирование файлов Создаём bash-скрипт, который делает миграцию Запускаем его на продакшене внутри screen

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

ТЕСТИРОВАНИЕ Нагрузочное. Собрать все основные URL'ы и погонять их

программой siege или хотя бы ab. Функциональное. Представить себя пользователем и

попытаться воспользоваться системой. Безопасность. Убедиться, что используете компоненты без

известных уязвимостей.

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

ПЕРЕКЛЮЧЕНИЕ DNS Reverse proxy - чтобы мгновенно переключить. Apache

mod_proxy, nginx ngx_http_proxy_module Отредактировать настройки DNS Если нечего переключать, то можно перед выгрузкой

основного сайта сделать статический сайт-заглушку

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

РЕДИРЕКТЫ Пройдитесь по логам старого веб-сервера и соберите URL’ы Сделайте 301 редиректы на новые роуты

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

ПОДДЕРЖКА

Click icon to add pictureПолучение обратной связи от пользователей очень важно в первые часы после запускаНастройте Zendesk

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

КОНТРОЛЬНЫЙ СПИСОК Есть доступы ко всем серверам и сервисам: приложение, БД,

файлы, DNS, почта, ... Работает скрипт миграции данных Работает скрипт запуска Работает функционал сайта Работают системы отслеживания ошибок Согласованы дата и время запуска ... - любые ваши пункты. Критерий: чтобы был доволен

пользователь, вы и заказчик. Минимизировать сюрпризы.

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

ЧТО ДОЛЖНО РАБОТАТЬ ПОСЛЕ ЗАПУСКА? (MVP) Регистрация Авторизация Оплата Основная функция Поддержка пользователей - Zendesk

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

ДАТА ЗАПУСКА Когда вы на 100% уверены, что MVP будет протестирован к

этому времени. Можете дежурить в это время Благоприятный момент для бизнеса

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

СКРИПТ ЗАПУСКА Бэкапит свежайшее состояние БД Запускает скрипт миграции данных Бэкапит состояние БД сразу после миграции (что-то может

измениться за это время) Запускает все необходимые сервисы Включает обратное проксирование со старого сервера

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

РЕПЕТИЦИЯ Это как запуск, только без финального переключения на

новый сайт. Репетировать столько раз, пока время выполнения действий

не станет константой.

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

ИНСТРУКЦИЯ ЗАПУСКА Перед запуском обязательно напишите себе инструкцию,

чтобы не пришлось думать Задеплоить новую конфигурацию и код (chef exec bundle exec

knife solo cook [email protected]; cap production deploy) Запустить скрипт запуска (bin/go-live) на продакшене внутри

screen Убедиться по контрольному списку, что всё работает, как

ожидается Дежурство - техподдержка и команда разработки. Получить

обратную связь от пользователей и исправить критические баги. Быть готовыми быстро откатиться обратно.

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

ПОСЛЕ ЗАПУСКА Исправление багов - 1-2 недели.

Например: Мы добавили HTTPS, устранили ошибку авторизации, несколько ошибок с платежами

Маркетинг

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

ВОПРОСЫ?

Click icon to add pictureПётр АдриановRuby Team LeadNTR [email protected]@gmail.com31 марта 2016