SlideShare una empresa de Scribd logo
1 de 170
Разработка и
проектирование
высоконагруженных
систем
Олег Бунин
oleg.bunin@ontico.ru
Структура лекции
Первый блок:
•
•
•
•
•
•

Знакомство;
Цель обучения;
Принципы масштабируемости;
Архитектурные решения;
Виды масштабирования;
Трёхзвенная структура.

Второй блок:

• Архитектурные паттерны;
• Алгоритм проектирования высоконагруженных систем.

Третий блок:

• Примеры: профили на сайте знакомств, новостной сайт, френдлента;

Если успеем:

• Ошибки в разработке высоконагруженных систем;
• Хаки;
• Эксплуатация.

2
Знакомство
Давайте познакомимся!

3
Олег Бунин
• Председатель Программного комитета конференции
разработчиков высоконагруженных систем HighLoad++ вот уже
семь лет;

4
Олег Бунин
• Председатель Программного комитета конференции
разработчиков высоконагруженных систем HighLoad++ вот уже
семь лет;
• Руководитель компании по разработке и консалтингу в области
высоконагруженных проектов;

5
Олег Бунин
• Председатель Программного комитета конференции
разработчиков высоконагруженных систем HighLoad++ вот уже
семь лет;
• Руководитель компании по разработке и консалтингу в области
высоконагруженных проектов;
• Руководитель отдела веб-разработки компании Рамблер (ещё
тогда, когда Рамблер был номером один);

6
7
Кто вы?
• У кого пользователей больше 10 тысяч в сутки?

8
Кто вы?
• У кого пользователей больше 10 тысяч в сутки?
100 тысяч в сутки?

9
Кто вы?
• У кого пользователей больше 10 тысяч в сутки?
100 тысяч в сутки?
500 тысяч в сутки?

10
Кто вы?
• У кого пользователей больше 10 тысяч в сутки?
100 тысяч в сутки?
500 тысяч в сутки?
миллион в сутки?

11
Кто вы?
• У кого пользователей больше 10 тысяч в сутки?
100 тысяч в сутки?
500 тысяч в сутки?
миллион в сутки?
10 миллионов в сутки?

12
Кто вы?
• У кого есть в управлении сайты, расположенные на
выделенном сервере?

13
Кто вы?
• У кого есть в управлении сайты, расположенные на
выделенном сервере?
более, чем на двух выделенных серверах?

14
Кто вы?
• У кого есть в управлении сайты, расположенные на
выделенном сервере?
более, чем на двух выделенных серверах?
более, чем на пяти выделенных серверах?

15
Кто вы?
• У кого есть в управлении сайты, расположенные на
выделенном сервере?
более, чем на двух выделенных серверах?
более, чем на пяти выделенных серверах?
более, чем на двадцати выделенных серверах?

16
Цель нашей встречи

17
Цель нашей встречи
• Состоит в том, чтобы вы глубоко начали понимать смысл
происходящего в вашим программным кодом;
• Знание нескольких принципов заменяет знание множества
фактов;

18
Репликация полезна?

19
В чѐм суть репликации?
Запись

Мастер

Слейв
Репликация

Слейв

Слейв

Чтение
20
Репликация
• В чём суть репликации?
• Что происходит на серверах физически?

21
Репликация
• В чём суть репликации?
• Что происходит на серверах физически?
• Решает ли репликация любую проблему и всегда ли она полезна?

22
Репликация
• В чём суть репликации?
• Что происходит на серверах физически?
• Решает ли репликация любую проблему и всегда ли она полезна?

23
Репликация
• В чём суть репликации?
• Что происходит на серверах физически?
• Решает ли репликация любую проблему и всегда ли она полезна?
• Записей больше, чем чтения;

24
Репликация
• В чём суть репликации?
• Что происходит на серверах физически?
• Решает ли репликация любую проблему и всегда ли она полезна?
• Записей больше, чем чтения;
• Отсутствие консистентности данных;

25
Репликация
• В чём суть репликации?
• Что происходит на серверах физически?
• Решает ли репликация любую проблему и всегда ли она полезна?
• Записей больше, чем чтения;
• Отсутствие консистентности данных;
• Слишком много слейвов;

26
Репликация
• В чём суть репликации?
• Что происходит на серверах физически?
• Решает ли репликация любую проблему и всегда ли она полезна?
•
•
•
•

Записей больше, чем чтения;
Отсутствие консистентности данных;
Слишком много слейвов;
Слишком много данных;

27
Кеширование полезно?

28
Кеширование
• Поход в кеш занимает 20 миллисекунд;
• Поход к базе данных занимает 100 миллисекунд;

29
Кеширование
• Поход в кеш занимает 20 миллисекунд;
• Поход к базе данных занимает 100 миллисекунд;
• Попадание в кеш = 20 миллисекунд, промах = 120 миллисекунд;

30
Кеширование
• Поход в кеш занимает 20 миллисекунд;
• Поход к базе данных занимает 100 миллисекунд;
• Попадание в кеш = 20 миллисекунд, промах = 120 миллисекунд;
• Если количество промахов составляет:
•
•
•
•

10% -> кеш ускоряет выполнение приложения в 3.3 раза;
40% -> кеш ускоряет выполнение приложения в 1.7 раз;
80% -> кеш не приносит пользы;
90% -> кеш замедляет выполнение приложения.
31
Кеширование
• Поход в кеш занимает 20 миллисекунд;
• Поход к базе данных занимает 100 миллисекунд;
• Попадание в кеш = 20 миллисекунд, промах = 120 миллисекунд;
• Если количество промахов составляет:
•
•
•
•

10% -> кеш ускоряет выполнение приложения в 3.3 раза;
40% -> кеш ускоряет выполнение приложения в 1.7 раз;
80% -> кеш не приносит пользы;
90% -> кеш замедляет выполнение приложения.

• Вы знаете своё соотношение hit/miss?
32
Индексы полезны?

33
Индексы полезны?
• Индекс – это возможность по значению столбца или группы
столбцов быстро найти весь кортеж, всю строку в базе данных;

34
Индексы полезны?
• Индекс – это возможность по значению столбца или группы
столбцов быстро найти весь кортеж, всю строку в базе данных;
• Каждый индекс:
• замедляет выполнение операции вставки строки;
• увеличивает количество требуемой оперативной памяти;
• усложняет работу планировщика запросов.

35
Индексы полезны?
• Нужно учитывать селективность индекса;
• Индексы с низкой селективностью, не просто бесполезны, они
вредны;

36
Принципы построения
высоконагруженных
систем

37
Основная логика масштабируемости
• Рано или поздно в процессе оптимизации мы упираемся в
производительность аппаратного обеспечения;
• Значит надо сделать так, чтобы задачу можно было выполнять
одновременно на нескольких машинах;
• Это легко сделать в парадигме запрос-ответ, в которой работает
веб;
Как нужно учитывать будущее масштабирование?

38
Принципы построения
высоконагруженных систем
• Максимальная независимость компонент
• Отсутствие единой точки отказа:
• По функциональности;
• По данным;

39
Выбор архитектурного
решения

40
Выбор архитектурного решения

Сервисно-ориентированная
архитектура

41
Сервис-ориентированная архитектура
Каждый сервис решает строго определенную задачу.
Основной минус этого подхода заключается в наличии
оверхеда на интеркоммуникацию сервисов между собой и на
обработку API взаимодействия между слоями.
Выбор архитектурного решения

Монолитное приложение

43
Монолитное приложение
Приложение представляет из себя монолитный программный код.

Плюсы:
• Отсутствие какого-либо оверхеда на интеркоммуникацию сервисов;
Минусы:
• Высокая сложность разработки;
• В случае проблемы встает все;
• Невозможность вести распределенную разработку.
Выбор архитектурного решения

Ремесленный подход

45
Ремесленный подход
Приложение

Приложение

Приложение

Масштабируемая
архитектура

Масштабируемая
архитектура

Масштабируемая
архитектура

Система
хранения

Видео
хранилище

Кеш

СУБД

MySQL

Бизнес-логика проекта и
инструменты для
масштабирования
разрабатываются
одновременно, учитывая
особенности бизнеслогики именно этого
проекта.
Ремесленный подход
• Быстрая разработка любых новых решений;

• Высокие требования к квалификации разработчиков – низкая
масштабируемость разработки;
• Максимально эффективное использование технологий и
аппаратного обеспечения;
Выбор архитектурного решения

Промышленный подход

48
Промышленный подход
Страница

Страница

Приложение

Мобильная
версия

API для обмена данными

Слой веб-сервисов

Хранилище

Хранилище

Хранилище

Хранилище

Разработка инструментов
для масштабирования
происходит отдельно от
разработки бизнес-логики
прикладных проектов.
Промышленный подход
• Очень долгая разработка общих инструментов;
• Очень быстрая разработка приложений – происходит сборка
страниц как в конструкторе Lego;
• Возможность использовать для разработки приложений
программистов средней и низкой квалификации – высокая
масштабируемость разработки;
• Повышенные требования к аппаратному обеспечению;
Что такое
масштабирование?

51
Что такое масштабирование?

Вертикальное масштабирование

52
Вертикальное масштабирование
Увеличение
производительности
системы за счет
увеличения мощности
сервера.
В какой-то момент мы
все равно достигнем
предела по
процессору, памяти
или жесткому диску.
Что такое масштабирование?

Горизонтальное масштабирование

54
Горизонтальное масштабирование
Увеличение
производительности
системы за счет
подключения
дополнительных
cерверов
Что такое масштабирование?

Масштабирование во времени

56
Масштабирование “во времени”
Различные данные имеют различные требования к
обновлению. Это позволяет нам отложить часть обработки
данных до более удобного случая.
Трѐхзвенная структура

58
Трехзвенная структура

Фронтенды

Быстрая обработка легких
данных

Бекенды

Вычисление

Хранение
данных

Хранение данных
Для чего нужен фронтенд?

60
Фронтенд
• Отдача статического контента;
• Буферизация запросов;
• Масштабирование бекендов;
• Обслуживание медленных клиентов.

61
Балансировка фронтендов
Пользователи
Пользователи
Round-Robin

DNS-балансировка
DNS-балансировка
Heart Beat Или CARP. Идея в
том, что одна машинка не
работает и наблюдает за
другой. Если первая ломается,
то она включается. У обеих
машин один IP-адрес на
двоих.

IP1

IP1

IP2

IP2
Балансировка бекендов
Пользователи
Пользователи
Round-Robin

DNS-балансировка
DNS-балансировка

IP1

IP1

IP2

IP2

Бекенд

Бекенд

Бекенд

Бекенд
Дублирование фронтендов
П о то к зап р о со в
О сн о вн о й се р ве р

C A RP

В сп о м о гате л ьн ы й
се р ве р
Кофебрейк
Паттерны масштабирования сразу после перерыва в 30 минут

65
Паттерны
масштабирования
Вспомним инструменты, которые мы будем
использовать

66
Инструмент #1

Сервисно-ориентированная
архитектура

67
Инструмент #2

Вертикальное масштабирование

68
Инструмент #3

Горизонтальное масштабирование:
• Не храним состояние;
• Отсутствие общих узлов;

69
Инструмент #4

Отложенные вычисления

70
Инструмент #5

Асинхронная обработка

71
Очереди
Структура данных с дисциплиной доступа к элементам FIFO (First In
First Out).
Применения:
1. Отложенная обработка (рассылки, обновления лент новостей);
2. Межсервисная коммуникация;
Очереди: модерация
Резервный датацентр

Erang-фронтенд

Erlang-фронтенд

Erlang-фроненд

Фронтенд для
модератора

Удаление
сообщений

SQL
Заявки на удаление
сообщений
БД

БД

БД

Входящий
Rabbit MQ

SQL
Очередь на удаление
отмодерированных
комментариев

Копии всех обновлений

SQL

Исходящий
Rabbit MQ

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

Приложение,
обновляющее SQL
и считающая кучу
статистики
Интеркоммуникация сервисов
Задача: необходимо уведомлять одни части системы о событиях,
которые происходят в других частях:
• размещение информации в пользовательских лентах (feeds) о
событиях, произошедних в сообществах;
• лайки;
• комментарии;
• рассылка писем;
Интеркоммуникация:
решение с очередью

Пользователи
Пользователи

Всегда быть готовым
к дублированию
задач в очереди

Постинг поста

Сервис постов

Синхронная
постановка в
очередь

Очередь

Репликация или Heart beat
Синхронная запись в
базу данных

Репликация
очереди

Постоянная
база данных
Если очередь
сломалась –
переставляем
задачи по
постоянной
базе
сообщений

Разборщик
очереди
Интеркоммуникация: решение с
очередью

Это могут быть те же
сервера, что и
обрабатывают запросы от
фронтендами

Входящие Httpсервера сервиса Б

Сервис A

Внутренняя
очередь
сервиса А

Раздающий демон
сервиса А

Внутренняя
очередь
сервиса Б

Сервис Б

Сервис Б

Входящие Httpсервера сервиса Б

Сервис A

Обработка задач
сервиса А

Входящие Httpсервера сервиса Б

Забираем задачи

Push сообщений из
сервиса А во все
остальные сервисы

Сервис Б

Прием задач для
сервиса Б

Обработка задач
сервиса Б
Инструмент #6

Использование толстого клиента

77
Антишквал
Фронтенд

Первый запрос

Первый бекенд не ответил,
переходим ко второму

Сервис

Сервис

Ряд серверов-бекендов, выполняющих
однотипные задачи.
Запрос приходит на первый бекенд,
начинает выполняться, но не успевает за
время таймаута.
Фронтенд или толстый клиент
перебрасывает запрос на новый бекенд,
тот тоже не успевает.
Таким образом очень быстро вся сеть
бекендов будет положена.
Антишквал: умные запросы
Умные запросы от фронтенда:
Фронтенд

Фронтенд

Фронтенд

Третий запрос,
Timeout = 3с
Первый запрос,
Timeout = 1с

Сервис

Второй запрос,
Timeout = 2с

Сервис

Фронтенд

Четвертого запроса
просто нет.

• Первый запрос к первому бекенду идет с
таймаутом 1 секунду. Второй запрос идет с
таймаутом 2 секунды, третий - 3 секунды,
а четвертого уже нет. То есть ограничиваем
количество запросов;
• Бекенд может принимать решение о том,
что он перегружен (раз в секунду
спрашивать LA и кэшировать его). При
начале обработке запроса происходит
проверка и если LA слишком высокий отдаем фронту Gone Away (штатная
ситуация - перейди к другому бекенду).

Сервис

Сервис
Инструмент #7

Кеширование

80
Кеширование
• Кеширование в браузере;
• Кеширование HTML-блоков;
• Кеширование данных;
• Кеширование HTML-страниц.

81
Кеширование на бекенде;
Кеш

•
•
•
•

Единый кеш для всех бекендов;
Проблема инвалидации кеша;
Проблема старта с непрогретым кешем;
Целесообразность применения кеша;

Бекенд

Бекенд

Бекенд
Проблема
инвалидации
кеша

Программный
код

Update
(Обновление
элемента
кеша)

Select
(Запрос
элемента
кеша)

• Обновление по запросу
(проблема race condition
для нагруженных страниц);

Да
Есть значение
в кеше?

Возвращаем результат и
пишем в кеш
Пишем задачу в очередь

Кеш Memcached

• Фоновое обновление;

Нет
Класс для
вычисления
элемента кеша

Пишем в кеш

Используем одни модули для
онлайна и оффлайна

Читаем и обнуляем
очередь

Маленький
демон

Очередь

База данных
Инструмент #8

Функциональное разделение

84
Инструмент #9

Шардинг

85
Шардинг
Базовый принцип: те данные, которые в дальнейшем потребуются вместе, так же
должны храниться вместе.
Примеры:
1. Пользователи;
2. Посты в сообществах;
3. Блоги;
Принципы разбиения данных на шарды:
1. Центральный диспетчер, знающий, что где лежит;
2. Хэш-функция, по ключу вычисляющая шард;
3. Хэш-функция, по ключу вычисляющая виртуальный шард + таблица соответствий
виртуальных шардов реальным.
Инструмент #10

Виртуальные шарды

87
Шард 1

Шард 2

Шард 3

Шард 4

Шард 5

Шард 6

Виртуальные шарды

Шард 7

Шард 8

Сервер 1

Шард 1

Шард 2

Шард 3

Шард 4

Шард 5

Шард 6

Сервер 1

Шард 1

Шард 2

Сервер 1

Шард 7

Шард 8

Сервер 2

Шард 3

Шард 4

Шард 5

Сервер 3

Шард 6

Шард 7

Сервер 2

Шард 8

Сервер 4

Шард 1

Шард 2

Шард 3

Шард 4

Шард 5

Шард 6

Шард 7

Шард 8

Сервер 1

Сервер 5

Сервер 3

Сервер 6

Сервер 2

Сервер 7

Сервер 4

Сервер 8
Инструмент #11

Центральный диспетчер

89
Инструмент #12

Репликация

90
Репликация
Базы данных MongoDB
Push-сервер

Лог обновлений
MongoDB

Обновления слушаются с
одной из реплик

Реплики
MongoDB

AJAX-Соообщение об
обновлении
Репликация
Бекенд

Читаем с реплики

Бекенд
Чтение блога

Бекенд

Репликация

Реплики
MongoDB

Репликация

Публикация поста
Бекенд

Запись поста в блог

Мастер
MongoDB

Реплики
MongoDB
Инструмент #13

Партиционирование

92
Партиционирование
• Разбиение больших таблиц на логические части по выбранным
критериям;

93
Функциональное разделение базы
данных
Разные данные хранятся в разных таблицах
или

Разные данные хранятся в разных СУБД
или

Разные данные хранятся в разных типах СУБД
Инструмент #14

Денормализация

95
Денормализация данных
Денормализация — намеренное приведение структуры базы
данных в состояние, не соответствующее
критериям нормализации, обычно проводимое с целью
ускорения операций чтения из базы за счет добавления
избыточных данных.
Инструмент #15

Введение избыточности

97
Инструмент #16

Параллельное выполнение

98
Алгоритм
проектирования
высоконагруженной
системы

99
Алгоритм, ШАГ ПЕРВЫЙ
Опишем бизнес-логику будущей системы, включая потенциальные пути
развития системы

100
Алгоритм, ШАГ ВТОРОЙ
Посчитаем объёмы хранимых данных и скорость их приращения. Выбираем
критический путь – хранение, запись или чтение данных?

101
Алгоритм, ШАГ ТРЕТИЙ
Определить допустимую деградацию функций системы

102
Алгоритм, ШАГ ЧЕТВЕРТЫЙ
Построим схему движения данных и примем решение, какие из особенностей
проектируемой системы мы будем использовать

103
Алгоритм, ШАГ ПЯТЫЙ
Проектируем схему хранения данных

104
АЛГОРИТМ, ШАГ ШЕСТОЙ
Ломаем систему и смотрим, что у нас получится

105
Не пора ли кофебрейк?
Алгоритм проектирования сразу после перерыва в 30 минут

106
Примеры
ПРОФИЛИ НА САЙТЕ
ЗНАКОМСТВ
Спроектируем систему хранения пользователей на сайте знакомств

108
Сайт знакомств, профили / #1
1. Пользователь заполняет анкету;
2. Получает логин пароль для доступа к своему личному кабинету;
3. Пользователи могут смотреть профили друг друга;

109
Сайт знакомств, профили / #2
1. Пользователей 200 миллионов;
2. Каждая анкета занимает 10 килобайт, то есть всего 2 000
гигабайт;
3. Хитов в день 5 миллиардов;

110
Сайт знакомств, профили / #3
1. Деградация недопустима;

111
Сайт знакомств, профили / #4
1.
2.
3.
4.

Данные часто читаются, но редко меняются;
Все анкеты примерно одного размера;
У анкеты есть уникальный идентификатор;
Нет ярко выраженных лидеров;

112
Сайт знакомств, профили / #5

Проектируем схему
хранения данных
113
Сайт знакомств, профили / #5

Репликация?
Вообще 140к чтений в секунду

114
Сайт знакомств, профили / #5

Шардирование?
По какому ключу? Диспетчер?

115
Сайт знакомств, профили / #6

Виртуальные шарды

116
Сайт знакомств, профили / #6

Сгорает диск?

117
Сайт знакомств, пользователи / #6

Репликация

118
Сайт знакомств, профили /
результат
• Разбиваем весь массив пользователей на виртуальные шарды;
• Маппим виртуальные шарды на реальные шарды;
• Внутри каждого шарда реплицируем информацию для
отказоустойчивости

119
Стажировка!
oleg.bunin@ontico.ru
Задания на стажировку
• В двух абзацах и одной схеме описать различия в СУБД MySQL и
PostgreSQL;
• Предположить, какие особенности в оптимизации и архитектуре
накладывают из-за этого различия возникают;
• Результаты прислать на oleg.bunin@ontico.ru

121
НОВОСТНОЙ САЙТ
Большая и длинная лента новостей крупного СМИ

122
Новости / #1
• Пользователь читает свежие новости;
• Пользователь читает архивные новости;
• Редактор публикует новости;

123
Новости / #2
• Каждая новость примерно 10 килобайт;
• Мы вечно храним архив с даты основания СМИ – 2000 год;
• В день публикуется около 10 тысяч различных региональных и
федеральных новостей;
• Итого в год 3 миллиона 500 тысяч новостей, в год 35 гигабайт, за
20 лет – 700 гигабайт;
• Это крупнейшее СМИ, посещаемость – 10 миллионов человек в
сутки;

124
Новости / #3
• Деградация недопустима;

125
Новости / #4
• Количество чтений на несколько порядков превышает количество
записей;
• 99% запросов касаются последнего дня;
• 99,99% запросов касаются последней недели.

126
Новости / #5

Проектируем схему
хранения данных
127
Новости / #5

Партиционирование
По какому принципу?

128
Новости / #5

Как переносить данные из горячей БД
в архив?

129
Новости / #5

Не надо ничего переносить! Вводим

избыточность!
130
Новости / #5

Очень много запросов к
горячим новостям!
Что делать?

131
Новости / #5

Кеширование!

132
Новости / результат
• Кеширование для горячих новостей;
• Партиционирование новостей по дате – последние новости в
быстрой таблице;
• Избыточное хранение новостей – новость пишется сразу и в
горячую таблицу и в архивную, горячая раз в какое-то время
чистится;

133
ПРОСМОТР ФРЕНДЛЕНТЫ
Просмотр френдлента в блогах

134
Просмотр френдленты / #1
• У пользователя может быть сколько угодно друзей;
• Френдленту храним бесконечно долго;

135
Просмотр френдленты / #2
• В среднем у пользователя 100 друзей;
• Каждый пользователь в среднем пишет 3 поста в день;
• Каждый пост занимаем около 1 килобайта;
• Пользователей – 10 миллионов в сутки, но каждый пользователь
делает 100 хитов. Итого – миллиард запросов к френдленте в
сутки;
• В сутки генерируется 30 миллионов постов, 10 миллиардов
записей в год;

136
Просмотр френдленты / #3
• Допустимо, что пользователь увидит запись своего друга не
моментально, а с небольшой задержкой;
• Допустимо, что порядок записей не будет строго совпадать с
хронологическим;

137
Просмотр френдленты / #4
• 99% запросов приходятся на голову френдленты;
• У нас есть пользователи, которые в друзьях у миллионов
пользователей;

138
Просмотр френдленты / #5

Проектируем схему
хранения данных
139
Просмотр френдленты / #5

Избыточность?
Каждому пользователю свой список записей в его френдленте? Это
же очень много – один триллион записей за год!

140
Просмотр френдленты / #5

Храним для каждого пользователя
ленту идентификаторов постов!

141
Просмотр френдленты / #5

Шардирование?
Чего? По какому принципу?

142
Просмотр френдленты / #5

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

143
Просмотр френдленты / #5

Достали список
идентификаторов постов
Как собрать ленту?

144
Просмотр френдленты / #5

Толстый клиент!

145
Просмотр френдленты / #5

Если вы круты, то можете попробовать

Параллельные вычисления
146
Просмотр френдленты / результаты
• Пользователи шардируются, рядом с пользователями лежат его
посты и его френдлента;
• В френдленте пользователя уже записаны идентификаторы
постов его друзей в порядке, близком к хронологическому;
• В идентификатор поста зашит ID пользователя, по которому мы
быстро определяем шард и забираем с него текст поста;
• За текстом поста у нас будет ходить JS-машина, работающая на
клиенте.
147
Запись френдленты / #5

А как посты попадают в
френдленту?
У нас ведь есть пользователи, которые в друзьях у миллионов?

148
Запись френдленты / #5

Используем очереди!

149
И далее по аналогии
Алгоритм универсален!

150
Блок “Если успеем”
На этот раз уже без перерыва!

151
Надежность
высоконагруженной вебсистемы

152
Принципы надежности
• Взаимозаменяемость серверов;
• Избыточность данных, дублирование узлов:
• Фронтенд: DNS-балансировка, CARP, heartbeat;
• Бекенд: гомогенные взаимозаменяемые бекенды;
• База данных: дублирование данных, репликации, кластера;
Мониторинг

154
Мониторинг
Вы должны с абсолютной точностью знать, что происходит в
системе.
• Мониторинг серверов;
• Мониторинг приложений;
• Мониторинг элементов приложений;
• Мониторинг показателей базы данных;
Мониторинг: pinba
Мониторинг: pinba
Деплоймент
Регулярный быстрый автоматический деплоймент с возможностью
сплит-тестирования и возможностью быстрого отката.
Лайфхаки

159
Различное строение СУБД

160
Буферизация в операционной системе
База данных

apache

nginx

Операционная система,
Сетевая подсистема

Электрический сигнал

Память

PHP

Операционная система,
дисковая подсистема

Диск

Сетевая карта

161
Синхронная обработка,
синхронные запросы

162
Бездумное использование
ORM

163
Стажировка!
oleg.bunin@ontico.ru
Задания на стажировку
• В двух абзацах и одной схеме описать различия в СУБД MySQL и
PostgreSQL;
• Предположить, какие особенности в оптимизации и архитектуре
накладывают из-за этого различия возникают;
• Результаты прислать на oleg.bunin@ontico.ru

165
Вопросы?
oleg.bunin@ontico.ru
Дополнительные примеры

167
Event-driven чат
Быстрый сервер
Node.JS или
phpDaemon
AJAX Long polling
Поток репликации

Основная база
MySQL

POST-запрос с сообщением

Быстрая база
MongoDB

Клиенты
Пишем постоянную версию

Основной сервер (PHPбекенд)
Лента новостей
Пользователь А
публикует запись

Сохраняем запись в
статичном постоянном
хранилище

Запись не
сохранилась

Нет

Этот процесс тоже можно
оптимизировать, группировать.
Сначала можно запросить
подробности по двум записям,
потом по четырем, потом по всем
оставшимся.

Постоянное
хранилище

Удачно?

Хранилище лент,
каждая лента =
список
идентификаторов
записей

Да
Удаляем (или не
коммитим) запись в
статичное хранилище.

Нет

Запрашиваем список
идентификаторов
записей из ленты B

Обрабатываем
идентификаторы и для
каждого из них
запрашиваем данные из
постоянного хранилища

Например,
RabbitMQ

Ставим в очередь З
задачу обновить ленты
подписчиков
пользователя А

Удачны обе
операции?

Пользователь B,
подписанный на
пользователя А, читает
свою ленту

Сервер
очередей

Да

Публикация произошла
успешно

Страница
построена

Пул процессов,
обслуживающих
очередь

Обновляем
соответствующие
списки
идентификаторов
Отдача
фотографии напрямую
с хоста

Database / 1
Backend / 1
По scp заливаем фотку (все варианты)
на один из серверов

MySQL

PHP + Limb

Backend / 2
Image Server / 1
nginx

Image Server / 2
nginx

User images

User images

PHP + Limb

Image Server / 3
nginx

После того, как nginx
полностью принял
фотографию, он
отправляет ее в
php-бекенд

User images

Frontend / 1
nginx

Backend / 3

Пишем в базу
данных метаинформацию
о фотографии

PHP + Limb
Демоны

Frontend / 2
nginx

memcached

Design images

Design images

Закачивание
фотографии

DNS-Балансинг
DNS-Балансинг

Пользователи

memcached

Хранение
бинарных
данных

Más contenido relacionado

La actualidad más candente

Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.ScrumTrek
 
Переписать нельзя рефакторить
Переписать нельзя рефакторитьПереписать нельзя рефакторить
Переписать нельзя рефакторитьCEE-SEC(R)
 
Управление удаленной командой тестировщиков
Управление удаленной командой тестировщиковУправление удаленной командой тестировщиков
Управление удаленной командой тестировщиковISS Art, LLC
 
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаSoftware craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаPavel Veinik
 
Management of projects
Management of projectsManagement of projects
Management of projectsMageCloud
 
Контроль над распределенной командой
Контроль над распределенной командойКонтроль над распределенной командой
Контроль над распределенной командойISS Art, LLC
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай КрапивныйCodeFest
 
Вадим Зубович - Sikuli Script - идеальный инструмент для обучения автоматизации
Вадим Зубович - Sikuli Script - идеальный инструмент для обучения автоматизацииВадим Зубович - Sikuli Script - идеальный инструмент для обучения автоматизации
Вадим Зубович - Sikuli Script - идеальный инструмент для обучения автоматизацииQA Club Minsk
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.ScrumTrek
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущееBadoo Development
 
Максим Мельников. Как мы меняли ЦИАН. Эволюция продакт-менеджера
Максим Мельников. Как мы меняли ЦИАН. Эволюция продакт-менеджераМаксим Мельников. Как мы меняли ЦИАН. Эволюция продакт-менеджера
Максим Мельников. Как мы меняли ЦИАН. Эволюция продакт-менеджераScrumTrek
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance managementCEE-SEC(R)
 
Алексей Пименов. Kanban — это не то, что вы привыкли о нем думать
Алексей Пименов. Kanban — это не то, что вы привыкли о нем думатьАлексей Пименов. Kanban — это не то, что вы привыкли о нем думать
Алексей Пименов. Kanban — это не то, что вы привыкли о нем думатьScrumTrek
 
Discovery Kanban для управления беклогом Scrum-команды
Discovery Kanban для управления беклогом Scrum-командыDiscovery Kanban для управления беклогом Scrum-команды
Discovery Kanban для управления беклогом Scrum-командыCEE-SEC(R)
 
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникацийАлексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникацийScrumTrek
 
Как автотесты ускоряют релизы в OK.ru
Как автотесты ускоряют релизы в OK.ruКак автотесты ускоряют релизы в OK.ru
Как автотесты ускоряют релизы в OK.ruBadoo Development
 
Инструменты гибкого управления: Agile / Kanban / Scrum
Инструменты гибкого управления: Agile / Kanban / ScrumИнструменты гибкого управления: Agile / Kanban / Scrum
Инструменты гибкого управления: Agile / Kanban / ScrumDenis Tuchin
 
Длинный путь к DevOps?
Длинный путь к DevOps?Длинный путь к DevOps?
Длинный путь к DevOps?CEE-SEC(R)
 
Адаптация Jira стэка для 1с продуктов
Адаптация Jira стэка для 1с продуктовАдаптация Jira стэка для 1с продуктов
Адаптация Jira стэка для 1с продуктовAlexey Lustin
 

La actualidad más candente (20)

Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
 
Переписать нельзя рефакторить
Переписать нельзя рефакторитьПереписать нельзя рефакторить
Переписать нельзя рефакторить
 
Управление удаленной командой тестировщиков
Управление удаленной командой тестировщиковУправление удаленной командой тестировщиков
Управление удаленной командой тестировщиков
 
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаSoftware craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчика
 
Agile
AgileAgile
Agile
 
Management of projects
Management of projectsManagement of projects
Management of projects
 
Контроль над распределенной командой
Контроль над распределенной командойКонтроль над распределенной командой
Контроль над распределенной командой
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай Крапивный
 
Вадим Зубович - Sikuli Script - идеальный инструмент для обучения автоматизации
Вадим Зубович - Sikuli Script - идеальный инструмент для обучения автоматизацииВадим Зубович - Sikuli Script - идеальный инструмент для обучения автоматизации
Вадим Зубович - Sikuli Script - идеальный инструмент для обучения автоматизации
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущее
 
Максим Мельников. Как мы меняли ЦИАН. Эволюция продакт-менеджера
Максим Мельников. Как мы меняли ЦИАН. Эволюция продакт-менеджераМаксим Мельников. Как мы меняли ЦИАН. Эволюция продакт-менеджера
Максим Мельников. Как мы меняли ЦИАН. Эволюция продакт-менеджера
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance management
 
Алексей Пименов. Kanban — это не то, что вы привыкли о нем думать
Алексей Пименов. Kanban — это не то, что вы привыкли о нем думатьАлексей Пименов. Kanban — это не то, что вы привыкли о нем думать
Алексей Пименов. Kanban — это не то, что вы привыкли о нем думать
 
Discovery Kanban для управления беклогом Scrum-команды
Discovery Kanban для управления беклогом Scrum-командыDiscovery Kanban для управления беклогом Scrum-команды
Discovery Kanban для управления беклогом Scrum-команды
 
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникацийАлексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
Алексей Трошин. Менеджер не нужен: быстрые шаблоны правильных коммуникаций
 
Как автотесты ускоряют релизы в OK.ru
Как автотесты ускоряют релизы в OK.ruКак автотесты ускоряют релизы в OK.ru
Как автотесты ускоряют релизы в OK.ru
 
Инструменты гибкого управления: Agile / Kanban / Scrum
Инструменты гибкого управления: Agile / Kanban / ScrumИнструменты гибкого управления: Agile / Kanban / Scrum
Инструменты гибкого управления: Agile / Kanban / Scrum
 
Длинный путь к DevOps?
Длинный путь к DevOps?Длинный путь к DevOps?
Длинный путь к DevOps?
 
Адаптация Jira стэка для 1с продуктов
Адаптация Jira стэка для 1с продуктовАдаптация Jira стэка для 1с продуктов
Адаптация Jira стэка для 1с продуктов
 

Destacado

~20081006 Highload2008 Postgresql самохвалов
~20081006 Highload2008 Postgresql самохвалов~20081006 Highload2008 Postgresql самохвалов
~20081006 Highload2008 Postgresql самохваловOntico
 
Call for papers (2014) ru
Call for papers (2014) ruCall for papers (2014) ru
Call for papers (2014) ruOntico
 
Встреча докладчиков HL++ 2015
Встреча докладчиков HL++ 2015Встреча докладчиков HL++ 2015
Встреча докладчиков HL++ 2015Ontico
 
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)Ontico
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Ontico
 
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...Ontico
 

Destacado (6)

~20081006 Highload2008 Postgresql самохвалов
~20081006 Highload2008 Postgresql самохвалов~20081006 Highload2008 Postgresql самохвалов
~20081006 Highload2008 Postgresql самохвалов
 
Call for papers (2014) ru
Call for papers (2014) ruCall for papers (2014) ru
Call for papers (2014) ru
 
Встреча докладчиков HL++ 2015
Встреча докладчиков HL++ 2015Встреча докладчиков HL++ 2015
Встреча докладчиков HL++ 2015
 
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
 
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...
 

Similar a Учебный день конференции HighLoad++ 2013

Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontendDenis Kolesnikov
 
О фреймворках Backend conf 2016
О фреймворках Backend conf 2016О фреймворках Backend conf 2016
О фреймворках Backend conf 2016Roman Ivliev
 
О фреймворках / Роман Ивлиев (Банки.ру)
О фреймворках / Роман Ивлиев (Банки.ру)О фреймворках / Роман Ивлиев (Банки.ру)
О фреймворках / Роман Ивлиев (Банки.ру)Ontico
 
Методологии разработки по
Методологии разработки поМетодологии разработки по
Методологии разработки поJaneKozmina
 
Микросервисы: первая кровь
Микросервисы: первая кровьМикросервисы: первая кровь
Микросервисы: первая кровьМаксим Сячин
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityPositive Hack Days
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Ontico
 
It talk №23: "Если не Scrum, то что?", Екатерина Шалапанова
It talk №23: "Если не Scrum, то что?", Екатерина ШалапановаIt talk №23: "Если не Scrum, то что?", Екатерина Шалапанова
It talk №23: "Если не Scrum, то что?", Екатерина ШалапановаMarina Peregud
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтендViacheslav Slinko
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Ontico
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
DevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуDevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуAndrey Rebrov
 
Гибкость, возведенная в абсолют
Гибкость, возведенная в абсолютГибкость, возведенная в абсолют
Гибкость, возведенная в абсолютamirutov
 
Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...tabtabus
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0WRider
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 

Similar a Учебный день конференции HighLoad++ 2013 (20)

Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontend
 
О фреймворках Backend conf 2016
О фреймворках Backend conf 2016О фреймворках Backend conf 2016
О фреймворках Backend conf 2016
 
О фреймворках / Роман Ивлиев (Банки.ру)
О фреймворках / Роман Ивлиев (Банки.ру)О фреймворках / Роман Ивлиев (Банки.ру)
О фреймворках / Роман Ивлиев (Банки.ру)
 
Методологии разработки по
Методологии разработки поМетодологии разработки по
Методологии разработки по
 
Микросервисы: первая кровь
Микросервисы: первая кровьМикросервисы: первая кровь
Микросервисы: первая кровь
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Wild microservices and imaginary DevOps
Wild microservices and imaginary DevOpsWild microservices and imaginary DevOps
Wild microservices and imaginary DevOps
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
 
Team workflow
Team workflowTeam workflow
Team workflow
 
It talk №23: "Если не Scrum, то что?", Екатерина Шалапанова
It talk №23: "Если не Scrum, то что?", Екатерина ШалапановаIt talk №23: "Если не Scrum, то что?", Екатерина Шалапанова
It talk №23: "Если не Scrum, то что?", Екатерина Шалапанова
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтенд
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenches
 
DevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуDevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почему
 
Гибкость, возведенная в абсолют
Гибкость, возведенная в абсолютГибкость, возведенная в абсолют
Гибкость, возведенная в абсолют
 
Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 

Más de Ontico

Конференции Онтико (2011)
Конференции Онтико (2011)Конференции Онтико (2011)
Конференции Онтико (2011)Ontico
 
Программный комитет HighLoad++, 6 октября
Программный комитет HighLoad++, 6 октябряПрограммный комитет HighLoad++, 6 октября
Программный комитет HighLoad++, 6 октябряOntico
 
Конференции 2010 / описание
Конференции 2010 / описаниеКонференции 2010 / описание
Конференции 2010 / описаниеOntico
 
Онтико, 2009
Онтико, 2009Онтико, 2009
Онтико, 2009Ontico
 
Конференции 2010
Конференции 2010Конференции 2010
Конференции 2010Ontico
 
Economy of project development
Economy of project developmentEconomy of project development
Economy of project developmentOntico
 
Ok2009 Пленарка
Ok2009 ПленаркаOk2009 Пленарка
Ok2009 ПленаркаOntico
 
Highload sites, master-class, OK-2009
Highload sites, master-class, OK-2009Highload sites, master-class, OK-2009
Highload sites, master-class, OK-2009Ontico
 
HighLoad Sites, Oleg Bunin
HighLoad Sites, Oleg BuninHighLoad Sites, Oleg Bunin
HighLoad Sites, Oleg BuninOntico
 
I Safety 1c Bitrix
I Safety 1c BitrixI Safety 1c Bitrix
I Safety 1c BitrixOntico
 
I Safety 1c Bitrix
I Safety 1c BitrixI Safety 1c Bitrix
I Safety 1c BitrixOntico
 
Gmr Highload Presentation Revised
Gmr Highload Presentation RevisedGmr Highload Presentation Revised
Gmr Highload Presentation RevisedOntico
 
Wonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 RusWonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 RusOntico
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusOntico
 
Innodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusInnodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusOntico
 
особенности построения собственной полнофункциональной Im сети
особенности построения собственной полнофункциональной Im сетиособенности построения собственной полнофункциональной Im сети
особенности построения собственной полнофункциональной Im сетиOntico
 
использование смс технологий в высоконагруженных Web проектах дмитрий булыч...
использование смс технологий в высоконагруженных Web проектах   дмитрий булыч...использование смс технологий в высоконагруженных Web проектах   дмитрий булыч...
использование смс технологий в высоконагруженных Web проектах дмитрий булыч...Ontico
 
архитектурные приемы онлайн игры
архитектурные приемы онлайн игрыархитектурные приемы онлайн игры
архитектурные приемы онлайн игрыOntico
 
Tupitsyn High Load
Tupitsyn High LoadTupitsyn High Load
Tupitsyn High LoadOntico
 
Spread Zaytsev3
Spread Zaytsev3Spread Zaytsev3
Spread Zaytsev3Ontico
 

Más de Ontico (20)

Конференции Онтико (2011)
Конференции Онтико (2011)Конференции Онтико (2011)
Конференции Онтико (2011)
 
Программный комитет HighLoad++, 6 октября
Программный комитет HighLoad++, 6 октябряПрограммный комитет HighLoad++, 6 октября
Программный комитет HighLoad++, 6 октября
 
Конференции 2010 / описание
Конференции 2010 / описаниеКонференции 2010 / описание
Конференции 2010 / описание
 
Онтико, 2009
Онтико, 2009Онтико, 2009
Онтико, 2009
 
Конференции 2010
Конференции 2010Конференции 2010
Конференции 2010
 
Economy of project development
Economy of project developmentEconomy of project development
Economy of project development
 
Ok2009 Пленарка
Ok2009 ПленаркаOk2009 Пленарка
Ok2009 Пленарка
 
Highload sites, master-class, OK-2009
Highload sites, master-class, OK-2009Highload sites, master-class, OK-2009
Highload sites, master-class, OK-2009
 
HighLoad Sites, Oleg Bunin
HighLoad Sites, Oleg BuninHighLoad Sites, Oleg Bunin
HighLoad Sites, Oleg Bunin
 
I Safety 1c Bitrix
I Safety 1c BitrixI Safety 1c Bitrix
I Safety 1c Bitrix
 
I Safety 1c Bitrix
I Safety 1c BitrixI Safety 1c Bitrix
I Safety 1c Bitrix
 
Gmr Highload Presentation Revised
Gmr Highload Presentation RevisedGmr Highload Presentation Revised
Gmr Highload Presentation Revised
 
Wonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 RusWonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 Rus
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 Rus
 
Innodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusInnodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 Rus
 
особенности построения собственной полнофункциональной Im сети
особенности построения собственной полнофункциональной Im сетиособенности построения собственной полнофункциональной Im сети
особенности построения собственной полнофункциональной Im сети
 
использование смс технологий в высоконагруженных Web проектах дмитрий булыч...
использование смс технологий в высоконагруженных Web проектах   дмитрий булыч...использование смс технологий в высоконагруженных Web проектах   дмитрий булыч...
использование смс технологий в высоконагруженных Web проектах дмитрий булыч...
 
архитектурные приемы онлайн игры
архитектурные приемы онлайн игрыархитектурные приемы онлайн игры
архитектурные приемы онлайн игры
 
Tupitsyn High Load
Tupitsyn High LoadTupitsyn High Load
Tupitsyn High Load
 
Spread Zaytsev3
Spread Zaytsev3Spread Zaytsev3
Spread Zaytsev3
 

Учебный день конференции HighLoad++ 2013