Разработка веб-сервисов осень 2013 лекция 9
TRANSCRIPT
Разработкавеб-сервисов
Беседа 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