Разработка
веб-сервисов

Беседа 9: Внедрение и эксплуатация продукта
План занятия
 Тестирование и инспекция кода
 Мониторинг рабочего проекта

 Сопровождение проекта
 Взаимодействие с отделами эксплуатации и
поддержки

2
Этапы создания продукта
Этапы:
1. Анализ предметной области и постановка задачи

2. Проектирование, уточнение ТЗ
3. Разработка

4. Анализ разработанного продукта (ревью, тесты)
5. Ввод в эксплуатацию

3
Анализ продукта
Виды анализа

 Тестирование
 Инспекция кода

4
Анализ продукта
Цели тестирования

 Правильность реализации
 Правильность обработки внештатных ситуаций

 Минимизация последствий

5
Анализ продукта
Цели тестирования

Правильность реализации
 Соответствие техническому заданию
 Корректность работы кода
 Безопасность
 Ресурсоемкость

6
Анализ продукта
Цели тестирования

Правильность обработки внештатных ситуаций
 Верить нельзя никому. Проверка входных данных
 Поведение в случае проблем

7
Анализ продукта
Цели тестирования

Минимизация последствий
 Корректный откат изменений
 Быстрый откат изменений

8
Анализ продукта
Виды тестирования

 Тестирование модулей (юнит-тесты)
 Тестирование безопасности

 Функциональное тестирование
 Интеграционное тестирование
 Нагрузочное тестирование

9
Анализ продукта
Виды тестирования

 В тестовом окружении
 В боевом окружении на части аудитории

10
Анализ продукта
Тестовое окружение

 Данные: живые или синтетические?
 Ресурсы: общие серверы или виртуализация?

11
Анализ продукта
Тестовое окружение. Данные

 Когда нужны живые данные?
 Аналитика и отчетность
 Оптимизация работы

 Когда нужны синтетические данные?
 Помощь в подготовки развертывания

 Ограничения внешнего мира
 Все остальные случаи
12
Анализ продукта
Тестовое окружение. Ресурсы

 Ограничения ресурсов
 Сколько вешать в граммах?

 Общие серверы
 Общая инфраструктура, проще проверять интеграцию
 Оптимизация работы эксплуатации

 Виртуализация
 Максимальное приближение к боевому окружению
 Помним про общие ресурсы
13
Анализ продукта
Пре-релизное тестирование

 Синтетическая аудитория
 Отдельный сервер / домен / авторизация и настройки

 Реальная аудитория (часть)
 Железная балансировка (nginx, upstream etc)
 Программная балансировка

14
Анализ продукта
Инструменты тестирования

 Тестирование модулей
 Тестирование безопасности

 Функциональное тестирование
 Интеграционное тестирование
 Нагрузочное тестирование

15
Анализ продукта
Инспекция кода. Цели

 Ошибки проектирования
 Следование стилю команды и архитектуре проекта

 Одна голова хорошо, а две…
 Дополнительное тестирование

16
Анализ продукта
Инспекция кода. Недостатки

 Исправлять надо было раньше
 Инспекция + тестирование = перерасход времени
Очень дорогого времени
 Демотивация программистов
 Срыв сроков запуска
Вывод: тестировщики всё равно нужны
17
Анализ продукта
Отладка в бою

 Если нельзя, но очень хочется, то можно
 Помним
 Очень аккуратно — не допустить 50х ошибок
 Болтун – находка. Отладочная информация – подарок

 Упрощаем процесс
 Тестовые скрипты
 Не забываем убирать за собой
18
Мониторинг продукта

Технический отдел
должен узнавать о проблемах

первым

19
Мониторинг продукта
Виды мониторинга

 По области применения
 Мониторинг ресурсов
 Мониторинг работы бизнес-логики

 По типам реакции
 Алерты

 Статистика: отчеты и графики

20
Мониторинг продукта
Организация мониторинга

 Несколько уровней оповещения
 Первая линия
 Экспертная линия

 Типы оповещений
 Система мониторинга

 Уведомления: смс, почта, экзотика (push, мессенджер, таски)

21
Мониторинг продукта
Организация мониторинга

22
Мониторинг продукта
Журналы событий

 Логи лишними не бывают
 Журналируем:
Тайминги
Входные данные (формы, SOAP, XML итп)
Выходные данные (ключевые)
Ошибки работы системных компонентов (шаблонизаторы,
база данных)
 Ошибки бизнес-логики





23
Мониторинг продукта
Журналы событий. В каком виде

 Время
 Общий формат данных

 Реестр кодов ошибок
 Местоположение (какой сервер, какой класс)
 Данные пользователя. Или окружения

24
Мониторинг продукта
Журналы событий. Как изучаем

 grep
 Плюсы: это универсально, это мощно
 Минусы: ресурсоемко (повторяемость, ожидание)

 Инструменты
 Пишем сами

 Берем готовые

25
Сопровождение проекта
Сопровождение и документация

Что?
 Документирование кода
 Документирование процессов
Где?
 Код. Код. Код.
 Базы знаний
26
Сопровождение проекта
Сопровождение и документация. Аспекты

По назначению





Для
Для
Для
Для

всей компании
всего проекта
менеджеров (продукт, суппорт, коммерция)
технических специалистов

По доступу
 Встроенные средства
 Вынос в отдельную базу знаний
27
Сопровождение проекта
Объекты документирования

 Техническая часть – правила разработки
 Организационная часть – описание процессов

28
Сопровождение проекта
Правила разработки

 Правила кодирования (регламенты, стиль итп)
 Работа с системами контроля версий
 жизненный цикл (work-flow)
 именования веток и коммитов

 Списки поддерживаемых протоколов
 Схемы (проект, архитектура, компоненты, сценарии)
 Ключевые моменты
29
Сопровождение проекта
Описание процессов

 Правила работы в отделе
 How-To и FAQ

 Описание рабочего процесса
 Документирование событий

30
Сопровождение проекта
Описание процессов

 Правила работы в отделе
 Рабочий график: расписание, общие совещания
 Отпуски, отгулы, больничные

 How-To и FAQ
 Куда бежать в случае проблем
 Для разработчиков: внутренние инструменты, быстрые
ссылки
 Для менеджеров: как настроить, как поставить задачу
31
Сопровождение проекта
Описание процессов

 Описание рабочего процесса
 Устройство итераций
 Расписание раскладки
 Описание всех процессов

 Документирование событий
 Документация для технического отдела: описание кода,
принципов работы
 Запущенные фичи
32
Эксплуатация и поддержка
Взаимодействие с эксплуатацией и поддержкой

Задачи эксплуатации
 Конфигурация системы и мониторинг ресурсов
 Раскладка изменений в боевую среду

Задачи поддержки
 Решение части вопросов по сопровождению

 Помощь с последствиями изменений (и хороших, и плохих)

33
Эксплуатация и поддержка
Эксплуатация. Раскладка изменений

Принципы:
 Расписание раскладки
 Действия для проведения раскладки
 Действия для отката изменений

34
Эксплуатация и поддержка
Эксплуатация. Раскладка изменений

Цель автоматизации:
Освободить ресурсы для иных задач

35
Эксплуатация и поддержка
Эксплуатация. Этапы эволюции раскладки

 Пишем на живом
 Репозиторий на каждом сервере

 Репозиторий на сервере раскладки + синхронизация
 Сборка пакетов
 Менеджеры раскладки

36
Эксплуатация и поддержка
Эксплуатация. Типы раскладки

 Инкрементальная раскладка
 Назначение: папки с существующим кодом

 Полная раскладка
 Назначение: отдельные папки + симлинк на рабочую ветку

37
Эксплуатация и поддержка
Внештатные ситуации

Инцидент

—

отклонение от режима
технологического процесса

38
Эксплуатация и поддержка
Внештатные ситуации

 Классификация инцидентов
 Регламент поведения и оповещения

39
Эксплуатация и поддержка
Внештатные ситуации. Инциденты

 Что затрагивает?
 Сервер
 Сервис или его часть (регистрации, канал платежа и.т.п)

 Статус (открытый, закрытый)
 Время на исправление ситуации
 Что отвечать пользователям
40
Эксплуатация и поддержка
Внештатные ситуации. Последствия инцидента

 Почему произошел инцидент
 Что было предпринято для решения

 Хронология событий
 Учет времени на решение

41
Эксплуатация и поддержка
Внештатные ситуации. Последствия инцидента

42
Эксплуатация и поддержка
Внештатные ситуации. Последствия инцидента

43
Эксплуатация и поддержка
Внештатные ситуации. Регламенты

 Оповещение и консультации
 Внутренние службы
 Внешние партнеры

 Контакты оповещений
 Для технического персонала

 Для персонала службы поддержки

44
Резюме
 Проверяйте код. Теперь любые ошибки – очень
дорого

 Старайтесь узнать первыми о проблеме. Не от
пользователей и, тем более, не от менеджеров
 Документация еще никому не мешала
 Помогайте другим отделам, которые работают для
вас и принимают на себя последствия

45
Вопросы?
Максим Бабич
tpark@maxbabich.ru
+7 916 9415275

Разработка веб-сервисов осень 2013 лекция 9