SlideShare una empresa de Scribd logo
1 de 24
Разработка high load системы
на .NET Core:
что нам пришлось пережить
Андрей Губский
О себе
 В коммерческой разработке с
2008 года;
 Microsoft MVP с 2017 года;
 Занимаюсь ИТ консалтингом,
разработкой и
проектированием
информационных систем и
решений;
 PhD;
 Автор проекта //devdigest
О продукте
Чем я занимаюсь сейчас?
vi stories – система контекстной рекомендации
видео.
Сверхзадача:
• подбор видео наиболее точно
соответствующего контенту страницы
Требования к системе:
• минимальное время для анализа страницы,
• минимальное время для подбора видео.
Что сегодня будет?
Что такое высоконагруженная система?
Проблема №0
Как из джавистов сделать дотнетчиков так,
чтобы они этого не заметили
Привычные инструменты
• Visual Studio
• Visual Studio for mac
• Visual Studio Code
• Rider
• Mono Develop
Привычные абстрактные фабрики
Проблема №1
Выбор стека и определение приоритетов
разработки
Что было и что стало
MSMQ
Проблема №2
Консистентность информации внутри системы,
и почему иммутабельность – это хорошо
Иммутабельность – это хорошо
• Нет неожиданных побочных эффектов по ходу выполнения кода –
никто не изменит то, что не должно быть изменено. Не нужно
держать в голове куски системы, в которых объект мог быть
изменен;
• Иммутабельные коллекции потокобезопасны;
• Концепция иммутабельности является одной из концепций ФП и
позволяет более четко описывать логику процессов и проще
тестировать код.
System.Collections.Immutable
• ImmutableArray
• ImmutableArray<T>
• ImmutableDictionary
• ImmutableDictionary<TKey,TValue>
• ImmutableHashSet
• ImmutableHashSet<T>
• ImmutableList
• ImmutableList<T>
• ImmutableQueue
• ImmutableQueue<T>
• ImmutableSortedDictionary
• ImmutableSortedDictionary<TKey,TValue>
• ImmutableSortedSet
• ImmutableSortedSet<T>
• ImmutableStack
• ImmutableStack<T>
Проблема №3
Работа с пиковыми нагрузками
Service 1 Service 2 Service 3
Probe 1A
Probe 2C Probe 3AProbe 1B
Probe 2B
Probe 2A
Spectator
Высоконагруженная система
построенная на базе
микросервисной архитектуры
Уведомление об изменении
состояния системы
Запрос Spectator к датчику
о состоянии отслеживаемой
метрики системы
Проверка датчиком
метрики системы
Как работает
X.Spectator
Probe – отвечает за проверку состояния
одного из показателей системы;
Spectator– опрашивает один, или
несколькими датчиками. Изменяет свое
состояние в зависимости от текущих
показаний датчиков;
State calculator – на основе журнала
метрик вычисляет текущее состояние.
State journal – набор показателей каждого
из датчиков с указанием времени опроса.
X.Spectator
GitHub: https://github.com/ernado-x/X.Spectator
Хабр: https://habr.com/en/post/459092
Проект с открытым исходным кодом.
Проблема №4
Отладка и логирование
Correlation ID позволяет проследить весь
жизненный цикл запроса
Проблема №5
Технический долг
Вопросы?
Telegram: @dncuug
Платформа: bit.ly/dev_digest
Наш чат: var chat = new Chat();
Наши ресурсы
Спасибо за внимание!

Más contenido relacionado

La actualidad más candente

Александр Афенов
Александр АфеновАлександр Афенов
Александр АфеновCodeFest
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityPositive Hack Days
 
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETDev2Dev
 
Всевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и Grafana
Всевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и GrafanaВсевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и Grafana
Всевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и GrafanaSQALab
 
Платформа для поставки счастья в команду QA
Платформа для поставки счастья в команду QAПлатформа для поставки счастья в команду QA
Платформа для поставки счастья в команду QASlava Kuznetsov
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Yulia Tsisyk
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
 
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Positive Hack Days
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
 
1С-Битрикс: Управление сайтом 12.0. Технологически часть
1С-Битрикс: Управление сайтом 12.0. Технологически часть1С-Битрикс: Управление сайтом 12.0. Технологически часть
1С-Битрикс: Управление сайтом 12.0. Технологически частьCIT TROYA
 
Четырехлетие OpenStack - Опыт ITKey
Четырехлетие OpenStack - Опыт ITKeyЧетырехлетие OpenStack - Опыт ITKey
Четырехлетие OpenStack - Опыт ITKeyOpenStackRussia
 
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Ontico
 
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Fwdays
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikPositive Hack Days
 
Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Fwdays
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтендViacheslav Slinko
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим ПугачевCodeFest
 
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир СелинИнструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир СелинPositive Hack Days
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банкit-people
 

La actualidad más candente (20)

Александр Афенов
Александр АфеновАлександр Афенов
Александр Афенов
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
 
Всевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и Grafana
Всевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и GrafanaВсевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и Grafana
Всевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и Grafana
 
Платформа для поставки счастья в команду QA
Платформа для поставки счастья в команду QAПлатформа для поставки счастья в команду QA
Платформа для поставки счастья в команду QA
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
1С-Битрикс: Управление сайтом 12.0. Технологически часть
1С-Битрикс: Управление сайтом 12.0. Технологически часть1С-Битрикс: Управление сайтом 12.0. Технологически часть
1С-Битрикс: Управление сайтом 12.0. Технологически часть
 
Четырехлетие OpenStack - Опыт ITKey
Четырехлетие OpenStack - Опыт ITKeyЧетырехлетие OpenStack - Опыт ITKey
Четырехлетие OpenStack - Опыт ITKey
 
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
 
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтенд
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
 
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир СелинИнструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
 

Similar a Разработка high load системы на .NET Core

Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUAREТехники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARESQALab
 
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...Ontico
 
Как за счет СУБД сохранить инвестиции в условиях снижения бюджетов // Руслан ...
Как за счет СУБД сохранить инвестиции в условиях снижения бюджетов // Руслан ...Как за счет СУБД сохранить инвестиции в условиях снижения бюджетов // Руслан ...
Как за счет СУБД сохранить инвестиции в условиях снижения бюджетов // Руслан ...IBS
 
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Ontico
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Vadim Madison
 
Обеспечение и контроль качества услуг
Обеспечение и контроль качества услугОбеспечение и контроль качества услуг
Обеспечение и контроль качества услугCisco Russia
 
AT Consulting: внедрение OpenStack в корпоративной среде
AT Consulting: внедрение OpenStack в корпоративной средеAT Consulting: внедрение OpenStack в корпоративной среде
AT Consulting: внедрение OpenStack в корпоративной средеMirantis IT Russia
 
10 принципов автоматизации, которые я не предам
10 принципов автоматизации, которые я не предам10 принципов автоматизации, которые я не предам
10 принципов автоматизации, которые я не предамSQALab
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Coit-people
 
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest
 
"Что такое DevOps?" Титов Александр, Экспресс 42
"Что такое DevOps?" Титов Александр, Экспресс 42"Что такое DevOps?" Титов Александр, Экспресс 42
"Что такое DevOps?" Титов Александр, Экспресс 42it-people
 
как из трех стоек сделать две.
как из трех стоек сделать две.как из трех стоек сделать две.
как из трех стоек сделать две.Serguei Gitinsky
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитикиИлья Середа
 
Как оценивать состояние проекта по разработке с помощью формальных метрик и о...
Как оценивать состояние проекта по разработке с помощью формальных метрик и о...Как оценивать состояние проекта по разработке с помощью формальных метрик и о...
Как оценивать состояние проекта по разработке с помощью формальных метрик и о...Dmitry Andreev
 
Лучшие практики исполнения проекта в соответствии с методологией IBM Rational
Лучшие практики исполнения проекта в соответствии с методологией IBM RationalЛучшие практики исполнения проекта в соответствии с методологией IBM Rational
Лучшие практики исполнения проекта в соответствии с методологией IBM RationalLuxoftTraining
 
QA Fest 2015. Александра Волкова. 10 принципов автоматизации, которые я не пр...
QA Fest 2015. Александра Волкова. 10 принципов автоматизации, которые я не пр...QA Fest 2015. Александра Волкова. 10 принципов автоматизации, которые я не пр...
QA Fest 2015. Александра Волкова. 10 принципов автоматизации, которые я не пр...QAFest
 
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Ontico
 
Опыт виртуализации системы электронной почты ММК
Опыт виртуализации системы электронной почты ММКОпыт виртуализации системы электронной почты ММК
Опыт виртуализации системы электронной почты ММКVsevolod Shabad
 

Similar a Разработка high load системы на .NET Core (20)

Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUAREТехники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
Техники аналитика - CATWOE, H-METHOD, MOSCOW, SQUARE
 
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
 
Как за счет СУБД сохранить инвестиции в условиях снижения бюджетов // Руслан ...
Как за счет СУБД сохранить инвестиции в условиях снижения бюджетов // Руслан ...Как за счет СУБД сохранить инвестиции в условиях снижения бюджетов // Руслан ...
Как за счет СУБД сохранить инвестиции в условиях снижения бюджетов // Руслан ...
 
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 
Обеспечение и контроль качества услуг
Обеспечение и контроль качества услугОбеспечение и контроль качества услуг
Обеспечение и контроль качества услуг
 
AT Consulting: внедрение OpenStack в корпоративной среде
AT Consulting: внедрение OpenStack в корпоративной средеAT Consulting: внедрение OpenStack в корпоративной среде
AT Consulting: внедрение OpenStack в корпоративной среде
 
10 принципов автоматизации, которые я не предам
10 принципов автоматизации, которые я не предам10 принципов автоматизации, которые я не предам
10 принципов автоматизации, которые я не предам
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
 
Oblachnye vychisleniya -_ponyatiya_i_tehnologii
Oblachnye vychisleniya -_ponyatiya_i_tehnologiiOblachnye vychisleniya -_ponyatiya_i_tehnologii
Oblachnye vychisleniya -_ponyatiya_i_tehnologii
 
"Что такое DevOps?" Титов Александр, Экспресс 42
"Что такое DevOps?" Титов Александр, Экспресс 42"Что такое DevOps?" Титов Александр, Экспресс 42
"Что такое DevOps?" Титов Александр, Экспресс 42
 
как из трех стоек сделать две.
как из трех стоек сделать две.как из трех стоек сделать две.
как из трех стоек сделать две.
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
Как оценивать состояние проекта по разработке с помощью формальных метрик и о...
Как оценивать состояние проекта по разработке с помощью формальных метрик и о...Как оценивать состояние проекта по разработке с помощью формальных метрик и о...
Как оценивать состояние проекта по разработке с помощью формальных метрик и о...
 
Лучшие практики исполнения проекта в соответствии с методологией IBM Rational
Лучшие практики исполнения проекта в соответствии с методологией IBM RationalЛучшие практики исполнения проекта в соответствии с методологией IBM Rational
Лучшие практики исполнения проекта в соответствии с методологией IBM Rational
 
QA Fest 2015. Александра Волкова. 10 принципов автоматизации, которые я не пр...
QA Fest 2015. Александра Волкова. 10 принципов автоматизации, которые я не пр...QA Fest 2015. Александра Волкова. 10 принципов автоматизации, которые я не пр...
QA Fest 2015. Александра Волкова. 10 принципов автоматизации, которые я не пр...
 
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
 
Надежная инфраструктура цод
Надежная инфраструктура цодНадежная инфраструктура цод
Надежная инфраструктура цод
 
Опыт виртуализации системы электронной почты ММК
Опыт виртуализации системы электронной почты ММКОпыт виртуализации системы электронной почты ММК
Опыт виртуализации системы электронной почты ММК
 

Разработка high load системы на .NET Core