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