SlideShare a Scribd company logo
Реализация нагруженных и
отказоустойчивых систем
Руслан Сафин
технический директор Byndyusoft
• Далеко не всегда зависит от количества
пользователей
• Нагружает определенный контур в системе
Нагрузка
• запросы внешней
среды
• ответы внешней
среде
• события по расписанию
• изменение
состояния в БД
Потоки данных
• Перезагрузка
• полная
• по времени
• по ключу
• по тэгам
• Накатывание изменений
Инвалидация кэша
• Опрос необходимости перезагрузки кэша
• Опрос выполнения задач
• Передача данных между сервисами
системы
Антипаттерн: Shared Database
• Сигналы о перегрузке кэша
• Команды
• Данные команды
Шина сообщений
• Подписка только на нужные события
• Отправка изменений пачкой
• Применение изменений пачкой
Оптимизация накатывания
изменений в кэшах
• Последовательное чтение из БД
• Последовательное чтение из БД и уже
прогрузившихся нод
• Единая отдельная точка прогрузки и
раздачи кэша
Оптимизация холодного старта
кэшей
• Единая точка записи в БД
Событий слишком много —
блокировки в БД
• Отдельная БД на быструю запись
нетранзакционных данных, кластер БД
• Транзакционная БД для «важных» данных
Оптимизация БД — разделение на
SQL и NoSQL
• Разделение обязанностей
• Подписка на изменения в соответствии с
состоянием кэша
• Отслеживание исполнения
(диспетчеризация)
• Взаимодействие между собой нодов одного
типа — эффект роя
Оптимизация однотипных нодов
• Дублирование всего
• Балансировка нагрузки
• Мониторинг с автопереключением (БД,
балансировщики, сетевые интерфейсы и т.д.)
• Разнесение дублирующих виртуалок на
физически разные хосты
• Авторазворачивание сервисов взамен упавших
• Пессимистичная архитектура кода!
Отказоустойчивость
• Тестирование разворачивания бекапов
• Тестирование отказа отдельных сервисов
• Тестирование массовых отказов (хоста с
несколькими виртуалками и др. сценарии)
• Нагрузочное тестирование
• Регрессионное!
Тестирование отказоустойчивости
• Уровни алертинга
• debug / info / error / critical
• в понедельник / с утра / посреди ночи
• Автоматические меры
• Dashboard
• Функциональное тестирование
• Тестирование мониторинга
• Взаимодействие с кодом!
• Сравнение параметров разных окружений
Мониторинг
КАК?
• Итеративно, как можно проще
• Тестовое окружение, максимально
приближенное к боевому
• Логирование
• R&D
• Нагрузка — потоки данных
• Кэширование
• своя структура данных в кэше
• оптимальная инвалидация
• холодный старт — не заDDоSить самим себя
• Шина сообщений — среда общения сервисов
• логика при подписке, а не при отправке
• «внутривидовое» общение роя
Еще разок
• Запись в БД
• Минимизация параллельной записи
• разделение БД по назначениям
• Автомасштабирование, отказоустойчивость и
мониторинг
• Тестирование
• функциональности
• отказоустойчивости
• нагрузкоустойчивости
• мониторинга
Еще разок
Dev
DevOps
QA
Спасибо!
Руслан Сафин
iruslansafin@gmail.com
@razonrus

More Related Content

What's hot

SignalR
SignalRSignalR
SignalR
mstDe3
 
сергей спиридонов
сергей спиридоновсергей спиридонов
сергей спиридоновkuchinskaya
 
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Ontico
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...
Ontico
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Ontico
 
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Ontico
 
Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?
IT61
 
Высокая доступность web приложений. SHALB.com
Высокая доступность web приложений. SHALB.comВысокая доступность web приложений. SHALB.com
Высокая доступность web приложений. SHALB.com
Alexandr Yatsuk
 
SuperNovo: примеры размещения 1С
SuperNovo: примеры размещения 1СSuperNovo: примеры размещения 1С
SuperNovo: примеры размещения 1С
SuperNovo
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek
 
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
Positive Hack Days
 
Sql Server: Database Mirroring -> Availability group migration
Sql Server: Database Mirroring -> Availability group migrationSql Server: Database Mirroring -> Availability group migration
Sql Server: Database Mirroring -> Availability group migration
Anatoly Popov
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Ontico
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Ontico
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Fuenteovejuna
 
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Tanya Denisyuk
 
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Positive Hack Days
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON
 
Perl и SPDY
Perl и SPDYPerl и SPDY
Perl и SPDY
Ilya Zelenchuk
 

What's hot (20)

SignalR
SignalRSignalR
SignalR
 
сергей спиридонов
сергей спиридоновсергей спиридонов
сергей спиридонов
 
2013-07-06 02 Дмитрий Голушко. Cassandra
2013-07-06 02 Дмитрий Голушко. Cassandra2013-07-06 02 Дмитрий Голушко. Cassandra
2013-07-06 02 Дмитрий Голушко. Cassandra
 
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
 
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
 
Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?
 
Высокая доступность web приложений. SHALB.com
Высокая доступность web приложений. SHALB.comВысокая доступность web приложений. SHALB.com
Высокая доступность web приложений. SHALB.com
 
SuperNovo: примеры размещения 1С
SuperNovo: примеры размещения 1СSuperNovo: примеры размещения 1С
SuperNovo: примеры размещения 1С
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
 
Sql Server: Database Mirroring -> Availability group migration
Sql Server: Database Mirroring -> Availability group migrationSql Server: Database Mirroring -> Availability group migration
Sql Server: Database Mirroring -> Availability group migration
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
 
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
 
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
 
Perl и SPDY
Perl и SPDYPerl и SPDY
Perl и SPDY
 

Similar to Реализация нагруженных и отказоустойчивых систем

Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLAlex Chistyakov
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricks
Sveta Bozhko
 
Windows Azure Internals
Windows Azure InternalsWindows Azure Internals
Windows Azure Internals
Alexander Feschenko
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows Azure
Natalia Efimtseva
 
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковIBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
Maxim Zinal
 
Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...
Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...
Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...
Dmitry Lazarenko
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
IT Event
 
Отказоустойчивые решения SQL
Отказоустойчивые решения SQLОтказоустойчивые решения SQL
Отказоустойчивые решения SQLAndrey Korshikov
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Ontico
 
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Tanya Denisyuk
 
Трансформация управления данными в средах DevTest
Трансформация управления данными в средах DevTestТрансформация управления данными в средах DevTest
Трансформация управления данными в средах DevTest
Sergii Stukan
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
Rsnx tsvetkov che btrix conf 2015
Rsnx tsvetkov che btrix conf 2015Rsnx tsvetkov che btrix conf 2015
Rsnx tsvetkov che btrix conf 2015
Yulia Karpova
 
Windows azure общий обзор
Windows azure общий обзорWindows azure общий обзор
Windows azure общий обзор
Microsoft
 
Delphix Dynamic Data Platform, как попробовать и правильно оценить решение
Delphix Dynamic Data Platform, как попробовать и правильно оценить решениеDelphix Dynamic Data Platform, как попробовать и правильно оценить решение
Delphix Dynamic Data Platform, как попробовать и правильно оценить решение
Sergii Stukan
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитики
Badoo Development
 
Эффективное управление ПО под *nix
Эффективное управление ПО под *nixЭффективное управление ПО под *nix
Эффективное управление ПО под *nixAndrew Pantyukhin
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Ontico
 
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructure
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructurelinkmeup-V069 (2018-11) Azure. Cloud network Infrustructure
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructure
eucariot
 

Similar to Реализация нагруженных и отказоустойчивых систем (20)

Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricks
 
Windows Azure Internals
Windows Azure InternalsWindows Azure Internals
Windows Azure Internals
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows Azure
 
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковIBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
 
Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...
Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...
Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
 
Отказоустойчивые решения SQL
Отказоустойчивые решения SQLОтказоустойчивые решения SQL
Отказоустойчивые решения SQL
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
 
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
 
Трансформация управления данными в средах DevTest
Трансформация управления данными в средах DevTestТрансформация управления данными в средах DevTest
Трансформация управления данными в средах DevTest
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
Rsnx tsvetkov che btrix conf 2015
Rsnx tsvetkov che btrix conf 2015Rsnx tsvetkov che btrix conf 2015
Rsnx tsvetkov che btrix conf 2015
 
Windows azure общий обзор
Windows azure общий обзорWindows azure общий обзор
Windows azure общий обзор
 
Delphix Dynamic Data Platform, как попробовать и правильно оценить решение
Delphix Dynamic Data Platform, как попробовать и правильно оценить решениеDelphix Dynamic Data Platform, как попробовать и правильно оценить решение
Delphix Dynamic Data Platform, как попробовать и правильно оценить решение
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитики
 
Эффективное управление ПО под *nix
Эффективное управление ПО под *nixЭффективное управление ПО под *nix
Эффективное управление ПО под *nix
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
 
Sivko
SivkoSivko
Sivko
 
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructure
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructurelinkmeup-V069 (2018-11) Azure. Cloud network Infrustructure
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructure
 

Реализация нагруженных и отказоустойчивых систем

  • 1. Реализация нагруженных и отказоустойчивых систем Руслан Сафин технический директор Byndyusoft
  • 2. • Далеко не всегда зависит от количества пользователей • Нагружает определенный контур в системе Нагрузка
  • 3. • запросы внешней среды • ответы внешней среде • события по расписанию • изменение состояния в БД Потоки данных
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12. • Перезагрузка • полная • по времени • по ключу • по тэгам • Накатывание изменений Инвалидация кэша
  • 13. • Опрос необходимости перезагрузки кэша • Опрос выполнения задач • Передача данных между сервисами системы Антипаттерн: Shared Database
  • 14.
  • 15. • Сигналы о перегрузке кэша • Команды • Данные команды Шина сообщений
  • 16.
  • 17. • Подписка только на нужные события • Отправка изменений пачкой • Применение изменений пачкой Оптимизация накатывания изменений в кэшах
  • 18. • Последовательное чтение из БД • Последовательное чтение из БД и уже прогрузившихся нод • Единая отдельная точка прогрузки и раздачи кэша Оптимизация холодного старта кэшей
  • 19. • Единая точка записи в БД Событий слишком много — блокировки в БД
  • 20.
  • 21. • Отдельная БД на быструю запись нетранзакционных данных, кластер БД • Транзакционная БД для «важных» данных Оптимизация БД — разделение на SQL и NoSQL
  • 22.
  • 23. • Разделение обязанностей • Подписка на изменения в соответствии с состоянием кэша • Отслеживание исполнения (диспетчеризация) • Взаимодействие между собой нодов одного типа — эффект роя Оптимизация однотипных нодов
  • 24. • Дублирование всего • Балансировка нагрузки • Мониторинг с автопереключением (БД, балансировщики, сетевые интерфейсы и т.д.) • Разнесение дублирующих виртуалок на физически разные хосты • Авторазворачивание сервисов взамен упавших • Пессимистичная архитектура кода! Отказоустойчивость
  • 25. • Тестирование разворачивания бекапов • Тестирование отказа отдельных сервисов • Тестирование массовых отказов (хоста с несколькими виртуалками и др. сценарии) • Нагрузочное тестирование • Регрессионное! Тестирование отказоустойчивости
  • 26. • Уровни алертинга • debug / info / error / critical • в понедельник / с утра / посреди ночи • Автоматические меры • Dashboard • Функциональное тестирование • Тестирование мониторинга • Взаимодействие с кодом! • Сравнение параметров разных окружений Мониторинг
  • 27.
  • 28. КАК? • Итеративно, как можно проще • Тестовое окружение, максимально приближенное к боевому • Логирование • R&D
  • 29. • Нагрузка — потоки данных • Кэширование • своя структура данных в кэше • оптимальная инвалидация • холодный старт — не заDDоSить самим себя • Шина сообщений — среда общения сервисов • логика при подписке, а не при отправке • «внутривидовое» общение роя Еще разок
  • 30. • Запись в БД • Минимизация параллельной записи • разделение БД по назначениям • Автомасштабирование, отказоустойчивость и мониторинг • Тестирование • функциональности • отказоустойчивости • нагрузкоустойчивости • мониторинга Еще разок

Editor's Notes

  1. Главное – это потоки данных
  2. Важно понимать потоки данных в системе, исходя из них строить инфраструктуру и архитектуру кода
  3. Схема данных в БД и в кэшах разная! В кэшах ориентирована на конкретное приложение. Если идти дальше к микросервисам — у каждого сервиса своя БД
  4. Схема данных в БД и в кэшах разная! В кэшах ориентирована на конкретное приложение. Если идти дальше к микросервисам — у каждого сервиса своя БД
  5. Далее будет применение изменений (ивенты)
  6. Событий изменений данных очень много, система не успевает их применять
  7. Очевидные на первый взгляд правила, далеко не всегда соблюдаются на практике
  8. Очевидные на первый взгляд правила, далеко не всегда соблюдаются на практике
  9. Средство тестирования для больших проектов — например, количество обработанных статей
  10. Средство тестирования для больших проектов — например, количество обработанных статей
  11. Добавить про логирование, явные примеры, докер контаинер, виндовс = демон, нагрузка – скорость, примеры