О чем стоит подумать, приступая к разработке высоконагруженнойсистемы.

Содержание

Слайд 2

У нас есть своя IT команда, но она сильно загружена в ближайшие

У нас есть своя IT команда, но она сильно загружена в ближайшие
три месяца.
Мы рассчитываем, что за это время вы напишите первую версию системы, которую мы будем развивать своими силами.

Слайд 3

Цикл разработки интернет-проекта

разработка

аналитика

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

t

Цикл разработки интернет-проекта разработка аналитика тестирование t

Слайд 4

Три месяца – минимальный цикл разработки интернет системы
К моменту релиза требования

Три месяца – минимальный цикл разработки интернет системы К моменту релиза требования
поменяются процентов на 40
Если N разработчиков сделают систему за три месяца, то 2*N
разработчиков сделают систему за…
Основная работа начинается после релиза

Важно понимать, что

три месяца

Слайд 5

Передача проекта другой команде
Передавать код другой команде сразу после релиза –

Передача проекта другой команде Передавать код другой команде сразу после релиза –
плохая идея
Передавать код в виде дампа svn - очень плохая идея
Личное VS профессиональное

Слайд 6

Чтобы не было мучительно больно
Решение о передаче проекта не должно быть

Чтобы не было мучительно больно Решение о передаче проекта не должно быть
спонтанным
Решение должно быть известно заранее
Привлекайте разработчиков к процессу
Приготовьтесь заплатить дважды

Слайд 7

Способы облегчить процесс
Совместная работа над проектом
Постепенный ввод новой команды

Способы облегчить процесс Совместная работа над проектом Постепенный ввод новой команды

Слайд 8

В первую версию системы должно войти N фич.
У нас есть еще

В первую версию системы должно войти N фич. У нас есть еще
несколько минорных пожеланий, но их можно будет реализовать после выпуска первой версии.

Слайд 9

Формирование требований
Анализ рынка
Формирование ключевых пользовательских групп
Формирование стратегии
Интервьюирование ключевых

Формирование требований Анализ рынка Формирование ключевых пользовательских групп Формирование стратегии Интервьюирование ключевых
пользователей
Прототипирование
Тестирование, получение обратной связи
Коррекция

Слайд 10

Формирование требований
Наличие аналогичного продукта или сервиса
Видение системы, изложенное на листе

Формирование требований Наличие аналогичного продукта или сервиса Видение системы, изложенное на листе
А4
Идея в голове начальника

Слайд 11

Из опыта
На момент релиза, востребованными оказываются около 60% фич
40% фич,

Из опыта На момент релиза, востребованными оказываются около 60% фич 40% фич,
которые оказались не востребованными – самые сложные с точки зрения реализации
Наиболее ценные фичи не попадают в первую версию

Слайд 12

Старайтесь включать в первую версию только то, без чего
реально нельзя жить.

Старайтесь включать в первую версию только то, без чего реально нельзя жить.
Экономьте время!
Основной источник требований – пользователь
Бета-версия – главный инструмент аналитика
Бета-версия – полностью функциональный
продукт, а не «отмазка» для разработчиков
Разработка не заканчивается релизом

Рамки проекта

Слайд 13

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

Система должна быть масштабируемой. Нам нужен подробный план того, как мы будем
справляться с нагрузками, когда система вырастет со 100 000 пользователей до 10 000 000.

Слайд 14

Цели планирования
План для начальства или план для разработчиков
Узкие места возникают

Цели планирования План для начальства или план для разработчиков Узкие места возникают
совершенно не там, где это предполагалось
А кто будет писать?

Слайд 15

Анализ нагрузки
Оцениваем трафик
Оцениваем объем данных
Фантазируем («если – то»)

Анализ нагрузки Оцениваем трафик Оцениваем объем данных Фантазируем («если – то»)

Слайд 16

Слайд не для менеджеров!
У «Веселого фермера» тоже был первый пользователь
Когда

Слайд не для менеджеров! У «Веселого фермера» тоже был первый пользователь Когда
у вас будет 10 000 000 пользователей, у вас будут деньги,
чтобы все переписать

Слайд 17

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

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

Слайд 18

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

Проблемы нагрузочного тестирования Смоделировать реальные действия пользователя очень сложно Влияние внешних компонентов
Тепличные условия тестирования
Заказчик считает, что нагрузочное тестирование позволит
оценить качество системы

Слайд 19

Хроники нагрузочного тестирования

Хроники нагрузочного тестирования

Слайд 20

Хроники нагрузочного тестирования

Хроники нагрузочного тестирования

Слайд 21

Хроники нагрузочного тестирования

Хроники нагрузочного тестирования

Слайд 22

Хроники нагрузочного тестирования

Хроники нагрузочного тестирования

Слайд 23

Обобщаем
Другое железо
Другой объем данных
Другой канал
Влияние окружения на работу

Обобщаем Другое железо Другой объем данных Другой канал Влияние окружения на работу приложения Интерполяция не работает
приложения
Интерполяция не работает

Слайд 24

Выводы
Нагрузочное тестирование инструмент анализа, а не
критерий приемки
Проверять лучше

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

Слайд 25

Что значит приемлемый уровень отказоустойчивости?
Система должна работать
безотказно!

Что значит приемлемый уровень отказоустойчивости? Система должна работать безотказно!

Слайд 26

Виды простоев
Отказ в результате выхода из строя
Остановка на плановое обслуживание

Виды простоев Отказ в результате выхода из строя Остановка на плановое обслуживание

Слайд 27

Оценка отказоустойчивости
Внешние зависимости
Прагматичный подход (99.99% - это 1 час в

Оценка отказоустойчивости Внешние зависимости Прагматичный подход (99.99% - это 1 час в год) Выделение критических компонентов
год)
Выделение критических компонентов

Слайд 28

Кому нужна отказоустойчивость
Компоненты, которые используются внешними системами
Компоненты, от которых зависит

Кому нужна отказоустойчивость Компоненты, которые используются внешними системами Компоненты, от которых зависит
бизнес компании
Компоненты, простой которых связан с репутационными потерями
компании

Слайд 29

Зачем нам система мониторинга? Если система сломается, это и так все увидят!

Зачем нам система мониторинга? Если система сломается, это и так все увидят!

Слайд 30

Проблемы
Мониторинг не является частью проекта
Систему мониторинга должен кто-то эксплуатировать

Запуск высокнагруженной

Проблемы Мониторинг не является частью проекта Систему мониторинга должен кто-то эксплуатировать Запуск
системы без мониторинга не имеет смысла!

Слайд 31

Что дает мониторинг
Прогнозирование нагрузки
Диагностика проблем на ранней стадии
Выявление типовых

Что дает мониторинг Прогнозирование нагрузки Диагностика проблем на ранней стадии Выявление типовых
проблем разработка универсальных
решений
Может использоваться, как инструмент аналитика

Слайд 32

Виды мониторинга
Физический уровень
(сеть, доступность сервера, CPU, место на диске,

Виды мониторинга Физический уровень (сеть, доступность сервера, CPU, место на диске, память,
память, IO)
Уровень приложения
(HTTP Errors, Response time, Exceptions)
Бизнес уровень
(основан на бизнес критериях)

Слайд 33

Методы измерений
Критериальная система
Тренды

Методы измерений Критериальная система Тренды

Слайд 34

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

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

Слайд 35

Согласно последним обзорам, производительность фреймворка XYZ выше, чем ZYX.
Давайте разрабатывать систему

Согласно последним обзорам, производительность фреймворка XYZ выше, чем ZYX. Давайте разрабатывать систему с использованием XYZ
с использованием XYZ

Слайд 36

Причины ограничения выбора
Корпоративный стандарт
Расширения существующей системы
Собственная команда разработчиков

Причины ограничения выбора Корпоративный стандарт Расширения существующей системы Собственная команда разработчиков

Слайд 37

Сравнение фреймворков
Самый быстрый фреймворк - это тот, которым умеют

Сравнение фреймворков Самый быстрый фреймворк - это тот, которым умеют пользоваться разработчики
пользоваться разработчики
Программа «Hello world» всегда работает быстро

Слайд 39

Как выбирать
Исходите из текущих задач и задач на ближайшую
перспективу

Как выбирать Исходите из текущих задач и задач на ближайшую перспективу (время
(время написания первой версии + поддержка)
Смотреть на профиль команды

Слайд 40

Наши IT-шники не разбираются в вашей системе. Напишите нам максимально подробную
пошаговую инструкцию,

Наши IT-шники не разбираются в вашей системе. Напишите нам максимально подробную пошаговую
как ее устанавливать и поддерживать.

Слайд 41

Откуда растут ноги
Конфиденциальная информация
Корпоративные стандарт безопасности
Нежелание разбираться в новых

Откуда растут ноги Конфиденциальная информация Корпоративные стандарт безопасности Нежелание разбираться в новых системах
системах

Слайд 42

Разделение ответственности
Человек, который отвечает за систему, должен иметь
всю полноту власти

Разделение ответственности Человек, который отвечает за систему, должен иметь всю полноту власти
Можно разделить роли, но не обязанности

Коллективной ответственности не бывает. Коллективной бывает только безответственность

(Валерий Лобановский)

Слайд 43

Мы нашли баг в системе, вы можете прислать нам последнюю версию, мы

Мы нашли баг в системе, вы можете прислать нам последнюю версию, мы выложим ее сегодня ночью
выложим ее сегодня ночью

Слайд 44

Очень важно
Сложность исправления бага определяют разработчики
Тестирование может занимать намного больше,

Очень важно Сложность исправления бага определяют разработчики Тестирование может занимать намного больше,
чем сам фикс
Может потребоваться значительное обновление системы

Слайд 45

Обновление системы
План работ
Сценарий проверки
План В (если все плохо)
Сценарий

Обновление системы План работ Сценарий проверки План В (если все плохо) Сценарий проверки плана В
проверки плана В

Слайд 46

Формальные процедуры
Версионность
Разные ветки для активной разработки и релиза
Разделение уровней

Формальные процедуры Версионность Разные ветки для активной разработки и релиза Разделение уровней допуска Процедуры утверждения релизов
допуска
Процедуры утверждения релизов

Слайд 47

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

Зачем переписывать код, который был написан всего пару месяцев назад. У нас
еще куча фич,
которые нужно реализовать.

Слайд 48

Типичные ситуации
Программисты всегда занимаются бессмысленным
украшательством, система и так неплохо

Типичные ситуации Программисты всегда занимаются бессмысленным украшательством, система и так неплохо работает
работает
Улучшение кода это замечательно, но у нас пока есть более
важная работа

Слайд 49

Важно
Расставить приоритеты на каждый этап проекта
Убедиться, что все разработчики правильно

Важно Расставить приоритеты на каждый этап проекта Убедиться, что все разработчики правильно
понимают
приоритеты каждого из этапов
Понимать, что рефакторинг – неотъемлемая часть любой
разработки
Доверять разработчикам
Имя файла: О-чем-стоит-подумать,-приступая-к-разработке-высоконагруженнойсистемы..pptx
Количество просмотров: 98
Количество скачиваний: 0