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

46
Разработка веб-сервисов Беседа 9: Внедрение и эксплуатация продукта

Upload: technopark

Post on 22-May-2015

128 views

Category:

Education


10 download

TRANSCRIPT

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

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

Беседа 9: Внедрение и эксплуатация продукта

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

План занятия

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

Мониторинг рабочего проекта

Сопровождение проекта

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

2

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

Этапы создания продукта

Этапы:

1. Анализ предметной области и постановка задачи

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

3. Разработка

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

5. Ввод в эксплуатацию

3

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

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

Виды анализа

Тестирование

Инспекция кода

4

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

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

Цели тестирования

Правильность реализации

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

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

5

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

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

Цели тестирования

Правильность реализации

Соответствие техническому заданию

Корректность работы кода

Безопасность

Ресурсоемкость

6

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

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

Цели тестирования

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

Верить нельзя никому. Проверка входных данных

Поведение в случае проблем

7

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

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

Цели тестирования

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

Корректный откат изменений

Быстрый откат изменений

8

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

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

Виды тестирования

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

Тестирование безопасности

Функциональное тестирование

Интеграционное тестирование

Нагрузочное тестирование

9

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

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

Виды тестирования

В тестовом окружении

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

10

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

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

Тестовое окружение

Данные: живые или синтетические?

Ресурсы: общие серверы или виртуализация?

11

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

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

Тестовое окружение. Данные

Когда нужны живые данные?

Аналитика и отчетность

Оптимизация работы

Когда нужны синтетические данные?

Помощь в подготовки развертывания

Ограничения внешнего мира

Все остальные случаи

12

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

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

Тестовое окружение. Ресурсы

Ограничения ресурсов

Сколько вешать в граммах?

Общие серверы

Общая инфраструктура, проще проверять интеграцию

Оптимизация работы эксплуатации

Виртуализация

Максимальное приближение к боевому окружению

Помним про общие ресурсы

13

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

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

Пре-релизное тестирование

Синтетическая аудитория

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

Реальная аудитория (часть)

Железная балансировка (nginx, upstream etc)

Программная балансировка

14

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

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

Инструменты тестирования

Тестирование модулей

Тестирование безопасности

Функциональное тестирование

Интеграционное тестирование

Нагрузочное тестирование

15

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

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

Инспекция кода. Цели

Ошибки проектирования

Следование стилю команды и архитектуре проекта

Одна голова хорошо, а две…

Дополнительное тестирование

16

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

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

Инспекция кода. Недостатки

Исправлять надо было раньше

Инспекция + тестирование = перерасход времени

Очень дорогого времени

Демотивация программистов

Срыв сроков запуска

Вывод: тестировщики всё равно нужны

17

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

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

Отладка в бою

Если нельзя, но очень хочется, то можно

Помним

Очень аккуратно — не допустить 50х ошибок

Болтун – находка. Отладочная информация – подарок

Упрощаем процесс

Тестовые скрипты

Не забываем убирать за собой

18

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

Мониторинг продукта

Технический отдел

должен узнавать о проблемах

первым

19

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

Мониторинг продукта

Виды мониторинга

По области применения

Мониторинг ресурсов

Мониторинг работы бизнес-логики

По типам реакции

Алерты

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

20

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

Мониторинг продукта

Организация мониторинга

Несколько уровней оповещения

Первая линия

Экспертная линия

Типы оповещений

Система мониторинга

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

21

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

Мониторинг продукта

Организация мониторинга

22

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

Мониторинг продукта

Журналы событий

Логи лишними не бывают

Журналируем:

Тайминги

Входные данные (формы, SOAP, XML итп)

Выходные данные (ключевые)

Ошибки работы системных компонентов (шаблонизаторы, база данных)

Ошибки бизнес-логики

23

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

Мониторинг продукта

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

Время

Общий формат данных

Реестр кодов ошибок

Местоположение (какой сервер, какой класс)

Данные пользователя. Или окружения

24

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

Мониторинг продукта

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

grep

Плюсы: это универсально, это мощно

Минусы: ресурсоемко (повторяемость, ожидание)

Инструменты

Пишем сами

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

25

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

Сопровождение проекта

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

Что?

Документирование кода

Документирование процессов

Где?

Код. Код. Код.

Базы знаний

26

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

Сопровождение проекта

Сопровождение и документация. Аспекты

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

Для всей компании

Для всего проекта

Для менеджеров (продукт, суппорт, коммерция)

Для технических специалистов

По доступу

Встроенные средства

Вынос в отдельную базу знаний

27

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

Сопровождение проекта

Объекты документирования

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

Организационная часть – описание процессов

28

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

Сопровождение проекта

Правила разработки

Правила кодирования (регламенты, стиль итп)

Работа с системами контроля версий

жизненный цикл (work-flow)

именования веток и коммитов

Списки поддерживаемых протоколов

Схемы (проект, архитектура, компоненты, сценарии)

Ключевые моменты

29

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

Сопровождение проекта

Описание процессов

Правила работы в отделе

How-To и FAQ

Описание рабочего процесса

Документирование событий

30

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

Сопровождение проекта

Описание процессов

Правила работы в отделе

Рабочий график: расписание, общие совещания

Отпуски, отгулы, больничные

How-To и FAQ

Куда бежать в случае проблем

Для разработчиков: внутренние инструменты, быстрые ссылки

Для менеджеров: как настроить, как поставить задачу

31

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

Сопровождение проекта

Описание процессов

Описание рабочего процесса

Устройство итераций

Расписание раскладки

Описание всех процессов

Документирование событий

Документация для технического отдела: описание кода, принципов работы

Запущенные фичи

32

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

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

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

Задачи эксплуатации

Конфигурация системы и мониторинг ресурсов

Раскладка изменений в боевую среду

Задачи поддержки

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

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

33

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

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

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

Принципы:

Расписание раскладки

Действия для проведения раскладки

Действия для отката изменений

34

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

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

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

Цель автоматизации:

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

35

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

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

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

Пишем на живом

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

Репозиторий на сервере раскладки + синхронизация

Сборка пакетов

Менеджеры раскладки

36

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

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

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

Инкрементальная раскладка

Назначение: папки с существующим кодом

Полная раскладка

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

37

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

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

Внештатные ситуации

Инцидент — отклонение от режима

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

38

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

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

Внештатные ситуации

Классификация инцидентов

Регламент поведения и оповещения

39

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

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

Внештатные ситуации. Инциденты

Что затрагивает?

Сервер

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

Статус (открытый, закрытый)

Время на исправление ситуации

Что отвечать пользователям

40

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

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

Внештатные ситуации. Последствия инцидента

Почему произошел инцидент

Что было предпринято для решения

Хронология событий

Учет времени на решение

41

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

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

Внештатные ситуации. Последствия инцидента

42

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

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

Внештатные ситуации. Последствия инцидента

43

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

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

Внештатные ситуации. Регламенты

Оповещение и консультации

Внутренние службы

Внешние партнеры

Контакты оповещений

Для технического персонала

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

44

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

Резюме

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

Старайтесь узнать первыми о проблеме. Не от пользователей и, тем более, не от менеджеров

Документация еще никому не мешала

Помогайте другим отделам, которые работают для вас и принимают на себя последствия

45

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

Вопросы?

Максим Бабич

[email protected]

+7 916 9415275