![Page 1: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/1.jpg)
О чем стоит подумать, приступая к разработке высоконагруженной
системы. Артем Вольфтруб
![Page 2: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/2.jpg)
У нас есть своя IT команда, но она сильно загружена в ближайшие три месяца. Мы рассчитываем, что за это время вы напишите первую версию системы, которую мы будем развивать своими силами.
1
![Page 3: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/3.jpg)
Цикл разработки интернет-проекта
разработка
аналитика
тестирование
t
1
![Page 4: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/4.jpg)
• Три месяца – минимальный цикл разработки интернет системы
• К моменту релиза требования поменяются процентов на 40
• Если N разработчиков сделают систему за три месяца, то 2*N
разработчиков сделают систему за…
• Основная работа начинается после релиза
Важно понимать, что
три месяца
1
![Page 5: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/5.jpg)
Передача проекта другой команде• Передавать код другой команде сразу после релиза – плохая идея
• Передавать код в виде дампа svn - очень плохая идея
• Личное VS профессиональное
1
![Page 6: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/6.jpg)
Чтобы не было мучительно больно• Решение о передаче проекта не должно быть спонтанным
• Решение должно быть известно заранее
• Привлекайте разработчиков к процессу
• Приготовьтесь заплатить дважды
1
![Page 7: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/7.jpg)
Способы облегчить процесс
• Совместная работа над проектом
• Постепенный ввод новой команды
1
![Page 8: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/8.jpg)
В первую версию системы должно войти N фич. У нас есть еще несколько минорных пожеланий, но их можно будет реализовать после выпуска первой версии.
2
![Page 9: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/9.jpg)
Формирование требований• Анализ рынка
• Формирование ключевых пользовательских групп
• Формирование стратегии
• Интервьюирование ключевых пользователей
• Прототипирование
• Тестирование, получение обратной связи
• Коррекция ТАК НЕ БЫВАЕТ
2
![Page 10: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/10.jpg)
Формирование требований• Наличие аналогичного продукта или сервиса
• Видение системы, изложенное на листе А4
• Идея в голове начальника
ТАК БЫВАЕТ
2
![Page 11: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/11.jpg)
Из опыта• На момент релиза, востребованными оказываются около 60% фич
• 40% фич, которые оказались не востребованными – самые сложные с точки зрения реализации
• Наиболее ценные фичи не попадают в первую версию
2
![Page 12: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/12.jpg)
• Старайтесь включать в первую версию только то, без чего
реально нельзя жить. Экономьте время!
• Основной источник требований – пользователь
• Бета-версия – главный инструмент аналитика
• Бета-версия – полностью функциональный
продукт, а не «отмазка» для разработчиков
• Разработка не заканчивается релизом
Рамки проекта2
![Page 13: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/13.jpg)
Система должна быть масштабируемой. Нам нужен подробный план того, как мы будем справляться с нагрузками, когда система вырастет со 100 000 пользователей до 10 000 000.
3
![Page 14: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/14.jpg)
Цели планирования
• План для начальства или план для разработчиков
• Узкие места возникают совершенно не там, где это предполагалось
• А кто будет писать?
3
![Page 15: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/15.jpg)
Анализ нагрузки
• Оцениваем трафик
• Оцениваем объем данных
• Фантазируем («если – то»)
3
![Page 16: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/16.jpg)
Слайд не для менеджеров!
• У «Веселого фермера» тоже был первый пользователь
• Когда у вас будет 10 000 000 пользователей, у вас будут деньги,
чтобы все переписать
3
![Page 17: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/17.jpg)
Производительность системы будет проверяться проведением полноценного нагрузочноготестирования перед сдачей проекта.
4
![Page 18: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/18.jpg)
Проблемы нагрузочного тестирования
• Смоделировать реальные действия пользователя очень сложно
• Влияние внешних компонентов
• Тепличные условия тестирования
• Заказчик считает, что нагрузочное тестирование позволит
оценить качество системы
4
![Page 19: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/19.jpg)
Хроники нагрузочного тестирования
4
![Page 20: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/20.jpg)
Хроники нагрузочного тестирования
4
![Page 21: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/21.jpg)
Хроники нагрузочного тестирования
4
![Page 22: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/22.jpg)
Хроники нагрузочного тестирования
4
![Page 23: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/23.jpg)
Обобщаем
• Другое железо
• Другой объем данных
• Другой канал
• Влияние окружения на работу приложения
• Интерполяция не работает
4
![Page 24: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/24.jpg)
Выводы
• Нагрузочное тестирование инструмент анализа, а не
критерий приемки
• Проверять лучше отдельные сценарии,
а не полноценную работу приложения
4
![Page 25: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/25.jpg)
Что значит приемлемый уровень отказоустойчивости? Система должна работать безотказно!
5
![Page 26: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/26.jpg)
Виды простоев
• Отказ в результате выхода из строя
• Остановка на плановое обслуживание
5
![Page 27: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/27.jpg)
Оценка отказоустойчивости
• Внешние зависимости
• Прагматичный подход (99.99% - это 1 час в год)
• Выделение критических компонентов
5
![Page 28: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/28.jpg)
Кому нужна отказоустойчивость
• Компоненты, которые используются внешними системами
• Компоненты, от которых зависит бизнес компании
• Компоненты, простой которых связан с репутационными потерями
компании
5
![Page 29: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/29.jpg)
Зачем нам система мониторинга? Если система сломается, это и так все увидят!
6
![Page 30: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/30.jpg)
Проблемы
• Мониторинг не является частью проекта
• Систему мониторинга должен кто-то эксплуатировать
6
Запуск высокнагруженной системы без мониторинга не имеет смысла!
![Page 31: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/31.jpg)
Что дает мониторинг• Прогнозирование нагрузки
• Диагностика проблем на ранней стадии
• Выявление типовых проблем разработка универсальных
решений
• Может использоваться, как инструмент аналитика
6
![Page 32: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/32.jpg)
Виды мониторинга• Физический уровень
(сеть, доступность сервера, CPU, место на диске, память, IO)
• Уровень приложения
(HTTP Errors, Response time, Exceptions)
• Бизнес уровень
(основан на бизнес критериях)
6
![Page 33: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/33.jpg)
Методы измерений• Критериальная система
• Тренды
6
![Page 34: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/34.jpg)
Система мониторинга
System administratorsMonitoring
Logs and
performance data
System operators
Network devices
Logs and
perform
ance
data
Events Events
Production machines
6
![Page 35: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/35.jpg)
Согласно последним обзорам, производительность фреймворка XYZ выше, чем ZYX. Давайте разрабатывать систему с использованием XYZ
7
![Page 36: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/36.jpg)
Причины ограничения выбора
• Корпоративный стандарт
• Расширения существующей системы
• Собственная команда разработчиков
7
![Page 37: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/37.jpg)
Сравнение фреймворков
• Самый быстрый фреймворк - это тот, которым умеют
пользоваться разработчики
• Программа «Hello world» всегда работает быстро
7
![Page 38: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/38.jpg)
10000 20000 30000 50000 100000 300000
Число итераций
Вр
ем
я (
се
к)
PHP
Groovy
7
![Page 39: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/39.jpg)
Как выбирать
• Исходите из текущих задач и задач на ближайшую
перспективу (время написания первой версии + поддержка)
• Смотреть на профиль команды
7
![Page 40: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/40.jpg)
Наши IT-шники не разбираются в вашей системе. Напишите нам максимально подробнуюпошаговую инструкцию, как ее устанавливать и поддерживать.
8
![Page 41: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/41.jpg)
Откуда растут ноги
• Конфиденциальная информация
• Корпоративные стандарт безопасности
• Нежелание разбираться в новых системах
9
![Page 42: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/42.jpg)
Разделение ответственности
• Человек, который отвечает за систему, должен иметь
всю полноту власти
• Можно разделить роли, но не обязанности
9
Коллективной ответственности не бывает. Коллективной бывает только безответственность
(Валерий Лобановский)
![Page 43: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/43.jpg)
Мы нашли баг в системе, вы можете прислать нам последнюю версию, мы выложим ее сегодня ночью
9
![Page 44: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/44.jpg)
Очень важно
• Сложность исправления бага определяют разработчики
• Тестирование может занимать намного больше, чем сам фикс
• Может потребоваться значительное обновление системы
9
![Page 45: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/45.jpg)
Обновление системы
• План работ
• Сценарий проверки
• План В (если все плохо)
• Сценарий проверки плана В
9
![Page 46: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/46.jpg)
Формальные процедуры
• Версионность
• Разные ветки для активной разработки и релиза
• Разделение уровней допуска
• Процедуры утверждения релизов
9
![Page 47: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/47.jpg)
Зачем переписывать код, который был написан всего пару месяцев назад. У нас еще куча фич,которые нужно реализовать.
10
![Page 48: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/48.jpg)
Типичные ситуации• Программисты всегда занимаются бессмысленным
украшательством, система и так неплохо работает
• Улучшение кода это замечательно, но у нас пока есть более
важная работа
10
![Page 49: О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем Вольфтруб)](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b16b4795927358b4dcc/html5/thumbnails/49.jpg)
Важно• Расставить приоритеты на каждый этап проекта
• Убедиться, что все разработчики правильно понимают
приоритеты каждого из этапов
• Понимать, что рефакторинг – неотъемлемая часть любой
разработки
• Доверять разработчикам
10