SlideShare una empresa de Scribd logo
1 de 78
Проектирование
высоконагруженных
систем

Лекция №1

Быков Александр
HighLoad. Лекция №1

О преподавателе
 Быков Александр Сергеевич
 Сотрудник Mail.Ru c 2004 года

 Технический руководитель рекламной системы
 Начинал с позиции веб-разработчика в Почте
 Выпускник МГТУ им. Н.Э.Баумана 2006 года

2
HighLoad. Лекция №1

Определения
Система — множество элементов, находящихся в
отношениях и связях друг с другом, которое образует
определѐнную целостность, единство. (М.: БРЭ. — 2003,
с. 1437)
В нашем случае – множество серверов и программ на них
работающих, представляющих в сумме веб-сервис для
конечного пользователя.

3
HighLoad. Лекция №1

Определения
Нагрузка — совершаемая полезная работа

Максимальная нагрузка – верхний предел совершаемой
полезной работы в данной конфигурации системы
Высоконагруженная система – система выполняющая
объем работы значительно превышающий общепринятый

4
HighLoad. Лекция №1

Предметная область: веб-сервисы
 Ярко выраженный эффект масштаба
 Популярность изменяется очень быстро

 Могут использоваться миллионами людей
 Необходимо учитывать нагрузку при проектировании
 Умение держать нагрузку – вопрос выживания

5
HighLoad. Лекция №1

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

 Как планировать закупки оборудования ?
 Как предсказать изменения нагрузки ?
 Это вообще возможно ?

6
HighLoad. Лекция №1

Цели курса
 Получение теоретических знаний в области
проектирования и эксплуатации высоконагруженных
систем

 Получение практических навыков разработки
высокопроизводительных сервисов
 Получение практических навыков анализа архитектуры
интернет-проектов и технологий

7
HighLoad. Лекция №1

Место курса в программе обучения
Предшествующие:
 1 семестр: Web-технологии

 2 семестр: Базы данных
Параллельные:
 QA и Безопасность
Последующие:
 4 семестр: Разработка веб-сервисов
 4 семестр: Системный анализ для архитекторов
8
HighLoad. Лекция №1

Входные требования
 Отличное знание протокола HTTP
 Навыки разработки многопоточных приложений

 Навыки проектирования баз данных
 Базовые навыки работы в ОС семейства UNIX
 Базовые знания об устройстве сетей

9
HighLoad. Лекция №1

Выходные требования
 Навык разработки распределенного ПО
 Навык разработки ПО с учетом нагрузки

 Навык разработки ПО пригодного для эксплуатации
 Навык проектирования распределенных систем

10
HighLoad. Лекция №1

Программа курса: лекции
1. Планирование мощностей
2. Сетевая подсистема

3. Оперативная память
4. Дисковая подсистема
5. Фронтенд-оптимизация
6. Масштабирование нагрузки
7. Планирование архитектуры

11
HighLoad. Лекция №1

Программа курса: домашние задания
1. Разработка быстрого веб-сервера (5 апреля)
2. Нагрузочное тестирование веб-сервера (19 апреля)

3. Измерение размера кэша процессора (17 мая)
4. Анализ архитектуры интернет-проекта (24 мая)
Сдача раньше срока приветствуется
Сдача позже срока – половина баллов

12
HighLoad. Лекция №1

Контроль знаний
1. Разработка быстрого веб-сервера (20 баллов)
2. Нагрузочное тестирование веб-сервера (10 баллов)

3. Измерение размера кэша процессора (10 баллов)
4. Анализ архитектуры интернет-проекта (10 баллов)
5. Экзамен (60 баллов)
Оценка на экзамене: удовл. – 20 баллов, хор. – 40 баллов
Пороговый рейтинг 60 баллов
13
HighLoad. Лекция №1

Конец вводной части
 Познакомились друг с другом
 Разобрались зачем нужен этот курс

 Убедились в важности этого курса
 Узнали что нас ждет на занятиях

14
HighLoad. Лекция №1

Содержание лекции
 Анализ предметной области
 Управление вычислительными мощностями

 Архитектура многопоточного сетевого ПО

15
HighLoad. Лекция №1

Анализ предметной области
 Особенности интернет проектов
 Аудитория интернета

 Продуктовые метрики

16
HighLoad. Лекция №1

Особенности интернет-проектов

17
HighLoad. Лекция №1

Легкость входа на рынок
 Доступность сервиса из любой точки мира
 Низкая стоимость доставки сервиса потребителю

 Низкая стоимость разработки и эксплуатации
 Практически «нулевой» порог входа

18
HighLoad. Лекция №1

Динамичность рынка
 Высокая конкурентность рынка
 Низкая привязанность пользователей к сервису

 Популярность сервиса может расти очень быстро
 … а падать еще быстрее
 Факторы: качество обслуживания

19
HighLoad. Лекция №1

Особенности монетизации
 Низкая/нулевая доходность на одного пользователя
 Сначала аудитория потом монетизация

 ИТ-инфраструктура основная статья расходов
 В некоторых случаях начальные затраты велики
 Не все проекты выходят на окупаемость

20
HighLoad. Лекция №1

ИТ-инфраструктура
 Основа бизнеса и основная статья расходов
 Высокие требования по скорости разработки

 Высокие требования по масштабированию
 Высокие требования по эффективности
 Невыполнение равно выходу из бизнеса

21
HighLoad. Лекция №1

Аудитория интернета

22
HighLoad. Лекция №1

Аудитория интернета: Россия

23
HighLoad. Лекция №1

Аудитория интернета: Северная Америка

24
HighLoad. Лекция №1

Аудитория интернета: Мир

25
HighLoad. Лекция №1

Аудитория интернета: Мир

26
HighLoad. Лекция №1

Аудитория проектов: Мир

27
HighLoad. Лекция №1

Аудитория проектов: Россия

28
HighLoad. Лекция №1

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

 Максимальное количество пользователей онлайн
 Количество пользователей использующих функцию
 Интенсивность использования разных функций
 Средний размер данных пользователя
 и т.п.

29
HighLoad. Лекция №1

Управление вычислительными мощностями
 Роли людей в проекте
 Постановка целей управления

 Подготовка точек измерения
 Подготовка точек масштабирования
 Принципы выбора оборудования
 Единицы измерения
 Методика измерения

30
HighLoad. Лекция №1

Роли в проекте
 Product Management
 Development Engineering (Разработка)

 Operations Engineering (Эксплуатация)

31
HighLoad. Лекция №1

Роли в проекте: конфликт интересов

32
HighLoad. Лекция №1

Методология DevOps

33
HighLoad. Лекция №1

Роли в рамках различных лекций
 В рамках этой лекции мы в отделе эксплуатации либо
на позиции технического директора
 Наши задачи в качестве руководителя разработки мы
рассмотрим в последних лекциях про архитектуру

34
HighLoad. Лекция №1

Установка целей
 Получить требования от продуктовых менеджеров
 Сформулировать требования в конкретных метриках
(время ответа, % ошибок в ответах, uptime)
 Проверить измеримость исполнения требований
 Зафиксировать в Service Level Agreement (SLA)

35
HighLoad. Лекция №1

Входная информация для планирования
 Прогноз по росту проекта в продуктовых метриках
 Статистика по проекту за предыдущий период

 Ограничения (бюджет) по расходам на ИТ
 Ограничения по качеству работы сервиса (SLA)

36
HighLoad. Лекция №1

Доступность (Uptime)
Доступность %

Время простоя в год Время простоя в месяц

99% ("две девятки")

3.65 дней

7.20 часов

99.5%

1.83 дней

3.60 часов

99.9% ("три девятки")

8.76 часов

43.2 минут

99.95%

4.38 часов

21.56 минут

52.56 минут

4.32 минут

99.999% ("пять девяток")

5.26 минут

25.9 секунд

99.9999% ("шесть девяток”)

31.5 секунд

2.59 секунды

99.99% ("четыре девятки”)

37
HighLoad. Лекция №1

Вопросы на которые нужно уметь отвечать
 Какую нагрузку может выдержать сервис в текущей
конфигурации ?
 Какую нагрузку сервис выдержит если добавить N
дополнительных серверов ?
 Сколько и каких серверов нужно чтобы обслуживать
заданную нагрузку в заданных условиях ?

 Как планировать закупки оборудования исходя из
планирующегося роста ?

38
HighLoad. Лекция №1

Сервер имеет ограниченные ресурсы
 Disk utilization
 Disk storage

 CPU
 RAM
 Network

39
HighLoad. Лекция №1

Первый сервер Павла Дурова
 БД и веб-сервер на одном физическом сервере
 Можно настроить снятие метрик (как указано далее)

 Однако невозможно понять какой сервис какие ресурсы
сервера использует в каком
 Невозможно понять каким из сервисов вызвана
перегрузка ресурса

 Возможен частный случай когда используемые ресурсы
не пересекаются но он довольно редкий

40
HighLoad. Лекция №1

Подготовка точек измерения
 Система должны быть разбита на компоненты
 Один компонент - одна или несколько функций

 Разные функции должны «жить» на разных серверах
 Под каждую функцию выделяется своя группа серверов
внутри которой осуществляется горизонтальное
масштабирование

 Можно проследить связь между полезной нагрузкой на
компоненту и загрузкой подсистем физического сервера

41
HighLoad. Лекция №1

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

 Значение нагрузки в этот момент – предельное
 Дальше сервис как правило не работает
 Такой метод – самый надежный и простой

42
HighLoad. Лекция №1

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

 На неиспользуемых ресурсах экономим
 Используемыми ресурсами набиваем по максимуму
 Железо со временем становится мощнее
 Замена оборудования на новое может окупиться
(по использованию электроэнергии и юнитам в стойке)

43
HighLoad. Лекция №1

Масштабирование
 Вертикальное
(покупаем все более и более мощный сервер)
 Горизонтальное
(покупаем много дешевых однотипных серверов)
 “Диагональное”
(термин Jonh Allspaw описывает существующий метод)
* Нужно учитывать совокупные затраты, построение
горизонтально масштабируемого ПО стоит денег
44
HighLoad. Лекция №1

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

 Удобная визуализация данных (графики!)
 Сравнение метрик из разных источников
 Импорт/экспорт данных

45
HighLoad. Лекция №1

Выбор инструмента измерения
 Не так важно какой инструмент использовать
 Важно выбрать правильные метрики для измерения

 Важно выбрать ключевые метрики для анализа
 Съем метрик с сервера не должен его нагружать
Примеры систем: Cacti, Munin, Ganglia, MRTG, Graphite*

46
HighLoad. Лекция №1

Взаимодействие с системами мониторинга
 Не нужно путать систему построения графиков с
другими системами понимаемыми под «мониторингом»
 Графики не создают аварийных уведомлений, не
включают сирену и ничего сами не «мониторят»
 Графики просто используются для анализа
функционирования системы во времени

 Часто это полностью независимая система

47
HighLoad. Лекция №1

Типовое устройство

48
HighLoad. Лекция №1

Популярные инструменты и методики
 RRDTool – циклическая база данных
 SNMP – протокол удаленного съема метрик

 Графики по метрикам приложений
 Графики по логам сервисов
(метрика последней надежды)

49
HighLoad. Лекция №1

Популярные метрики
 RPS – кол-во запросов в секунду (веб-сервер)
 QPS – кол-во запросов в секунду (БД)

 PPS – кол-во пакетов в секунду (сетевое оборудование)
 Мbit/s – загрузка каналов связи


50
HighLoad. Лекция №1
http://www.liveinternet.ru/stat/mail.ru/mins.html

51
HighLoad. Лекция №1
http://www.liveinternet.ru/stat/vkontakte.ru/mins.html

52
HighLoad. Лекция №1

53
HighLoad. Лекция №1

54
HighLoad. Лекция №1

55
HighLoad. Лекция №1

Slashdot-эффект

56
HighLoad. Лекция №1

DDoS атака

57
HighLoad. Лекция №1

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

 Иногда встречаются настоящие шедевры

58
HighLoad. Лекция №1

503 Service Unavailable

59
HighLoad. Лекция №1

504 Gateway Timeout

60
HighLoad. Лекция №1

503 Service Unavailable

61
HighLoad. Лекция №1

503 Service Unavailable

62
HighLoad. Лекция №1

503 Service Unavailable

63
HighLoad. Лекция №1

500 Internal Server Error

64
HighLoad. Лекция №1

500 Internal Server Error

65
HighLoad. Лекция №1

500 Internal Server Error

66
HighLoad. Лекция №1

Архитектура сетевого приложения
 Самое распространенное приложение: веб-сервер
 Самый распространенный веб-сервер: Apache

 К сожалению далеко не самый быстрый
 На примере этой задачи будем учиться писать ПО для
высоких нагрузок

67
HighLoad. Лекция №1

Блокирующая обработка соединений

68
HighLoad. Лекция №1

Методы обработки большого кол-ва соединений
 fork
 prefork

 threads
 threads prefork
 pooling

69
HighLoad. Лекция №1

Неблокирующая обработка соединений
Системные вызовы:
 select
 kqueue (FreeBSD 4.1+)
 epoll (Linux 2.6+)
Прикладные библиотеки:
 libevent
 libev

Веб-серверы:
 nginx
 lighttpd
 thttpd
 0W-httpd
 Tornado
 Node.js

70
HighLoad. Лекция №1

Статистика по распространенности серверов

71
HighLoad. Лекция №1

Устройство типового веб-сайта

/Perl /Python
72
HighLoad. Лекция №1

Устройство типового веб-сайта

73
HighLoad. Лекция №1

Подключение динамического содержимого
 CGI
 FastCGI и клоны

 Apache: mod_php, mod_perl, mod_python …
 Apache: mod_helloworld
 nginx: ngx_http_helloworld_module
 nginx: content_by_lua

74
HighLoad. Лекция №1

Домашнее задание №1
 Разработать веб-сервер отдающий статику с диска

 Рекомендуется выбрать эффективную архитектуру
 Требования и методика тестирования по ссылке:
https://github.com/init/http-test-suite

75
HighLoad. Лекция №1

Список литературы
1. The Art of Capacity Planning
ISBN: 978-0-596-51857-8
2. The С10K Problem
http://www.kegel.com/c10k.html
3. Сравнительный анализ архитектур серверных
интернет-приложений для высоких нагрузок. Игорь
Сысоев. 03.11. 2011 (лекция 1ч 31м)
https://www.youtube.com/watch?v=aE0yawwB6h4
4. Hypertext Transfer Protocol -- HTTP/1.1
RFC 2616
76
HighLoad. Лекция №1

Список литературы
5. Building Scalable Web Sites
ISBN: 978-0-596-10235-7
6. Scalable Internet Architectures
ISBN: 978-0-596-51857-8

77
СПАСИБО ЗА ВНИМАНИЕ

Быков Александр
bykov@corp.mail.ru

Más contenido relacionado

Destacado

Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...Ontico
 
Управление продуктом весна 2014 лекция 4
Управление продуктом весна 2014 лекция 4Управление продуктом весна 2014 лекция 4
Управление продуктом весна 2014 лекция 4Technopark
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Ontico
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"Technopark
 
Release of The Guide to the Product Management and Marketing Body of Knowledg...
Release of The Guide to the Product Management and Marketing Body of Knowledg...Release of The Guide to the Product Management and Marketing Body of Knowledg...
Release of The Guide to the Product Management and Marketing Body of Knowledg...AIPMM Administration
 
HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6Technopark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Technopark
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. SparkTechnopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuTechnopark
 

Destacado (10)

Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
 
Управление продуктом весна 2014 лекция 4
Управление продуктом весна 2014 лекция 4Управление продуктом весна 2014 лекция 4
Управление продуктом весна 2014 лекция 4
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
Release of The Guide to the Product Management and Marketing Body of Knowledg...
Release of The Guide to the Product Management and Marketing Body of Knowledg...Release of The Guide to the Product Management and Marketing Body of Knowledg...
Release of The Guide to the Product Management and Marketing Body of Knowledg...
 
HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 

Similar a HighLoad весна 2014 лекция 1

«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...MDDay_4
 
эволюция методологий управления (водопад, Rup, Agile) башакин
эволюция методологий управления (водопад, Rup, Agile)   башакинэволюция методологий управления (водопад, Rup, Agile)   башакин
эволюция методологий управления (водопад, Rup, Agile) башакинWRider
 
м.токовинин компромиссная производительность
м.токовинин   компромиссная производительностьм.токовинин   компромиссная производительность
м.токовинин компромиссная производительностьHighLoad2009
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Ontico
 
Как из хаоса рождается порядок
Как из хаоса рождается порядокКак из хаоса рождается порядок
Как из хаоса рождается порядокSQALab
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Ontico
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеSQALab
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance managementSQALab
 
Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Dima Dzuba
 
Ответственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахОтветственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахSQALab
 
Ответственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахОтветственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахMaxim Tsepkov
 
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьОтветственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьCUSTIS
 
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Andrii Gakhov
 
1. предзащита
1. предзащита1. предзащита
1. предзащитаDmitry Dushkin
 
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUAREТехники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARESQALab
 
Как сделать наши проекты немного более управляемыми с Agile
Как сделать наши проекты немного более управляемыми с AgileКак сделать наши проекты немного более управляемыми с Agile
Как сделать наши проекты немного более управляемыми с AgileAlexey Krivitsky
 
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...Ontico
 

Similar a HighLoad весна 2014 лекция 1 (20)

«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...
 
эволюция методологий управления (водопад, Rup, Agile) башакин
эволюция методологий управления (водопад, Rup, Agile)   башакинэволюция методологий управления (водопад, Rup, Agile)   башакин
эволюция методологий управления (водопад, Rup, Agile) башакин
 
м.токовинин компромиссная производительность
м.токовинин   компромиссная производительностьм.токовинин   компромиссная производительность
м.токовинин компромиссная производительность
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013
 
Как из хаоса рождается порядок
Как из хаоса рождается порядокКак из хаоса рождается порядок
Как из хаоса рождается порядок
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013
 
Sep reqm-lec1
Sep reqm-lec1Sep reqm-lec1
Sep reqm-lec1
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проекте
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance management
 
Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4
 
Ответственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахОтветственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектах
 
Ответственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектахОтветственность за качество в разных ИТ-проектах
Ответственность за качество в разных ИТ-проектах
 
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделятьОтветственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
 
СУП
СУПСУП
СУП
 
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1
 
1. предзащита
1. предзащита1. предзащита
1. предзащита
 
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUAREТехники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
 
Как сделать наши проекты немного более управляемыми с Agile
Как сделать наши проекты немного более управляемыми с AgileКак сделать наши проекты немного более управляемыми с Agile
Как сделать наши проекты немного более управляемыми с Agile
 
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
 

Más de Technopark

Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARNTechnopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache MahoutTechnopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeperTechnopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveTechnopark
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Technopark
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы HadoopTechnopark
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceTechnopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...Technopark
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...Technopark
 
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"Technopark
 
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"Technopark
 
СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"Technopark
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8Technopark
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7Technopark
 

Más de Technopark (20)

Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
 
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
 
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
 
СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
 

HighLoad весна 2014 лекция 1

  • 2. HighLoad. Лекция №1 О преподавателе  Быков Александр Сергеевич  Сотрудник Mail.Ru c 2004 года  Технический руководитель рекламной системы  Начинал с позиции веб-разработчика в Почте  Выпускник МГТУ им. Н.Э.Баумана 2006 года 2
  • 3. HighLoad. Лекция №1 Определения Система — множество элементов, находящихся в отношениях и связях друг с другом, которое образует определѐнную целостность, единство. (М.: БРЭ. — 2003, с. 1437) В нашем случае – множество серверов и программ на них работающих, представляющих в сумме веб-сервис для конечного пользователя. 3
  • 4. HighLoad. Лекция №1 Определения Нагрузка — совершаемая полезная работа Максимальная нагрузка – верхний предел совершаемой полезной работы в данной конфигурации системы Высоконагруженная система – система выполняющая объем работы значительно превышающий общепринятый 4
  • 5. HighLoad. Лекция №1 Предметная область: веб-сервисы  Ярко выраженный эффект масштаба  Популярность изменяется очень быстро  Могут использоваться миллионами людей  Необходимо учитывать нагрузку при проектировании  Умение держать нагрузку – вопрос выживания 5
  • 6. HighLoad. Лекция №1 Задача: миллиард пользователей  Как должна быть устроена такая система ?  Как должна быть организована работа кампании ?  Как планировать закупки оборудования ?  Как предсказать изменения нагрузки ?  Это вообще возможно ? 6
  • 7. HighLoad. Лекция №1 Цели курса  Получение теоретических знаний в области проектирования и эксплуатации высоконагруженных систем  Получение практических навыков разработки высокопроизводительных сервисов  Получение практических навыков анализа архитектуры интернет-проектов и технологий 7
  • 8. HighLoad. Лекция №1 Место курса в программе обучения Предшествующие:  1 семестр: Web-технологии  2 семестр: Базы данных Параллельные:  QA и Безопасность Последующие:  4 семестр: Разработка веб-сервисов  4 семестр: Системный анализ для архитекторов 8
  • 9. HighLoad. Лекция №1 Входные требования  Отличное знание протокола HTTP  Навыки разработки многопоточных приложений  Навыки проектирования баз данных  Базовые навыки работы в ОС семейства UNIX  Базовые знания об устройстве сетей 9
  • 10. HighLoad. Лекция №1 Выходные требования  Навык разработки распределенного ПО  Навык разработки ПО с учетом нагрузки  Навык разработки ПО пригодного для эксплуатации  Навык проектирования распределенных систем 10
  • 11. HighLoad. Лекция №1 Программа курса: лекции 1. Планирование мощностей 2. Сетевая подсистема 3. Оперативная память 4. Дисковая подсистема 5. Фронтенд-оптимизация 6. Масштабирование нагрузки 7. Планирование архитектуры 11
  • 12. HighLoad. Лекция №1 Программа курса: домашние задания 1. Разработка быстрого веб-сервера (5 апреля) 2. Нагрузочное тестирование веб-сервера (19 апреля) 3. Измерение размера кэша процессора (17 мая) 4. Анализ архитектуры интернет-проекта (24 мая) Сдача раньше срока приветствуется Сдача позже срока – половина баллов 12
  • 13. HighLoad. Лекция №1 Контроль знаний 1. Разработка быстрого веб-сервера (20 баллов) 2. Нагрузочное тестирование веб-сервера (10 баллов) 3. Измерение размера кэша процессора (10 баллов) 4. Анализ архитектуры интернет-проекта (10 баллов) 5. Экзамен (60 баллов) Оценка на экзамене: удовл. – 20 баллов, хор. – 40 баллов Пороговый рейтинг 60 баллов 13
  • 14. HighLoad. Лекция №1 Конец вводной части  Познакомились друг с другом  Разобрались зачем нужен этот курс  Убедились в важности этого курса  Узнали что нас ждет на занятиях 14
  • 15. HighLoad. Лекция №1 Содержание лекции  Анализ предметной области  Управление вычислительными мощностями  Архитектура многопоточного сетевого ПО 15
  • 16. HighLoad. Лекция №1 Анализ предметной области  Особенности интернет проектов  Аудитория интернета  Продуктовые метрики 16
  • 17. HighLoad. Лекция №1 Особенности интернет-проектов 17
  • 18. HighLoad. Лекция №1 Легкость входа на рынок  Доступность сервиса из любой точки мира  Низкая стоимость доставки сервиса потребителю  Низкая стоимость разработки и эксплуатации  Практически «нулевой» порог входа 18
  • 19. HighLoad. Лекция №1 Динамичность рынка  Высокая конкурентность рынка  Низкая привязанность пользователей к сервису  Популярность сервиса может расти очень быстро  … а падать еще быстрее  Факторы: качество обслуживания 19
  • 20. HighLoad. Лекция №1 Особенности монетизации  Низкая/нулевая доходность на одного пользователя  Сначала аудитория потом монетизация  ИТ-инфраструктура основная статья расходов  В некоторых случаях начальные затраты велики  Не все проекты выходят на окупаемость 20
  • 21. HighLoad. Лекция №1 ИТ-инфраструктура  Основа бизнеса и основная статья расходов  Высокие требования по скорости разработки  Высокие требования по масштабированию  Высокие требования по эффективности  Невыполнение равно выходу из бизнеса 21
  • 23. HighLoad. Лекция №1 Аудитория интернета: Россия 23
  • 24. HighLoad. Лекция №1 Аудитория интернета: Северная Америка 24
  • 25. HighLoad. Лекция №1 Аудитория интернета: Мир 25
  • 26. HighLoad. Лекция №1 Аудитория интернета: Мир 26
  • 27. HighLoad. Лекция №1 Аудитория проектов: Мир 27
  • 28. HighLoad. Лекция №1 Аудитория проектов: Россия 28
  • 29. HighLoad. Лекция №1 Возможные продуктовые метрики  Количество зарегистрированных пользователей  Суточная/недельная/месячная аудитория  Максимальное количество пользователей онлайн  Количество пользователей использующих функцию  Интенсивность использования разных функций  Средний размер данных пользователя  и т.п. 29
  • 30. HighLoad. Лекция №1 Управление вычислительными мощностями  Роли людей в проекте  Постановка целей управления  Подготовка точек измерения  Подготовка точек масштабирования  Принципы выбора оборудования  Единицы измерения  Методика измерения 30
  • 31. HighLoad. Лекция №1 Роли в проекте  Product Management  Development Engineering (Разработка)  Operations Engineering (Эксплуатация) 31
  • 32. HighLoad. Лекция №1 Роли в проекте: конфликт интересов 32
  • 34. HighLoad. Лекция №1 Роли в рамках различных лекций  В рамках этой лекции мы в отделе эксплуатации либо на позиции технического директора  Наши задачи в качестве руководителя разработки мы рассмотрим в последних лекциях про архитектуру 34
  • 35. HighLoad. Лекция №1 Установка целей  Получить требования от продуктовых менеджеров  Сформулировать требования в конкретных метриках (время ответа, % ошибок в ответах, uptime)  Проверить измеримость исполнения требований  Зафиксировать в Service Level Agreement (SLA) 35
  • 36. HighLoad. Лекция №1 Входная информация для планирования  Прогноз по росту проекта в продуктовых метриках  Статистика по проекту за предыдущий период  Ограничения (бюджет) по расходам на ИТ  Ограничения по качеству работы сервиса (SLA) 36
  • 37. HighLoad. Лекция №1 Доступность (Uptime) Доступность % Время простоя в год Время простоя в месяц 99% ("две девятки") 3.65 дней 7.20 часов 99.5% 1.83 дней 3.60 часов 99.9% ("три девятки") 8.76 часов 43.2 минут 99.95% 4.38 часов 21.56 минут 52.56 минут 4.32 минут 99.999% ("пять девяток") 5.26 минут 25.9 секунд 99.9999% ("шесть девяток”) 31.5 секунд 2.59 секунды 99.99% ("четыре девятки”) 37
  • 38. HighLoad. Лекция №1 Вопросы на которые нужно уметь отвечать  Какую нагрузку может выдержать сервис в текущей конфигурации ?  Какую нагрузку сервис выдержит если добавить N дополнительных серверов ?  Сколько и каких серверов нужно чтобы обслуживать заданную нагрузку в заданных условиях ?  Как планировать закупки оборудования исходя из планирующегося роста ? 38
  • 39. HighLoad. Лекция №1 Сервер имеет ограниченные ресурсы  Disk utilization  Disk storage  CPU  RAM  Network 39
  • 40. HighLoad. Лекция №1 Первый сервер Павла Дурова  БД и веб-сервер на одном физическом сервере  Можно настроить снятие метрик (как указано далее)  Однако невозможно понять какой сервис какие ресурсы сервера использует в каком  Невозможно понять каким из сервисов вызвана перегрузка ресурса  Возможен частный случай когда используемые ресурсы не пересекаются но он довольно редкий 40
  • 41. HighLoad. Лекция №1 Подготовка точек измерения  Система должны быть разбита на компоненты  Один компонент - одна или несколько функций  Разные функции должны «жить» на разных серверах  Под каждую функцию выделяется своя группа серверов внутри которой осуществляется горизонтальное масштабирование  Можно проследить связь между полезной нагрузкой на компоненту и загрузкой подсистем физического сервера 41
  • 42. HighLoad. Лекция №1 Определение максимальной нагрузки  Сервис расходует разные компоненты по-разному  При повышении нагрузки какой-то один ресурс кончится  Значение нагрузки в этот момент – предельное  Дальше сервис как правило не работает  Такой метод – самый надежный и простой 42
  • 43. HighLoad. Лекция №1 Выбор конфигурации оборудования  Разные сервисы имеют разные узкие места  Под каждый сервис отдельная конфигурация  На неиспользуемых ресурсах экономим  Используемыми ресурсами набиваем по максимуму  Железо со временем становится мощнее  Замена оборудования на новое может окупиться (по использованию электроэнергии и юнитам в стойке) 43
  • 44. HighLoad. Лекция №1 Масштабирование  Вертикальное (покупаем все более и более мощный сервер)  Горизонтальное (покупаем много дешевых однотипных серверов)  “Диагональное” (термин Jonh Allspaw описывает существующий метод) * Нужно учитывать совокупные затраты, построение горизонтально масштабируемого ПО стоит денег 44
  • 45. HighLoad. Лекция №1 Требования к инструментам измерения  Хранение истории измерений  Возможность добавления пользовательских метрик  Удобная визуализация данных (графики!)  Сравнение метрик из разных источников  Импорт/экспорт данных 45
  • 46. HighLoad. Лекция №1 Выбор инструмента измерения  Не так важно какой инструмент использовать  Важно выбрать правильные метрики для измерения  Важно выбрать ключевые метрики для анализа  Съем метрик с сервера не должен его нагружать Примеры систем: Cacti, Munin, Ganglia, MRTG, Graphite* 46
  • 47. HighLoad. Лекция №1 Взаимодействие с системами мониторинга  Не нужно путать систему построения графиков с другими системами понимаемыми под «мониторингом»  Графики не создают аварийных уведомлений, не включают сирену и ничего сами не «мониторят»  Графики просто используются для анализа функционирования системы во времени  Часто это полностью независимая система 47
  • 49. HighLoad. Лекция №1 Популярные инструменты и методики  RRDTool – циклическая база данных  SNMP – протокол удаленного съема метрик  Графики по метрикам приложений  Графики по логам сервисов (метрика последней надежды) 49
  • 50. HighLoad. Лекция №1 Популярные метрики  RPS – кол-во запросов в секунду (веб-сервер)  QPS – кол-во запросов в секунду (БД)  PPS – кол-во пакетов в секунду (сетевое оборудование)  Мbit/s – загрузка каналов связи  50
  • 58. HighLoad. Лекция №1 Страницы ошибок  Как правило не предназначены для пользователя  Плохо настроены потому что падать не планируется  Иногда встречаются настоящие шедевры 58
  • 59. HighLoad. Лекция №1 503 Service Unavailable 59
  • 60. HighLoad. Лекция №1 504 Gateway Timeout 60
  • 61. HighLoad. Лекция №1 503 Service Unavailable 61
  • 62. HighLoad. Лекция №1 503 Service Unavailable 62
  • 63. HighLoad. Лекция №1 503 Service Unavailable 63
  • 64. HighLoad. Лекция №1 500 Internal Server Error 64
  • 65. HighLoad. Лекция №1 500 Internal Server Error 65
  • 66. HighLoad. Лекция №1 500 Internal Server Error 66
  • 67. HighLoad. Лекция №1 Архитектура сетевого приложения  Самое распространенное приложение: веб-сервер  Самый распространенный веб-сервер: Apache  К сожалению далеко не самый быстрый  На примере этой задачи будем учиться писать ПО для высоких нагрузок 67
  • 68. HighLoad. Лекция №1 Блокирующая обработка соединений 68
  • 69. HighLoad. Лекция №1 Методы обработки большого кол-ва соединений  fork  prefork  threads  threads prefork  pooling 69
  • 70. HighLoad. Лекция №1 Неблокирующая обработка соединений Системные вызовы:  select  kqueue (FreeBSD 4.1+)  epoll (Linux 2.6+) Прикладные библиотеки:  libevent  libev Веб-серверы:  nginx  lighttpd  thttpd  0W-httpd  Tornado  Node.js 70
  • 71. HighLoad. Лекция №1 Статистика по распространенности серверов 71
  • 72. HighLoad. Лекция №1 Устройство типового веб-сайта /Perl /Python 72
  • 73. HighLoad. Лекция №1 Устройство типового веб-сайта 73
  • 74. HighLoad. Лекция №1 Подключение динамического содержимого  CGI  FastCGI и клоны  Apache: mod_php, mod_perl, mod_python …  Apache: mod_helloworld  nginx: ngx_http_helloworld_module  nginx: content_by_lua 74
  • 75. HighLoad. Лекция №1 Домашнее задание №1  Разработать веб-сервер отдающий статику с диска  Рекомендуется выбрать эффективную архитектуру  Требования и методика тестирования по ссылке: https://github.com/init/http-test-suite 75
  • 76. HighLoad. Лекция №1 Список литературы 1. The Art of Capacity Planning ISBN: 978-0-596-51857-8 2. The С10K Problem http://www.kegel.com/c10k.html 3. Сравнительный анализ архитектур серверных интернет-приложений для высоких нагрузок. Игорь Сысоев. 03.11. 2011 (лекция 1ч 31м) https://www.youtube.com/watch?v=aE0yawwB6h4 4. Hypertext Transfer Protocol -- HTTP/1.1 RFC 2616 76
  • 77. HighLoad. Лекция №1 Список литературы 5. Building Scalable Web Sites ISBN: 978-0-596-10235-7 6. Scalable Internet Architectures ISBN: 978-0-596-51857-8 77
  • 78. СПАСИБО ЗА ВНИМАНИЕ Быков Александр bykov@corp.mail.ru

Notas del editor

  1. 10 лет в веб-разработкеКакими проектами я занимался (Почта, Фото, Блоги, Реклама)Какой архитектурный опыт у меня имеется (рост почты с десятков до нескольких тысяч серверов)Почему я трачу свое время на чтение этого курса ?- хочу научить делать то что я умею, и что не умеют обычные разработчики- каждый разработчик должен хотеть стать системным архитектором, а админ – техническим директором
  2. Сослаться на теорию управления (кибернетику, АСУ)
  3. Пишем веб – подразумеваем любой сервис ориентированный на массового пользователя работающий по сети интернет.Многие подходы (но не все) могут быть применимы к другим отраслям.(ссылка на блок про предметную область который будет дальше в этой лекции)Примечания:Эффект масштаба – уменьшение издержек на пользователя (победитель получает все)Facebook – 1.23 млрд активных пользователей в декабре 2013 (месячная аудитория)
  4. Если ничего не делать сервис не выдержит нагрузки и «упадет» то пользователи уйдут к конкуренту, навсегда.Сервис который регулярно «лежит» или тормозит пользователям не нравится, они хотят предсказуемости и удобства.
  5. Задача научить думать нагрузками как при написании кода, так и при системном администрированииРазработчики должны думать как админы когда пишут код, а админы всегда думают про нагрузку и масштабирование
  6. До этого вы делали просто сайт и просто базу данных (уточнить что было в БД про «нагрузки»),теперь масштабируем то что написали на много много серверов (= пишем заново правильно).Когда пишем код учитываем требования QA, Безопасности, масштабируемости, надежности (курсы в этом семестре) а еще удобства поддержки и модификации под изменяющиеся бизнес-требования (4 семестр).
  7. Профилировка аудитории, вопросы:Чем отличаются процессы от потоков, что делает fork, что такое GIL, как выделяется/чистится память в C/Java, что такое pooling, сколько пакетов нужно чтобы установить и разорвать TCP/IP соединение, как работает MySQL репликация, чем отличается MyISAM от InnoDB, что такое chunked-encoding, как работает keep-alive, как на одном IP живет несколько сайтов, чем отличается apache от nginx ? Кто читает хабрахабр ?К 3-ей лекции должны выучить целиком, незнание протокола – неуд на экзаменеRFC 2616: HypertextTransferProtocol -- HTTP/1.1
  8. Мы почти НЕ обсуждаем:сбор бизнес требованийуправление разработкойнепосредственно разработку ПОСейчас мы работаем админами и решаем задачи отдела эксплуатации (почти).
  9. Подразумеваем ОС Linux.Формат взаимодействия: интерактивный, если вы не будете активно участвовать и задавать вопросы - толку не будетВ этой области нет теории которую можно выучить, есть практический опыт которым можно поделиться.
  10. На этом курсе у вас только программирование под Android, а поскольку технопарк ориентирован на практику я вынужден давать практические домашние задание по разработке в то время как курс у вас про архитектуру, зато пощупаете нагрузку, да и админы (Игорь Сысоев) тоже иногда программируют решая свои админские задачи.
  11. Подробнее будет в курсе «Управление продуктом», сейчас только те моменты которые нам нужны
  12. 1. На самом деле доступность ресурсов на другом континенте может быть не довольно низкой, об этом в Лекции №22. Для видео-сервисов стоимость канала уже один из важнейших факторов в структуре затрат3. Ошибки легко находить прямо на пользователях и на них же править, моментальное применение новых версий4. На самом деле есть вещи которые привязывают пользователя (данные), и ограничивают миграцию (язык)
  13. 1. На самом деле доступность ресурсов на другом континенте может быть не довольно низкой, об этом в Лекции №22. Для видео-сервисов стоимость канала уже один из важнейших факторов в структуре затрат3. Ошибки легко находить прямо на пользователях и на них же править, моментальное применение новых версий
  14. Рост по экспоненте довольно частое явлениеПример умерших сервисовне справившихся с нагрузкой: mySpaceНа самом деле есть вещи которые привязывают пользователя (данные), и ограничивают миграцию (язык)
  15. Twitter – пример сервиса который очень популярен но не научился зарабатыватьFacebook – пример сервиса который долго был безприбылен, а потом исправилсяПоиск – пример сервиса с очень дорогим начальным взносом
  16. Расходы: см. публичные отчеты Mail.Ru, Yandex, Google, Facebook, зарплаты и сервера вот и все расходыЭффективность важна - иначе не будет окупаться (потом в вертикальном масштабировании указать на важность стоимости)Пример умерших сервисовне справившихся с нагрузкой: mySpace (правда твиттеру это не сильно помешало)
  17. 1. На самом деле доступность ресурсов на другом континенте может быть не довольно низкой, об этом в Лекции №22. Для видео-сервисов стоимость канала уже один из важнейших факторов в структуре затрат3. Ошибки легко находить прямо на пользователях и на них же править, моментальное применение новых версий4. На самом деле есть вещи которые привязывают пользователя (данные), и ограничивают миграцию (язык)
  18. Надо заменить слайд потому что нет Google, но по нему данных нетНадо дать скорректированную аудиторию Facebook:
  19. Источник: TNS
  20. Аудиторные метрики позволяют планировать размеры хранилищ и сложность операций поискаФункциональные метрики измеряют конкретные запросы обработка которых загружает вычислительные мощностиПривести ключевые метрики разных сервисовmail.ru
  21. Как вариант позиция главного инженера координирующего работу отделов и являющегося экспертом в работе всех отделов.Как правило это технический руководитель проекта (технический директор)
  22. Нужно перевести продуктовые метрики в нагрузку на сервера и расширить узкие места, соблюдая все ограничения
  23. Ответить на эти вопросы невозможно без детального анализа архитектуры, общих взаимосвязей между компонентами и анализа загрузки по отдельным подсистемам.
  24. Может еще упереться по некоторым другим метрикам
  25. Проект начинающий путь к мировому господствуПример: memcached на фронтендах в архитектуре LiveJournalПоэтому общее правило на следующем слайде: разлеляй всеЯ лично видел много проектов где из-за несоблюдения правила было много проблем (Яндекс и OOM-killer)
  26. Подробнее про дизайн архитектуры в последних лекциях, сейчас мы формулируем требованияКниги по архитектуре интернет проектов – в списке литературы
  27. Аналогия с максимальной допустимой массой на мосту и методом ее установки запуском грузовиков.Способ получения: веса в балансировщике нагрузки (4-ая лекция)Контроль на новых версиях ПО: сервер с постоянной двойной нагрузкой
  28. Но при этом следим за удельной стоимостью ресурса – в местах где легко горизонтально масштабируется.Там где нет сравниваем потенциальную экономию на железе и затраты на разработку (исскуство, формальных критериев нет)
  29. Суть метода: «вертикально масштабируем горизонтально масштабируемые ноды»Неиспользование последнего метода ведет к резкому увеличению затрат на железо, а для второго случая и затрат на разработку сложного распределенного ПО.Создание Share nothing архитектуры часто бывает сложным или невозможным
  30. Cacti иMunin по отзывам не расчитаны на большое кол-во серверов но наиболее популярны.Ganglia разработана для больших кластеров и должна подойти.MRTG – для сетевого оборудования (SNMP)К сожалению я знаком только с одной системой – Graphite, она не занимается сбором данных, а только строит графики.
  31. Графики позволяют делать capacity decisions и problem resolution, в том числе аварийное.Организацию мониторинга, управления изменениями и качеством будем рассматривать позднее.
  32. Измерение отдельных подсистем будем рассматривать отдельно в следующих лекциях
  33. Кол-во запросов иногда измеряют в запросах в минуту, когда цифра запросов в секунду слишком маленькая/неудобная.
  34. Проблемы с доступностью вконтакте.
  35. Проблемы с доступностью вконтакте.
  36. в данном случае «1 UDP-пакет» = «1 запрос»1сервер «тянет» порядка 120 000 PPS,, поэтому используем много серверов
  37. Он же «хабраэффект»
  38. Заказали конкуренты
  39. В качестве эталонного сервера будем расказывать про nginx.
  40. Следующим заданием будет нагрузочное тестирование