Процесс выкладки вёрстки 
    просто, быстро, безопасно 

 Евгения Фирсова, Яндекс.Деньги 
I. Подготовка к выкладке 
Что выкладываем? 

Параллельные разработка и тестирование – «пакеты задач». 
Последовательное обновление production – релиз. 


Кодирование в названии: 
•  код «пакета» 
   –  ответ на вопрос «что?» 
•  номер релиза 
   –  ответ на вопрос «когда?» 
Что выкладываем? 

Из чего состоит релиз: 
•  Набор файлов и данных, реализующих функционал; 
•  Описание релиза: 
   –    список задач/требований; 
   –    список задействованных компонент, файлов, источников данных; 
   –    отчёт о тестировании; 
   –    список некритичных для выкладки багов; 
   –    инструкция по выкладке; 
   –    план выкладки. 
Что выкладываем? 

Из чего состоит релиз: 
•  Набор файлов и данных, реализующих функционал; 
•  Описание релиза: 
   –    список задач/требований; 
   –    список задействованных компонент, файлов, источников данных;  эксплуатации 
   –    отчёт о тестировании;  заказчику, эксплуатации 
   –    список некритичных для выкладки багов;  заказчику 
   –    инструкция по выкладке;  эксплуатации 
   –    план выкладки.  эксплуатации 
Когда выкладываем? 

Условия: 
•  Релиз успешно прошёл тестирование. 
   –  Найденные баги не являются критичными для выкладки. 
•  Заказчик принял результат и дал согласие на выкладку. 
   –  Да, мне это нравится. 
   –  Да, сейчас правильное время. 
•  День/время разрешены для выкладки. 
   –  Возможные ограничения: вечер, пятница, праздники... 
•  Есть технологическая возможность выполнить выкладку. 
Предупреждён – значит вооружён 

Служба поддержки должна знать: 
•  день и время выкладки (когда ждать жалобы?); 
•  список видимых пользователям изменений; 
•  список известных проблем; 
•  список возможных проблем: 
   –  что именно может произойти; 
   –  как скоро могут возникнуть проблемы. 
Служба эксплуатации должна знать: 
•  день и время выкладки (не мешаем ли другим?); 
•  компоненты, реализующие функционал (где логи?); 
•  список узких мест. 
Стакан наполовину пуст 

Что может пойти «не так»: 
•  проблемы в процессе выкладки: 
   –  сетевые (пропала сеть, пропали доступы, ...); 
   –  технологические («умер» cvs, «глючит» cms, ...); 
   –  человеческий фактор (не то выложили, забыли обновить данные, ...); 
•  проблемы сразу после выкладки: 
   –  всё сломалось; 
   –  не сломалось, но и не работает или работает неправильно; 
•  отсроченные проблемы. 
Стакан наполовину пуст 

Что можно сделать заранее: 
•  подготовиться к экстренному откату: 
   –  технологически подготовиться к выполнению откатов; 
   –  подготовить пошаговую инструкцию по выполнению отката 
      выкладки: 
      •  «подготовить» – значит записать; 
      •  «пошаговую» – значит подробную; 

•  научится скрывать функционал от пользователей: 
   –  предусмотреть альтернативную версию функционала; 
   –  подготовить «рубильник». 
«Рубильник» 

«Рубильник» – инструмент для изменения нормального 
поведения портала: 
•  изменение внешнего вид страниц; 
•  настройка редиректа со страниц; 
•  ограничение доступа к страницам. 

При выкладке «рубильник» устанавливается в состояние off: 
•  проверяем целостность портала; 
•  проверяем доступный только нам функционал. 

При тестировании релиза «рубильник» тестируется отдельно. 
II. Процесс выкладки 
Способы выкладки 

Простые способы: 
•  Пофайловое копирование: 
   + просто 
   – возможна потеря целостности 
   – медленно 
•  Копирование в отдельную папку + symlink: 
   + очевидное хранилище предыдущей версии 
•  Выкладка на временно недоступные пользователям хосты. 
Способы выкладки 

Правильные способы: 
•  Выкладка из CVS: 
   + гибкость 
   – обязательное участие эксплуатации 
   ? контроль над сохранностью изменений между релизами 
•  Выкладка из CVS скриптами: 
   + формирование истории выкладок 
   + последняя проверка изменений – просмотри diff’ов 
   + фиксирование изменений – сохранение/рассылка выдачи CVS 
•  Выкладка пакетами: 
   + надёжно 
   – сложный процесс подготовки пакета 
   – обязательное участие эксплуатации 
Выкладка на несколько хостов 

Допустима ли рассинхронизация в процессе выкладки? 
•  Да: 
   –  никто не заметит; 
   –  кто‐то может заметить, но зато мы протестируем; 
•  Нет: 
   –  подготовка версии в отдельных папках + переключение symlink’ов: 
       •  по расписанию; 
       •  по получению распоряжения. 


Открытый вопрос – синхронизация времени. 
Отслеживание 

В процессе и сразу после выкладки желательно: 
•  разработчикам, тестерам: 
   –  проверять изменения в ручном режиме; 
   –  запускать автоматические тесты; 
•  эксплуатации: 
   –  анализировать логи; 
   –  следить за нагрузкой на сеть/железо; 
•  службе поддержки: 
   –  мониторить активность пользователей и их жалобы. 
III. После выкладки 
Проверка результата 

Способы проверки: 
•  ручное тестирование; 
•  автоматические тесты; 
•  анализ логов; 
•  отслеживание изменений в поведении пользователей. 

Контрольное время: 
•  можем 100% проверить самостоятельно ~ 2 часа; 
•  отложенный эффект: 
   –  ждём, сколько потребуется; 
   –  не ждём, но помним. 
Всё пропало! 

Если после выкладки обнаружились проблемы: 
1.  Есть возможность откатить изменения? Откатываем! 
2.  Есть возможность воспользоваться «рубильником»? 
3.  Есть возможность быстро выпустить хот‐фикс? 
Выводы 

Выкладка вёрстки – это: 
•  сложно: 
   –  требует серьёзной подготовительной работы; 
   –  задействовано много людей; 
•  долго: 
   –  процесс может быть «размазан» по времени; 
   –  оценка результатов – с большой задержкой; 
•  чревато: 
   –  ошибки могут наслаиваться одна на другую; 
   –  на исправление уйдёт не меньше времени, чем на разработку. 
Евгения Фирсова 

https://money.yandex.ru 
e‐mail: saigo@yamoney.ru 

More Related Content

PDF
10M tests per day
PPT
Let's Talk About Junit 5
PDF
Никита Галкин "Ловушки микросервисной архитектуры"
PDF
Как устроен мониторинг в Badoo
PPTX
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
PDF
Всему своё время / Роман Ивлиев (Банки.ру)
PPTX
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
PDF
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
10M tests per day
Let's Talk About Junit 5
Никита Галкин "Ловушки микросервисной архитектуры"
Как устроен мониторинг в Badoo
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
Всему своё время / Роман Ивлиев (Банки.ру)
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...

What's hot (20)

PPTX
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
PDF
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
PPTX
Создаем команду автотестирования в нетипичных условиях, Василий Никишин, Par...
PDF
SymfonyConf IV.2016 - Реанимация проектов на Symfony
PPTX
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
PDF
Database First! О распространённых ошибках использования РСУБД
PDF
Быстрое расширение Robot Framework под свои нужды с использованием Python
PDF
Как автоматизировать комплексные системы
PDF
#noBackend, или Как выжить в эпоху толстеющих клиентов
PDF
Практика разработки веб-серверов на Rust
PDF
Joker2014
PDF
NoSQL — неспроста ли это "ЖЖЖ"?
PDF
Что такое Robot Framework?
PDF
Robot Framework: универсальный инструмент автоматизатора
PDF
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
PDF
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
PDF
Артём Ерошенко «Рецепт приготовления облачных тестингов»
PDF
Хорошо поддерживаемое приложение
PPTX
Контроль качества и сопровождение программ в реальном времени
PDF
Олег Бартунов и Иван Панченко
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
Создаем команду автотестирования в нетипичных условиях, Василий Никишин, Par...
SymfonyConf IV.2016 - Реанимация проектов на Symfony
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
Database First! О распространённых ошибках использования РСУБД
Быстрое расширение Robot Framework под свои нужды с использованием Python
Как автоматизировать комплексные системы
#noBackend, или Как выжить в эпоху толстеющих клиентов
Практика разработки веб-серверов на Rust
Joker2014
NoSQL — неспроста ли это "ЖЖЖ"?
Что такое Robot Framework?
Robot Framework: универсальный инструмент автоматизатора
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Хорошо поддерживаемое приложение
Контроль качества и сопровождение программ в реальном времени
Олег Бартунов и Иван Панченко
Ad

Viewers also liked (9)

PDF
Почему презентации лучше, чем видеоролики
PDF
Time Management from President
PDF
Кейс: рост выручки и конверсии в магазине ВАШАКОМНАТА.РФ
PDF
Fastvisuals: Продающая презентация: от Идеи до Дизайна
PDF
Сколько слайдов в самый раз?
PDF
Секреты презентации. Как сделать презентацию для спикера?
PDF
Почему презентации так трудно делать?
PDF
Что такое аналитика в маркетинге, зачем она нужна, и как ее готовить
PDF
SlideShare 101
Почему презентации лучше, чем видеоролики
Time Management from President
Кейс: рост выручки и конверсии в магазине ВАШАКОМНАТА.РФ
Fastvisuals: Продающая презентация: от Идеи до Дизайна
Сколько слайдов в самый раз?
Секреты презентации. Как сделать презентацию для спикера?
Почему презентации так трудно делать?
Что такое аналитика в маркетинге, зачем она нужна, и как ее готовить
SlideShare 101
Ad

Similar to Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно" (9)

PDF
Разработка веб-сервисов осень 2013 лекция 9
PPTX
планирование веб релизов в условиях многопоточности задач со скачущими приори...
PPTX
Developmentmanage3.0
PPTX
Developmentmanage1.0
PDF
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
PDF
Тестирование осень 2013 лекция 5
PDF
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
PDF
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
PDF
от задачи до Production
Разработка веб-сервисов осень 2013 лекция 9
планирование веб релизов в условиях многопоточности задач со скачущими приори...
Developmentmanage3.0
Developmentmanage1.0
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Тестирование осень 2013 лекция 5
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
от задачи до Production

More from Yandex (20)

PDF
Предсказание оттока игроков из World of Tanks
PDF
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
PDF
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
PDF
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
PDF
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
PDF
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
PDF
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
PDF
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
PDF
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
PDF
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
PDF
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
PDF
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
PDF
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
PDF
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
PDF
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
PDF
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
PDF
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
PDF
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
PDF
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
PDF
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Предсказание оттока игроков из World of Tanks
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...

Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"