SlideShare una empresa de Scribd logo
1 de 80
Descargar para leer sin conexión
© Copyright 2014 Andrey Smirnov
Разработка
высоконагруженных 

и надежных систем
Андрей Смирнов, 2014
© Copyright 2014 Andrey Smirnov


Введение
Вебинар №1
© Copyright 2014 Andrey Smirnov
Обо мне
© Copyright 2014 Andrey Smirnov
О серии вебинаров
© Copyright 2014 Andrey Smirnov
План вебинаров
1. Введение (этот вебинар)
2. Данные I. От основ хранения до РСУБД
3. Данные II. Шардинг, key-value и распределенные хранилища
4. Приложение
5. Архитектура веб-систем
6. Взаимодействие с клиентским приложением. Тестирование
7. Отказоустойчивость, мониторинг и выкатывание
© Copyright 2014 Andrey Smirnov
© Copyright 2014 Andrey Smirnov
Данные I + II
© Copyright 2014 Andrey Smirnov
Данные I. От основ
хранения до РСУБД
• Базовые принципы хранения данных. Хранение на
диске и в памяти.
• ACID. Реляционные БД.
• Проектирование схемы реальной БД в различных
моделях данных.
• Индексы, денормализация, использование разных
типов хранилищ для разных данных.
• Партиционирование. Репликация.
• Полнотекстовый поиск.
20 января 2015

18:00
© Copyright 2014 Andrey Smirnov
Данные II. Шардинг, key-value
и распределенные хранилища
• Масштабирование: шардинг в реляционных и key-
value хранилищах.
• Key-value хранилища.
• CAP-теорема.
• Распределенные хранилища. Консистентность.
• Кешированные данных: инвалидация кеша,
тегирование кешей.
21 января 2015

18:00
© Copyright 2014 Andrey Smirnov
Приложение
© Copyright 2014 Andrey Smirnov
Приложение
• Структура серверного и клиентского приложения, анализ
узких и проблемных мест.
• Сетевой ввод-вывод: синхронный, асинхронный. Реактор,
обслуживание большого числа соединений (C10K, C100K).
• Многозадачность: процессы, нити, кооперативная
многозадачность, комбинации.
• Краткий обзор фреймворков и языков программирования:
Ruby, Python, Go, Java, C#, Erlang, JavaScript.
• Безопасность. Типичные уязвимости. Пользователи и
пароли. CSRF. 3 февраля 2015

18:00
© Copyright 2014 Andrey Smirnov
Архитектура
© Copyright 2014 Andrey Smirnov
Архитектура веб-систем
• Архитектура системы: монолитная, сервис-
ориентированная (SOA).
• Непосредственный вызов (RPC), очереди,
персистентные очереди, очереди фоновых задач.
• Шины, широковещательные каналы.
• Примеры и разбор реальных архитектур веб-
приложений.
5 февраля 2015

18:00
© Copyright 2014 Andrey Smirnov
Клиент,
Тестирование
© Copyright 2014 Andrey Smirnov
Взаимодействие с клиентским
приложением. Тестирование
• Синхронизация данных, работа в offline,
информирование пользователя.
• Сетевое взаимодействие с сервером. Ошибки
API. Клиент как веб-сервис. Алгоритмы повтора
запроса.
• Нагрузочное и системное тестирование.
• Почему unit-тестирование бесполезно.
• Непрерывное тестирование, постоянное
выкатывание. 10 февраля 2015

18:00
© Copyright 2014 Andrey Smirnov
Эксплуатация
© Copyright 2014 Andrey Smirnov
Отказоустойчивость,
мониторинг и выкатывание
• Оценка нагрузки и планирование ресурсов.
• Резервное копирование, репликация. Master-Slave. Hot-Spare.
• Несколько дата-центров, схемы Active-Failover, Master-Slave,
Active-Active.
• Обеспечение консистентности. Протоколы голосования.
• Выбор между “облаком” и железом.
• Выкатывание проекта, управление конфигурацией.
Логирование. Мониторинг.
17 февраля 2015

18:00
© Copyright 2014 Andrey Smirnov
Данные I + II
Приложение
Клиент,
Тестирование
Архитектура
Эксплуатация
© Copyright 2014 Andrey Smirnov
Бронируйте места!
• Сегодня каждый вебинар стоит 4 000 руб. (5 000
для юрлиц)
• Все 6 вебинаров: 16 000 руб. (скидка 33%) (21
000 руб. для юрлиц)
• Цена будет увеличиваться ближе к дате начала
вебинаров!
© Copyright 2014 Andrey Smirnov
Нагрузка
• Что такое высокая нагрузка?
• Что такое нагрузка?
© Copyright 2014 Andrey Smirnov
Примеры
• Google: 70 000 req/s (поиск)
• Twitter: 700 tweet/s (новые твиты), 24 000 req/s
(поиск)
• Facebook: 3000 msg/s
• Yandex: 2000 req/s (поиск)
© Copyright 2014 Andrey Smirnov
Еще примеры
• Fastly (CDN): 500 000 req/s, 77 Gbit/s
• Akamai (CDN): 12 000 000 req/s (2010)
© Copyright 2014 Andrey Smirnov
И еще
• Google Public DNS: 1 504 629 req/s



47 450 000 000 000 (47 триллионов) 

запросов в год 



лог запросов (100 байт на запрос) 

занял бы 4315 Тб
© Copyright 2014 Andrey Smirnov
Нагрузка
• Запросы, кол-во запросов в секунду
• Задержка, время обработки запроса
• Конкурентность, одновременные запросы
• Отказы
© Copyright 2014 Andrey Smirnov
Производительность
• Нагрузка отнесенная к используемым ресурсам и
времени выполнения
© Copyright 2014 Andrey Smirnov
Надежность
• Доступность - процент время, когда система
работоспособна с точки зрения пользователя
• Почему надежность важна?
• Надежность vs. ошибки
• Надежность с точки зрения пользователя
© Copyright 2014 Andrey Smirnov
Примеры
• Amazon: выручка за 2013: $74.5 * 109, 

$2362/sec
© Copyright 2014 Andrey Smirnov
Google Apps
• Доступность: кол-во ошибок > 5% в течение
минуты
• 99.9% доступности в месяц (43 минуты downtime)
© Copyright 2014 Andrey Smirnov
Доступность
• 99% - 89 часов недоступности в год
• 99.9% - 9 часов
• 99.99% - 53 минуты
• 99.999% - 5 минут
• 99.9999% - 30 секунд
© Copyright 2014 Andrey Smirnov
© Copyright 2014 Andrey Smirnov
Amazon S3
• 99.999999999% долговечность
• 99.99% доступность
© Copyright 2014 Andrey Smirnov
Экономика
Затраты
1
100
10000
Нагрузка
10k 100k 1M 10M 100M
Проект А Проект Б
© Copyright 2014 Andrey Smirnov
Экономика
Затраты
0
15000
30000
45000
60000
Нагрузка
10k 100k 1M 10M 100M
Проект А Проект Б
© Copyright 2014 Andrey Smirnov
Ресурсы
• Процессор, память, диск, …
• Сеть
• Место
• Электропитание
• Деньги
© Copyright 2014 Andrey Smirnov
Ограниченность
• Ресурсы одной машины ограничены
• Ресурсы одной стойки ограничены
• Ресурсы одного ДЦ ограничены
• Финансовый ресурс ограничен
© Copyright 2014 Andrey Smirnov
Ресурсы одной машины
• PostgreSQL: 350 000 reads/s, 14 000 writes/s
• HTTP-сервер: 1000+ req/s (1 core)
© Copyright 2014 Andrey Smirnov
Высокая нагрузка
• Нагрузка, подбирающаяся к пределу доступных
ресурсов
© Copyright 2014 Andrey Smirnov
Надежность компонентов
• Надежность системы = MIN(надежность
компонентов)
• Большое число компонентов - больше
вероятность индивидуального сбоя
• Любой компонент всегда может дать сбой
• Архитектура, нацеленная на надежность, не
всегда надежна на практике
© Copyright 2014 Andrey Smirnov
Серебряная пуля
• Пример: RabbitMQ - будем использовать его, он
масштабируется, у него High Availability
• А Вы умеете администрировать Erlang?
• А как масштабируется mnesia?
• Нет серебряной пули
© Copyright 2014 Andrey Smirnov
Простота и надежность
• Понятные (простые) решения “надежнее”
сложных
• Проверенные решения: мы знаем сильные и
слабые стороны
• Простота - проверка надежности проще
• Простота - понятнее действия в случае отказа
• Отказоустойчивые системы сложные
© Copyright 2014 Andrey Smirnov
© Copyright 2014 Andrey Smirnov
© Copyright 2014 Andrey Smirnov
© Copyright 2014 Andrey Smirnov
Отказы компонентов
• Какие отказы самые частые?
• Что делать в случае отказа?
• Дублирование
• Совместные отказы
© Copyright 2014 Andrey Smirnov
Если у меня…
• 1 сервер, и он дает сбой 1 раз в год
• 365 таких серверов, то каждый день один из них
дает сбой
© Copyright 2014 Andrey Smirnov
Если у меня…
• Две копии компонента, каждый с надежностью
99%
• и они дают сбои независимо
• надежность 99.99%
© Copyright 2014 Andrey Smirnov
Независимость сбоев
• Общая инфраструктура (сеть, питание,
охлаждение, …)
• Одинаковое “железо”
• Одинаковое ПО (одинаковые баги)
• Одинаковое время
• …
© Copyright 2014 Andrey Smirnov
Сложность и надежность
• Отказоустойчивые решения сложные
• Сложность может быть причиной отказов
• Сложность должна быть понятной
© Copyright 2014 Andrey Smirnov
Переключение Master-Slave
© Copyright 2014 Andrey Smirnov
Масштабирование
© Copyright 2014 Andrey Smirnov
Виды масштабирования
• Вертикальное масштабирование
(увеличение производительности узла)



• Горизонтальное масштабирование
(увеличение количества узлов)
© Copyright 2014 Andrey Smirnov
Вертикальное
масштабирование
• Доступные ресурсы одного сервера растут
каждый год
• Стоимость топового сервера меньше сложности
горизонтального масштабирования
• Ограничение производительности одного
сервера
• Оптимизация кода
© Copyright 2014 Andrey Smirnov
Горизонтальное
масштабирование
• Если 1 сервис может выполнить 100 операций/
секунду
• То N сервисов могут выполнить N*100 операций/
секунду
• Бесконечное масштабирование!
© Copyright 2014 Andrey Smirnov
Очередь. Worker
© Copyright 2014 Andrey Smirnov
Очередь.
Масштабирование?
© Copyright 2014 Andrey Smirnov
© Copyright 2014 Andrey Smirnov
Модель масштабирования
и отказоустойчивости
• Пусть есть сервис, который умеет выполнять две
операции:
• GET(key) ⇛ value
• PUT(key, value)
© Copyright 2014 Andrey Smirnov
Две копии сервиса
© Copyright 2014 Andrey Smirnov
Две копии сервиса
• Масштабирование
• по чтению
• по записи (?)
• Консистентность:
• передача состояния, синхронизация
• синхронно/асинхронно
© Copyright 2014 Andrey Smirnov
Отказ одного сервиса
© Copyright 2014 Andrey Smirnov
Отказ одного сервиса
• Клиент замечает отказ сервиса
• Переключение на “живой”

экземпляр
• Синхронизация при восстановлении
© Copyright 2014 Andrey Smirnov
Отказ сети
© Copyright 2014 Andrey Smirnov
Отказ сети
• Отказ сети между

экземплярами сервиса
• отказ свитча, соединяющего

стойки
• Связность с клиентами не нарушена
• Неконсистентность по данным
• Что делать при восстановлении связи?
© Copyright 2014 Andrey Smirnov
Работа из двух ДЦ
© Copyright 2014 Andrey Smirnov
Работа из двух ДЦ
• Канал связи между ДЦ:
• задержки
• ненадежность
• ограниченная пропускная способность
© Copyright 2014 Andrey Smirnov
Изменения
© Copyright 2014 Andrey Smirnov
Изменения
• Рефакторинг
• Изменение архитектуры
• Смена языка программирования
• Внедрение CI, автоматизация процессов
• Переход к другой базе данных
• Изменение структуры команд
• Изменение процесса эксплуатации
© Copyright 2014 Andrey Smirnov
Распространение
изменений
© Copyright 2014 Andrey Smirnov
Принятие решений
• Один человек принимает решение и двигает
вперед
• Коллектив принимает решение и исполняет его
• Решения навязывается “сверху” и применяется
© Copyright 2014 Andrey Smirnov
Мотивация
• Какие проблемы есть сегодня? (Какие проблемы
могут появиться завтра?)
• Стоимость изменения
• Какую пользу принесет изменение?
© Copyright 2014 Andrey Smirnov
Измеряемый результат
• Метрика, показывающая результат изменений
• Зависимость метрики от прочих факторов
• Ожидаемое изменение метрики
• Примеры:
• кол-во релизов в год
• кол-во багов
• доступность системы
© Copyright 2014 Andrey Smirnov
Авторитет
• Имеет влияние на коллектив
• Заслужил уважение (опыт, профессионализм)
• Способен донести мысль на уровне слушающих:
• разработчики
• менеджмент
© Copyright 2014 Andrey Smirnov
Кривая изменений
текущее
состояние
новое
состояние
время
производительность
сопротивление
хаос
принятие,

интеграция
Virginia Satir’s Change Curve
© Copyright 2014 Andrey Smirnov
Проектирование проекта,
подобного Twitter



Лента твитов, following,
@упоминания, поиск
© Copyright 2014 Andrey Smirnov
“twtr”: данные
• Пользователь: account (login/password) + profile
(@username/full name)
• Твиты: 140 символов, автор, дата
• Follow: каждый пользователь followит
произвольное количество других пользователей
• Лента: мои твиты + твиты тех, за кем я слежу, +
упоминания
© Copyright 2014 Andrey Smirnov
“twtr”: запросы
• пользователь: получить профиль, регистрация,
авторизация, удаление
• лента: отправить твит, получить мою ленту (N
записей), получить мою ленту с k-ой записи,
получить новые элементы (от j-ой записи)
• поиск: по произвольным словам
© Copyright 2014 Andrey Smirnov
Какая будет схема базы данных?
Какие запросы? Какие из них
самые сложные?
Какая архитектура?
Какой язык программирования?
Как тестировать?
Как масштабировать?
Как обеспечить
отказоустойчивость?
Какой будет мониторинг?
…
© Copyright 2014 Andrey Smirnov
Резюме
• Высокая нагрузка - это нагрузка, подбирающаяся
к пределу доступных ресурсов
• Доступность - процент времени, когда система
работает с точки зрения пользователя
• Проект, масштабирующийся экономически
эффективно, выигрывает
© Copyright 2014 Andrey Smirnov
Резюме
• Ответ на растущую нагрузку - масштабирование
(вертикальное или горизонтальное)
• Отказоустойчивость через сложные или простые,
но понятные решения
• Внедрение изменений: мотивация, метрика,
авторитет, готовность к сопротивлению и хаосу
© Copyright 2014 Andrey Smirnov
Спасибо!
• Небольшой тест: http://goo.gl/bbWKaZ
• Жду ваших комментариев:
• @smira
• me@smira.ru
• Skype: smirnov.andrey

Más contenido relacionado

La actualidad más candente

AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)Ontico
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)Ontico
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Ontico
 
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...Ontico
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Ontico
 
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)Ontico
 
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в ОдноклассникахБалансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в ОдноклассникахOntico
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Ontico
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
 
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)Ontico
 
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)Ontico
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)Ontico
 
Денис Иванов
Денис ИвановДенис Иванов
Денис ИвановCodeFest
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Ontico
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON
 
Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Ontico
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Ontico
 
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...Ontico
 
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...Ontico
 
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...Ontico
 

La actualidad más candente (20)

AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
 
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...
 
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
 
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в ОдноклассникахБалансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в Одноклассниках
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
 
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
 
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
 
Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)Евгений Потапов (Сумма Айти)
Евгений Потапов (Сумма Айти)
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
 
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
 
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
 
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
 

Destacado

Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)Ontico
 
Razrabotka testovykh primerov_ts
Razrabotka testovykh primerov_tsRazrabotka testovykh primerov_ts
Razrabotka testovykh primerov_tsNickola14
 
разработка серверов и серверных приложений лекция №4
разработка серверов и серверных приложений лекция №4разработка серверов и серверных приложений лекция №4
разработка серверов и серверных приложений лекция №4Eugeniy Tyumentcev
 
Многопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаМногопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаAnton Volkov
 
виртуальный класс
виртуальный классвиртуальный класс
виртуальный классnimirinka
 
Web application scalability
Web application scalabilityWeb application scalability
Web application scalabilityOleg Alistratov
 
Системы видео-конференц-связи компании ВидеоПорт.
Системы видео-конференц-связи компании ВидеоПорт.Системы видео-конференц-связи компании ВидеоПорт.
Системы видео-конференц-связи компании ВидеоПорт.Videoport LLC
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийMedia Gorod
 
Основы фотомастерства
Основы фотомастерства Основы фотомастерства
Основы фотомастерства Dmitriy Zabijaka
 
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхАнализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхDmitry Evteev
 
Противодействие хищению персональных данных и платежной информации в сети Инт...
Противодействие хищению персональных данных и платежной информации в сети Инт...Противодействие хищению персональных данных и платежной информации в сети Инт...
Противодействие хищению персональных данных и платежной информации в сети Инт...Dmitry Evteev
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShareSlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShareSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

Destacado (19)

Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
 
Razrabotka testovykh primerov_ts
Razrabotka testovykh primerov_tsRazrabotka testovykh primerov_ts
Razrabotka testovykh primerov_ts
 
разработка серверов и серверных приложений лекция №4
разработка серверов и серверных приложений лекция №4разработка серверов и серверных приложений лекция №4
разработка серверов и серверных приложений лекция №4
 
флеш и сервер
флеш и серверфлеш и сервер
флеш и сервер
 
Видео в сети
Видео в сетиВидео в сети
Видео в сети
 
Многопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаМногопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типа
 
виртуальный класс
виртуальный классвиртуальный класс
виртуальный класс
 
Web application scalability
Web application scalabilityWeb application scalability
Web application scalability
 
Системы видео-конференц-связи компании ВидеоПорт.
Системы видео-конференц-связи компании ВидеоПорт.Системы видео-конференц-связи компании ВидеоПорт.
Системы видео-конференц-связи компании ВидеоПорт.
 
Виртуальный класс V-Class.ru . WebSoft
Виртуальный класс V-Class.ru . WebSoftВиртуальный класс V-Class.ru . WebSoft
Виртуальный класс V-Class.ru . WebSoft
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложений
 
Основы фотомастерства
Основы фотомастерства Основы фотомастерства
Основы фотомастерства
 
Основы фото
Основы фотоОсновы фото
Основы фото
 
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхАнализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
 
Erlyvideo
ErlyvideoErlyvideo
Erlyvideo
 
Противодействие хищению персональных данных и платежной информации в сети Инт...
Противодействие хищению персональных данных и платежной информации в сети Инт...Противодействие хищению персональных данных и платежной информации в сети Инт...
Противодействие хищению персональных данных и платежной информации в сети Инт...
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Similar a Вебинар "Разработка высоконагруженных и надежных систем": Введение

SRE: Site Reliability Engineering
SRE: Site Reliability EngineeringSRE: Site Reliability Engineering
SRE: Site Reliability EngineeringIvan Kruglov
 
Особенности анализа в проектах по разработке сервисов
Особенности анализа в проектах по разработке сервисовОсобенности анализа в проектах по разработке сервисов
Особенности анализа в проектах по разработке сервисовSQALab
 
Защита данных и непрерывная доступность
Защита данных и непрерывная доступностьЗащита данных и непрерывная доступность
Защита данных и непрерывная доступностьAlexey Kononenko
 
SLA для ИБ аутсорсинга: что можно посчитать, а что нельзя
SLA для ИБ аутсорсинга: что можно посчитать, а что нельзяSLA для ИБ аутсорсинга: что можно посчитать, а что нельзя
SLA для ИБ аутсорсинга: что можно посчитать, а что нельзяjet_information_security
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance managementSQALab
 
Рэки IBM для проекта ExoGENI
Рэки IBM для проекта ExoGENIРэки IBM для проекта ExoGENI
Рэки IBM для проекта ExoGENIARCCN
 
Как оценить пользу от ИБ и увязать с нею инвестиции в безопасность
Как оценить пользу от ИБ и увязать с нею инвестиции в безопасностьКак оценить пользу от ИБ и увязать с нею инвестиции в безопасность
Как оценить пользу от ИБ и увязать с нею инвестиции в безопасностьVsevolod Shabad
 
Clouds NN 2012 Антон Коробейников Nvision Group
Clouds NN 2012 Антон Коробейников Nvision GroupClouds NN 2012 Антон Коробейников Nvision Group
Clouds NN 2012 Антон Коробейников Nvision GroupClouds NN
 
Security Testing - Polazhenko Sergey
Security Testing - Polazhenko SergeySecurity Testing - Polazhenko Sergey
Security Testing - Polazhenko SergeyQA Club Minsk
 
SECON'2016. Стахиевич Андрей, Selenide: используем listener-ы
SECON'2016. Стахиевич Андрей, Selenide: используем listener-ыSECON'2016. Стахиевич Андрей, Selenide: используем listener-ы
SECON'2016. Стахиевич Андрей, Selenide: используем listener-ыSECON
 
Облака за МКАДом. Опыт работы сервис-провайдера CloudsNN с клиентами
Облака за МКАДом. Опыт работы сервис-провайдера CloudsNN с клиентамиОблака за МКАДом. Опыт работы сервис-провайдера CloudsNN с клиентами
Облака за МКАДом. Опыт работы сервис-провайдера CloudsNN с клиентамиActiveCloud
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Coit-people
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙCEE-SEC(R)
 
Modern apps Windows Azure
Modern apps Windows AzureModern apps Windows Azure
Modern apps Windows AzureZaur Abutalimov
 
Как обеспечить безопасность клиентских сайтов
Как обеспечить безопасность клиентских сайтовКак обеспечить безопасность клиентских сайтов
Как обеспечить безопасность клиентских сайтовrevisium
 
Современные методы защиты от DDoS атак
Современные методы защиты от DDoS атакСовременные методы защиты от DDoS атак
Современные методы защиты от DDoS атакSkillFactory
 

Similar a Вебинар "Разработка высоконагруженных и надежных систем": Введение (20)

SRE: Site Reliability Engineering
SRE: Site Reliability EngineeringSRE: Site Reliability Engineering
SRE: Site Reliability Engineering
 
Особенности анализа в проектах по разработке сервисов
Особенности анализа в проектах по разработке сервисовОсобенности анализа в проектах по разработке сервисов
Особенности анализа в проектах по разработке сервисов
 
Защита данных и непрерывная доступность
Защита данных и непрерывная доступностьЗащита данных и непрерывная доступность
Защита данных и непрерывная доступность
 
SLA для ИБ аутсорсинга: что можно посчитать, а что нельзя
SLA для ИБ аутсорсинга: что можно посчитать, а что нельзяSLA для ИБ аутсорсинга: что можно посчитать, а что нельзя
SLA для ИБ аутсорсинга: что можно посчитать, а что нельзя
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance management
 
Рэки IBM для проекта ExoGENI
Рэки IBM для проекта ExoGENIРэки IBM для проекта ExoGENI
Рэки IBM для проекта ExoGENI
 
Как оценить пользу от ИБ и увязать с нею инвестиции в безопасность
Как оценить пользу от ИБ и увязать с нею инвестиции в безопасностьКак оценить пользу от ИБ и увязать с нею инвестиции в безопасность
Как оценить пользу от ИБ и увязать с нею инвестиции в безопасность
 
Big data
Big dataBig data
Big data
 
Big Data
Big DataBig Data
Big Data
 
Clouds NN 2012 Антон Коробейников Nvision Group
Clouds NN 2012 Антон Коробейников Nvision GroupClouds NN 2012 Антон Коробейников Nvision Group
Clouds NN 2012 Антон Коробейников Nvision Group
 
Security Testing - Polazhenko Sergey
Security Testing - Polazhenko SergeySecurity Testing - Polazhenko Sergey
Security Testing - Polazhenko Sergey
 
SECON'2016. Стахиевич Андрей, Selenide: используем listener-ы
SECON'2016. Стахиевич Андрей, Selenide: используем listener-ыSECON'2016. Стахиевич Андрей, Selenide: используем listener-ы
SECON'2016. Стахиевич Андрей, Selenide: используем listener-ы
 
Облака за МКАДом. Опыт работы сервис-провайдера CloudsNN с клиентами
Облака за МКАДом. Опыт работы сервис-провайдера CloudsNN с клиентамиОблака за МКАДом. Опыт работы сервис-провайдера CloudsNN с клиентами
Облака за МКАДом. Опыт работы сервис-провайдера CloudsNN с клиентами
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
 
Modern apps Windows Azure
Modern apps Windows AzureModern apps Windows Azure
Modern apps Windows Azure
 
1
11
1
 
Do it yourself profiler
Do it yourself profilerDo it yourself profiler
Do it yourself profiler
 
Как обеспечить безопасность клиентских сайтов
Как обеспечить безопасность клиентских сайтовКак обеспечить безопасность клиентских сайтов
Как обеспечить безопасность клиентских сайтов
 
Современные методы защиты от DDoS атак
Современные методы защиты от DDoS атакСовременные методы защиты от DDoS атак
Современные методы защиты от DDoS атак
 

Más de Andrey Smirnov

Консольные приложения на Go
Консольные приложения на GoКонсольные приложения на Go
Консольные приложения на GoAndrey Smirnov
 
aptly: система управления репозиториями пакетов (РИТ-2014)
aptly: система управления репозиториями пакетов (РИТ-2014)aptly: система управления репозиториями пакетов (РИТ-2014)
aptly: система управления репозиториями пакетов (РИТ-2014)Andrey Smirnov
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Andrey Smirnov
 
aptly: Debian repository management tool
aptly: Debian repository management toolaptly: Debian repository management tool
aptly: Debian repository management toolAndrey Smirnov
 
aptly - система управления Debian-репозиториями пакетов
aptly - система управления Debian-репозиториями пакетовaptly - система управления Debian-репозиториями пакетов
aptly - система управления Debian-репозиториями пакетовAndrey Smirnov
 
Smirnov twisted-python
Smirnov twisted-pythonSmirnov twisted-python
Smirnov twisted-pythonAndrey Smirnov
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonAndrey Smirnov
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonAndrey Smirnov
 
Доклад на РИТ: Высокие нагрузки (2008)
Доклад на РИТ: Высокие нагрузки (2008)Доклад на РИТ: Высокие нагрузки (2008)
Доклад на РИТ: Высокие нагрузки (2008)Andrey Smirnov
 

Más de Andrey Smirnov (13)

Remote Highload
Remote HighloadRemote Highload
Remote Highload
 
Консольные приложения на Go
Консольные приложения на GoКонсольные приложения на Go
Консольные приложения на Go
 
aptly: система управления репозиториями пакетов (РИТ-2014)
aptly: система управления репозиториями пакетов (РИТ-2014)aptly: система управления репозиториями пакетов (РИТ-2014)
aptly: система управления репозиториями пакетов (РИТ-2014)
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)
 
aptly: Debian repository management tool
aptly: Debian repository management toolaptly: Debian repository management tool
aptly: Debian repository management tool
 
aptly - система управления Debian-репозиториями пакетов
aptly - система управления Debian-репозиториями пакетовaptly - система управления Debian-репозиториями пакетов
aptly - система управления Debian-репозиториями пакетов
 
Smirnov twisted-python
Smirnov twisted-pythonSmirnov twisted-python
Smirnov twisted-python
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Доклад на РИТ: Высокие нагрузки (2008)
Доклад на РИТ: Высокие нагрузки (2008)Доклад на РИТ: Высокие нагрузки (2008)
Доклад на РИТ: Высокие нагрузки (2008)
 
pyFMS
pyFMSpyFMS
pyFMS
 
pyFMS
pyFMSpyFMS
pyFMS
 
PGDBObject
PGDBObjectPGDBObject
PGDBObject
 

Вебинар "Разработка высоконагруженных и надежных систем": Введение

  • 1. © Copyright 2014 Andrey Smirnov Разработка высоконагруженных 
 и надежных систем Андрей Смирнов, 2014
  • 2. © Copyright 2014 Andrey Smirnov 
 Введение Вебинар №1
  • 3. © Copyright 2014 Andrey Smirnov Обо мне
  • 4. © Copyright 2014 Andrey Smirnov О серии вебинаров
  • 5. © Copyright 2014 Andrey Smirnov План вебинаров 1. Введение (этот вебинар) 2. Данные I. От основ хранения до РСУБД 3. Данные II. Шардинг, key-value и распределенные хранилища 4. Приложение 5. Архитектура веб-систем 6. Взаимодействие с клиентским приложением. Тестирование 7. Отказоустойчивость, мониторинг и выкатывание
  • 6. © Copyright 2014 Andrey Smirnov
  • 7. © Copyright 2014 Andrey Smirnov Данные I + II
  • 8. © Copyright 2014 Andrey Smirnov Данные I. От основ хранения до РСУБД • Базовые принципы хранения данных. Хранение на диске и в памяти. • ACID. Реляционные БД. • Проектирование схемы реальной БД в различных моделях данных. • Индексы, денормализация, использование разных типов хранилищ для разных данных. • Партиционирование. Репликация. • Полнотекстовый поиск. 20 января 2015
 18:00
  • 9. © Copyright 2014 Andrey Smirnov Данные II. Шардинг, key-value и распределенные хранилища • Масштабирование: шардинг в реляционных и key- value хранилищах. • Key-value хранилища. • CAP-теорема. • Распределенные хранилища. Консистентность. • Кешированные данных: инвалидация кеша, тегирование кешей. 21 января 2015
 18:00
  • 10. © Copyright 2014 Andrey Smirnov Приложение
  • 11. © Copyright 2014 Andrey Smirnov Приложение • Структура серверного и клиентского приложения, анализ узких и проблемных мест. • Сетевой ввод-вывод: синхронный, асинхронный. Реактор, обслуживание большого числа соединений (C10K, C100K). • Многозадачность: процессы, нити, кооперативная многозадачность, комбинации. • Краткий обзор фреймворков и языков программирования: Ruby, Python, Go, Java, C#, Erlang, JavaScript. • Безопасность. Типичные уязвимости. Пользователи и пароли. CSRF. 3 февраля 2015
 18:00
  • 12. © Copyright 2014 Andrey Smirnov Архитектура
  • 13. © Copyright 2014 Andrey Smirnov Архитектура веб-систем • Архитектура системы: монолитная, сервис- ориентированная (SOA). • Непосредственный вызов (RPC), очереди, персистентные очереди, очереди фоновых задач. • Шины, широковещательные каналы. • Примеры и разбор реальных архитектур веб- приложений. 5 февраля 2015
 18:00
  • 14. © Copyright 2014 Andrey Smirnov Клиент, Тестирование
  • 15. © Copyright 2014 Andrey Smirnov Взаимодействие с клиентским приложением. Тестирование • Синхронизация данных, работа в offline, информирование пользователя. • Сетевое взаимодействие с сервером. Ошибки API. Клиент как веб-сервис. Алгоритмы повтора запроса. • Нагрузочное и системное тестирование. • Почему unit-тестирование бесполезно. • Непрерывное тестирование, постоянное выкатывание. 10 февраля 2015
 18:00
  • 16. © Copyright 2014 Andrey Smirnov Эксплуатация
  • 17. © Copyright 2014 Andrey Smirnov Отказоустойчивость, мониторинг и выкатывание • Оценка нагрузки и планирование ресурсов. • Резервное копирование, репликация. Master-Slave. Hot-Spare. • Несколько дата-центров, схемы Active-Failover, Master-Slave, Active-Active. • Обеспечение консистентности. Протоколы голосования. • Выбор между “облаком” и железом. • Выкатывание проекта, управление конфигурацией. Логирование. Мониторинг. 17 февраля 2015
 18:00
  • 18. © Copyright 2014 Andrey Smirnov Данные I + II Приложение Клиент, Тестирование Архитектура Эксплуатация
  • 19. © Copyright 2014 Andrey Smirnov Бронируйте места! • Сегодня каждый вебинар стоит 4 000 руб. (5 000 для юрлиц) • Все 6 вебинаров: 16 000 руб. (скидка 33%) (21 000 руб. для юрлиц) • Цена будет увеличиваться ближе к дате начала вебинаров!
  • 20. © Copyright 2014 Andrey Smirnov Нагрузка • Что такое высокая нагрузка? • Что такое нагрузка?
  • 21. © Copyright 2014 Andrey Smirnov Примеры • Google: 70 000 req/s (поиск) • Twitter: 700 tweet/s (новые твиты), 24 000 req/s (поиск) • Facebook: 3000 msg/s • Yandex: 2000 req/s (поиск)
  • 22. © Copyright 2014 Andrey Smirnov Еще примеры • Fastly (CDN): 500 000 req/s, 77 Gbit/s • Akamai (CDN): 12 000 000 req/s (2010)
  • 23. © Copyright 2014 Andrey Smirnov И еще • Google Public DNS: 1 504 629 req/s
 
 47 450 000 000 000 (47 триллионов) 
 запросов в год 
 
 лог запросов (100 байт на запрос) 
 занял бы 4315 Тб
  • 24. © Copyright 2014 Andrey Smirnov Нагрузка • Запросы, кол-во запросов в секунду • Задержка, время обработки запроса • Конкурентность, одновременные запросы • Отказы
  • 25. © Copyright 2014 Andrey Smirnov Производительность • Нагрузка отнесенная к используемым ресурсам и времени выполнения
  • 26. © Copyright 2014 Andrey Smirnov Надежность • Доступность - процент время, когда система работоспособна с точки зрения пользователя • Почему надежность важна? • Надежность vs. ошибки • Надежность с точки зрения пользователя
  • 27. © Copyright 2014 Andrey Smirnov Примеры • Amazon: выручка за 2013: $74.5 * 109, 
 $2362/sec
  • 28. © Copyright 2014 Andrey Smirnov Google Apps • Доступность: кол-во ошибок > 5% в течение минуты • 99.9% доступности в месяц (43 минуты downtime)
  • 29. © Copyright 2014 Andrey Smirnov Доступность • 99% - 89 часов недоступности в год • 99.9% - 9 часов • 99.99% - 53 минуты • 99.999% - 5 минут • 99.9999% - 30 секунд
  • 30. © Copyright 2014 Andrey Smirnov
  • 31. © Copyright 2014 Andrey Smirnov Amazon S3 • 99.999999999% долговечность • 99.99% доступность
  • 32. © Copyright 2014 Andrey Smirnov Экономика Затраты 1 100 10000 Нагрузка 10k 100k 1M 10M 100M Проект А Проект Б
  • 33. © Copyright 2014 Andrey Smirnov Экономика Затраты 0 15000 30000 45000 60000 Нагрузка 10k 100k 1M 10M 100M Проект А Проект Б
  • 34. © Copyright 2014 Andrey Smirnov Ресурсы • Процессор, память, диск, … • Сеть • Место • Электропитание • Деньги
  • 35. © Copyright 2014 Andrey Smirnov Ограниченность • Ресурсы одной машины ограничены • Ресурсы одной стойки ограничены • Ресурсы одного ДЦ ограничены • Финансовый ресурс ограничен
  • 36. © Copyright 2014 Andrey Smirnov Ресурсы одной машины • PostgreSQL: 350 000 reads/s, 14 000 writes/s • HTTP-сервер: 1000+ req/s (1 core)
  • 37. © Copyright 2014 Andrey Smirnov Высокая нагрузка • Нагрузка, подбирающаяся к пределу доступных ресурсов
  • 38. © Copyright 2014 Andrey Smirnov Надежность компонентов • Надежность системы = MIN(надежность компонентов) • Большое число компонентов - больше вероятность индивидуального сбоя • Любой компонент всегда может дать сбой • Архитектура, нацеленная на надежность, не всегда надежна на практике
  • 39. © Copyright 2014 Andrey Smirnov Серебряная пуля • Пример: RabbitMQ - будем использовать его, он масштабируется, у него High Availability • А Вы умеете администрировать Erlang? • А как масштабируется mnesia? • Нет серебряной пули
  • 40. © Copyright 2014 Andrey Smirnov Простота и надежность • Понятные (простые) решения “надежнее” сложных • Проверенные решения: мы знаем сильные и слабые стороны • Простота - проверка надежности проще • Простота - понятнее действия в случае отказа • Отказоустойчивые системы сложные
  • 41. © Copyright 2014 Andrey Smirnov
  • 42. © Copyright 2014 Andrey Smirnov
  • 43. © Copyright 2014 Andrey Smirnov
  • 44. © Copyright 2014 Andrey Smirnov Отказы компонентов • Какие отказы самые частые? • Что делать в случае отказа? • Дублирование • Совместные отказы
  • 45. © Copyright 2014 Andrey Smirnov Если у меня… • 1 сервер, и он дает сбой 1 раз в год • 365 таких серверов, то каждый день один из них дает сбой
  • 46. © Copyright 2014 Andrey Smirnov Если у меня… • Две копии компонента, каждый с надежностью 99% • и они дают сбои независимо • надежность 99.99%
  • 47. © Copyright 2014 Andrey Smirnov Независимость сбоев • Общая инфраструктура (сеть, питание, охлаждение, …) • Одинаковое “железо” • Одинаковое ПО (одинаковые баги) • Одинаковое время • …
  • 48. © Copyright 2014 Andrey Smirnov Сложность и надежность • Отказоустойчивые решения сложные • Сложность может быть причиной отказов • Сложность должна быть понятной
  • 49. © Copyright 2014 Andrey Smirnov Переключение Master-Slave
  • 50. © Copyright 2014 Andrey Smirnov Масштабирование
  • 51. © Copyright 2014 Andrey Smirnov Виды масштабирования • Вертикальное масштабирование (увеличение производительности узла)
 
 • Горизонтальное масштабирование (увеличение количества узлов)
  • 52. © Copyright 2014 Andrey Smirnov Вертикальное масштабирование • Доступные ресурсы одного сервера растут каждый год • Стоимость топового сервера меньше сложности горизонтального масштабирования • Ограничение производительности одного сервера • Оптимизация кода
  • 53. © Copyright 2014 Andrey Smirnov Горизонтальное масштабирование • Если 1 сервис может выполнить 100 операций/ секунду • То N сервисов могут выполнить N*100 операций/ секунду • Бесконечное масштабирование!
  • 54. © Copyright 2014 Andrey Smirnov Очередь. Worker
  • 55. © Copyright 2014 Andrey Smirnov Очередь. Масштабирование?
  • 56. © Copyright 2014 Andrey Smirnov
  • 57. © Copyright 2014 Andrey Smirnov Модель масштабирования и отказоустойчивости • Пусть есть сервис, который умеет выполнять две операции: • GET(key) ⇛ value • PUT(key, value)
  • 58. © Copyright 2014 Andrey Smirnov Две копии сервиса
  • 59. © Copyright 2014 Andrey Smirnov Две копии сервиса • Масштабирование • по чтению • по записи (?) • Консистентность: • передача состояния, синхронизация • синхронно/асинхронно
  • 60. © Copyright 2014 Andrey Smirnov Отказ одного сервиса
  • 61. © Copyright 2014 Andrey Smirnov Отказ одного сервиса • Клиент замечает отказ сервиса • Переключение на “живой”
 экземпляр • Синхронизация при восстановлении
  • 62. © Copyright 2014 Andrey Smirnov Отказ сети
  • 63. © Copyright 2014 Andrey Smirnov Отказ сети • Отказ сети между
 экземплярами сервиса • отказ свитча, соединяющего
 стойки • Связность с клиентами не нарушена • Неконсистентность по данным • Что делать при восстановлении связи?
  • 64. © Copyright 2014 Andrey Smirnov Работа из двух ДЦ
  • 65. © Copyright 2014 Andrey Smirnov Работа из двух ДЦ • Канал связи между ДЦ: • задержки • ненадежность • ограниченная пропускная способность
  • 66. © Copyright 2014 Andrey Smirnov Изменения
  • 67. © Copyright 2014 Andrey Smirnov Изменения • Рефакторинг • Изменение архитектуры • Смена языка программирования • Внедрение CI, автоматизация процессов • Переход к другой базе данных • Изменение структуры команд • Изменение процесса эксплуатации
  • 68. © Copyright 2014 Andrey Smirnov Распространение изменений
  • 69. © Copyright 2014 Andrey Smirnov Принятие решений • Один человек принимает решение и двигает вперед • Коллектив принимает решение и исполняет его • Решения навязывается “сверху” и применяется
  • 70. © Copyright 2014 Andrey Smirnov Мотивация • Какие проблемы есть сегодня? (Какие проблемы могут появиться завтра?) • Стоимость изменения • Какую пользу принесет изменение?
  • 71. © Copyright 2014 Andrey Smirnov Измеряемый результат • Метрика, показывающая результат изменений • Зависимость метрики от прочих факторов • Ожидаемое изменение метрики • Примеры: • кол-во релизов в год • кол-во багов • доступность системы
  • 72. © Copyright 2014 Andrey Smirnov Авторитет • Имеет влияние на коллектив • Заслужил уважение (опыт, профессионализм) • Способен донести мысль на уровне слушающих: • разработчики • менеджмент
  • 73. © Copyright 2014 Andrey Smirnov Кривая изменений текущее состояние новое состояние время производительность сопротивление хаос принятие,
 интеграция Virginia Satir’s Change Curve
  • 74. © Copyright 2014 Andrey Smirnov Проектирование проекта, подобного Twitter
 
 Лента твитов, following, @упоминания, поиск
  • 75. © Copyright 2014 Andrey Smirnov “twtr”: данные • Пользователь: account (login/password) + profile (@username/full name) • Твиты: 140 символов, автор, дата • Follow: каждый пользователь followит произвольное количество других пользователей • Лента: мои твиты + твиты тех, за кем я слежу, + упоминания
  • 76. © Copyright 2014 Andrey Smirnov “twtr”: запросы • пользователь: получить профиль, регистрация, авторизация, удаление • лента: отправить твит, получить мою ленту (N записей), получить мою ленту с k-ой записи, получить новые элементы (от j-ой записи) • поиск: по произвольным словам
  • 77. © Copyright 2014 Andrey Smirnov Какая будет схема базы данных? Какие запросы? Какие из них самые сложные? Какая архитектура? Какой язык программирования? Как тестировать? Как масштабировать? Как обеспечить отказоустойчивость? Какой будет мониторинг? …
  • 78. © Copyright 2014 Andrey Smirnov Резюме • Высокая нагрузка - это нагрузка, подбирающаяся к пределу доступных ресурсов • Доступность - процент времени, когда система работает с точки зрения пользователя • Проект, масштабирующийся экономически эффективно, выигрывает
  • 79. © Copyright 2014 Andrey Smirnov Резюме • Ответ на растущую нагрузку - масштабирование (вертикальное или горизонтальное) • Отказоустойчивость через сложные или простые, но понятные решения • Внедрение изменений: мотивация, метрика, авторитет, готовность к сопротивлению и хаосу
  • 80. © Copyright 2014 Andrey Smirnov Спасибо! • Небольшой тест: http://goo.gl/bbWKaZ • Жду ваших комментариев: • @smira • me@smira.ru • Skype: smirnov.andrey