SlideShare a Scribd company logo
1 of 65
Download to read offline
Введение в реактивный
dotNet
Акуляков Артём
Неизвестный банк
9-я конференция .NET разработчиков
12 октября 2014
dotnetconf.ru
Кто я?
●
5+ лет
– Финансовый сектор
– Энергетика
●
Докладчик и
организатор
Dev2Dev
2
Реактивное
программирование
3
Внимание! Реактивные
двигатели тут совершенно не
причем...
4
Реактивный от слова «реакция».
5
Зачем?
6
Обычное приложение
7
Проблемы
●
Не масштабируется
●
Отказоустойчивости нет
8
Масштабируем
9
Проблемы
●
Сложно
●
Масштабирование имеет
латентность
●
Любая ошибка приводит к потере
сервера
10
Что делать?
11
Решение #1
12
Решение #2
13
Решение #3
14
Решение #4
15
Плюсы
●
Гибкое и быстрое масштабирование
●
Просто тестировать
●
Ошибки локализованы компонентом
●
Эффективное неиспользование ресурсов
16
Минусы
●
Сложно на первый взгляд
●
Дополнительные расходы на
обмен сообщениями
●
Большая инфраструктура под
капотом
17
Философия
18
Reactive manifesto
19
Reactive manifesto
●
Ориентированность на события
20
Reactive manifesto
●
Ориентированность на события
●
Отказоустойчивость
21
Reactive manifesto
●
Ориентированность на события
●
Отказоустойчивость
●
Масштабируемость
22
Reactive manifesto
●
Ориентированность на события
●
Отказоустойчивость
●
Масштабируемость
●
Отзывчивость
23
Когда использовать?
24
Использовать
●
Transaction processing
●
Service backend
●
Concurrency/parallelism
●
Complex event stream processing
25
Уже используют
●
Box
●
Wix
●
LinkedIn
●
Blizzard
●
Twitter
26
С чем работать в dotNet?
27
Akka.NET
●
Actors model
28
ActorModel
29
Actor
●
Состояние
●
Поведение
30
Actor
●
Состояние
●
Поведение
●
Асинхронность
●
Обмен сообщениями
31
Actor
●
Supervisor strategy
●
Routing
32
33
Пути
34
●
akka://my-sys/user/service-a
●
akka.tcp://sys@localhost:80/user/service-b
●
../brothers
●
../*
●
/user/service-c
35
Как обрабатываются
ошибки?
36
Supervisors
37
38
OneForOne vs OneForAll
39
Что с routing?
40
41
Routing
●
Broadcast
42
Routing
●
Broadcast
●
RoundRobin
43
Routing
●
Broadcast
●
RoundRobin
●
ConsistentHash
44
Routing
●
ScatterGatherFirstCompleted
45
Routing
●
ScatterGatherFirstCompleted
●
Random
46
Routing
●
ScatterGatherFirstCompleted
●
Random
●
SmallestMailbox
47
Akka.Net итог
●
AkkaDotNet это framework.
●
Многое не озвучено
– DI
– Remoting
– Actor lifecycle
48
Не любишь hardcore?
49
Rx (Reactive Extensions)
●
Push-collections
50
Don't call us,
We will call you.
-Hollywood principle
51
IEnumerable vs IObservable
IEnumerator vs IObserver
LINQ to Events
52
53
54
Итоги
●
Удобно работать с event streams
●
Удобно обрабатывать
асинхронные операции
●
Не позволяет строить реактивные
приложения полностью
55
Хочется больше hardcore?
56
F#
●
Functional reactive programming
– Actor model
– Async
– Functional
57
MailboxProcessor
58
F#
●
… но это далеко не все
– Rx
– Akka.NET
59
Akka.Net F# API
60
Итоги
●
Больше возможностей
●
Для построения полностью
реактивного приложения
необходима Akka.Net
61
Что почитать?
●
http://akkadotnet.github.io/
●
https://rx.codeplex.com/
●
http://rxwiki.wikidot.com/101samples
●
http://fsharpforfunandprofit.com/
●
http://www.reactivemanifesto.org/
●
https://www.coursera.org/course/reactive
62
Итоги
63
На правах рекламы
64
Спасибо за внимание
Акуляков Артем
Неизвестный банк
akulyakov.artem@gmail.com

More Related Content

What's hot

Manager’s toolbox: popular, familiar or optimal methodology
Manager’s toolbox: popular, familiar or optimal methodologyManager’s toolbox: popular, familiar or optimal methodology
Manager’s toolbox: popular, familiar or optimal methodologyVictor Bogomolov
 
Качество планирования в производстве –реалии против уровня технологий
Качество планирования в производстве –реалии против уровня технологийКачество планирования в производстве –реалии против уровня технологий
Качество планирования в производстве –реалии против уровня технологийДмитрий Сериков
 
Dmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it failDmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it failAndrew Mayorov
 
Eq system производственное планирование - проблемы vs технологии
Eq system   производственное планирование - проблемы vs технологииEq system   производственное планирование - проблемы vs технологии
Eq system производственное планирование - проблемы vs технологииAPPAU_Ukraine
 
Проекты в срок и в рамках бюджета - ImproveIT на HappyDev
Проекты в срок и в рамках бюджета - ImproveIT на HappyDevПроекты в срок и в рамках бюджета - ImproveIT на HappyDev
Проекты в срок и в рамках бюджета - ImproveIT на HappyDevStepan Volkov
 
Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)
Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)
Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)Ontico
 
Планирование трудозатрат на тестирование
Планирование трудозатрат на тестированиеПланирование трудозатрат на тестирование
Планирование трудозатрат на тестированиеSQALab
 
"Dealing with legacy code"
"Dealing with legacy code""Dealing with legacy code"
"Dealing with legacy code"HYS Enterprise
 
CodeFest, июль 2012. Мочалкин П, Спиридонов А. — Управление продуктами в 2ГИС
CodeFest, июль 2012. Мочалкин П, Спиридонов А. — Управление продуктами в 2ГИСCodeFest, июль 2012. Мочалкин П, Спиридонов А. — Управление продуктами в 2ГИС
CodeFest, июль 2012. Мочалкин П, Спиридонов А. — Управление продуктами в 2ГИСCodeFest
 
Современные подходы к управлению ИТ-проектами
Современные подходы к управлению ИТ-проектамиСовременные подходы к управлению ИТ-проектами
Современные подходы к управлению ИТ-проектамиЕвгений Пикулев
 
Практический BPM или как получить максимальную отдачу от процессного подхода,...
Практический BPM или как получить максимальную отдачу от процессного подхода,...Практический BPM или как получить максимальную отдачу от процессного подхода,...
Практический BPM или как получить максимальную отдачу от процессного подхода,...Aleksandrs Baranovs
 
How to estimate time for testing
How to estimate time for testingHow to estimate time for testing
How to estimate time for testingAlexandr Zinovyev
 
Bdd with java using concordion and selenium ui tests
Bdd with java using concordion and selenium ui testsBdd with java using concordion and selenium ui tests
Bdd with java using concordion and selenium ui testsautomated-testing.info
 

What's hot (15)

Insurtech2019 invitation
Insurtech2019 invitation Insurtech2019 invitation
Insurtech2019 invitation
 
Manager’s toolbox: popular, familiar or optimal methodology
Manager’s toolbox: popular, familiar or optimal methodologyManager’s toolbox: popular, familiar or optimal methodology
Manager’s toolbox: popular, familiar or optimal methodology
 
электронный проектный офис
электронный проектный офисэлектронный проектный офис
электронный проектный офис
 
Качество планирования в производстве –реалии против уровня технологий
Качество планирования в производстве –реалии против уровня технологийКачество планирования в производстве –реалии против уровня технологий
Качество планирования в производстве –реалии против уровня технологий
 
Dmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it failDmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it fail
 
Eq system производственное планирование - проблемы vs технологии
Eq system   производственное планирование - проблемы vs технологииEq system   производственное планирование - проблемы vs технологии
Eq system производственное планирование - проблемы vs технологии
 
Проекты в срок и в рамках бюджета - ImproveIT на HappyDev
Проекты в срок и в рамках бюджета - ImproveIT на HappyDevПроекты в срок и в рамках бюджета - ImproveIT на HappyDev
Проекты в срок и в рамках бюджета - ImproveIT на HappyDev
 
Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)
Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)
Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)
 
Планирование трудозатрат на тестирование
Планирование трудозатрат на тестированиеПланирование трудозатрат на тестирование
Планирование трудозатрат на тестирование
 
"Dealing with legacy code"
"Dealing with legacy code""Dealing with legacy code"
"Dealing with legacy code"
 
CodeFest, июль 2012. Мочалкин П, Спиридонов А. — Управление продуктами в 2ГИС
CodeFest, июль 2012. Мочалкин П, Спиридонов А. — Управление продуктами в 2ГИСCodeFest, июль 2012. Мочалкин П, Спиридонов А. — Управление продуктами в 2ГИС
CodeFest, июль 2012. Мочалкин П, Спиридонов А. — Управление продуктами в 2ГИС
 
Современные подходы к управлению ИТ-проектами
Современные подходы к управлению ИТ-проектамиСовременные подходы к управлению ИТ-проектами
Современные подходы к управлению ИТ-проектами
 
Практический BPM или как получить максимальную отдачу от процессного подхода,...
Практический BPM или как получить максимальную отдачу от процессного подхода,...Практический BPM или как получить максимальную отдачу от процессного подхода,...
Практический BPM или как получить максимальную отдачу от процессного подхода,...
 
How to estimate time for testing
How to estimate time for testingHow to estimate time for testing
How to estimate time for testing
 
Bdd with java using concordion and selenium ui tests
Bdd with java using concordion and selenium ui testsBdd with java using concordion and selenium ui tests
Bdd with java using concordion and selenium ui tests
 

Similar to reactive dotNet

Введение в реактивный .NET
Введение в реактивный .NETВведение в реактивный .NET
Введение в реактивный .NETDotNetConf
 
Moscow js node.js enterprise development
Moscow js node.js enterprise developmentMoscow js node.js enterprise development
Moscow js node.js enterprise developmentPavel Tiunov
 
Inversion of Control в деталях, Дмитрий Кожевников
Inversion of Control в деталях, Дмитрий КожевниковInversion of Control в деталях, Дмитрий Кожевников
Inversion of Control в деталях, Дмитрий КожевниковDevDay
 
Введение в Lean и Agile
Введение в Lean и AgileВведение в Lean и Agile
Введение в Lean и AgileKirill Rubinshteyn
 
Практика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к KanbanПрактика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к KanbanAlexander Byndyu
 
CEE-SECR-2011. Презентация Александра Калугина
CEE-SECR-2011. Презентация Александра КалугинаCEE-SECR-2011. Презентация Александра Калугина
CEE-SECR-2011. Презентация Александра КалугинаAlexander Kalouguine
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
Performance engineering stories from #fdminicon Saransk
Performance engineering stories from #fdminicon SaranskPerformance engineering stories from #fdminicon Saransk
Performance engineering stories from #fdminicon SaranskAlex Chistyakov
 
DEV Labs 2016. Искусство быстрого старта
DEV Labs 2016. Искусство быстрого стартаDEV Labs 2016. Искусство быстрого старта
DEV Labs 2016. Искусство быстрого стартаSasha Soleev
 
Анна Абрамова. Знакомство с Archimate. Для встречи сообщества аналитиков Санк...
Анна Абрамова. Знакомство с Archimate. Для встречи сообщества аналитиков Санк...Анна Абрамова. Знакомство с Archimate. Для встречи сообщества аналитиков Санк...
Анна Абрамова. Знакомство с Archimate. Для встречи сообщества аналитиков Санк...Anna Abramova
 
СПб СОА Анна Абрамова "Знакомство с Archimate"
СПб СОА Анна Абрамова "Знакомство с Archimate"СПб СОА Анна Абрамова "Знакомство с Archimate"
СПб СОА Анна Абрамова "Знакомство с Archimate"SPbCoA
 
How we built continuous delivery
How we built continuous deliveryHow we built continuous delivery
How we built continuous deliveryAlik Kurdyukov
 
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.ScrumTrek
 
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...RIF-Technology
 
Выбираем стратегию создания бранчей
Выбираем стратегию создания бранчейВыбираем стратегию создания бранчей
Выбираем стратегию создания бранчейVitebsk DSC
 
Micro-services, Упрощаем монолитные приложения
Micro-services, Упрощаем монолитные приложенияMicro-services, Упрощаем монолитные приложения
Micro-services, Упрощаем монолитные приложенияRinat Abdullin
 
How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider
How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider
How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider JetBrains Russia
 

Similar to reactive dotNet (20)

Введение в реактивный .NET
Введение в реактивный .NETВведение в реактивный .NET
Введение в реактивный .NET
 
Moscow js node.js enterprise development
Moscow js node.js enterprise developmentMoscow js node.js enterprise development
Moscow js node.js enterprise development
 
Inversion of Control в деталях, Дмитрий Кожевников
Inversion of Control в деталях, Дмитрий КожевниковInversion of Control в деталях, Дмитрий Кожевников
Inversion of Control в деталях, Дмитрий Кожевников
 
PRJ_CSF_20150312
PRJ_CSF_20150312PRJ_CSF_20150312
PRJ_CSF_20150312
 
Введение в Lean и Agile
Введение в Lean и AgileВведение в Lean и Agile
Введение в Lean и Agile
 
Практика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к KanbanПрактика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к Kanban
 
CEE-SECR-2011. Презентация Александра Калугина
CEE-SECR-2011. Презентация Александра КалугинаCEE-SECR-2011. Презентация Александра Калугина
CEE-SECR-2011. Презентация Александра Калугина
 
14 project-mistakes
14 project-mistakes14 project-mistakes
14 project-mistakes
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Проекты и Процессы
Проекты и ПроцессыПроекты и Процессы
Проекты и Процессы
 
Performance engineering stories from #fdminicon Saransk
Performance engineering stories from #fdminicon SaranskPerformance engineering stories from #fdminicon Saransk
Performance engineering stories from #fdminicon Saransk
 
DEV Labs 2016. Искусство быстрого старта
DEV Labs 2016. Искусство быстрого стартаDEV Labs 2016. Искусство быстрого старта
DEV Labs 2016. Искусство быстрого старта
 
Анна Абрамова. Знакомство с Archimate. Для встречи сообщества аналитиков Санк...
Анна Абрамова. Знакомство с Archimate. Для встречи сообщества аналитиков Санк...Анна Абрамова. Знакомство с Archimate. Для встречи сообщества аналитиков Санк...
Анна Абрамова. Знакомство с Archimate. Для встречи сообщества аналитиков Санк...
 
СПб СОА Анна Абрамова "Знакомство с Archimate"
СПб СОА Анна Абрамова "Знакомство с Archimate"СПб СОА Анна Абрамова "Знакомство с Archimate"
СПб СОА Анна Абрамова "Знакомство с Archimate"
 
How we built continuous delivery
How we built continuous deliveryHow we built continuous delivery
How we built continuous delivery
 
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
 
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
 
Выбираем стратегию создания бранчей
Выбираем стратегию создания бранчейВыбираем стратегию создания бранчей
Выбираем стратегию создания бранчей
 
Micro-services, Упрощаем монолитные приложения
Micro-services, Упрощаем монолитные приложенияMicro-services, Упрощаем монолитные приложения
Micro-services, Упрощаем монолитные приложения
 
How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider
How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider
How We Improve Performance in Rider. Andrey Akinshin, Senior Developer in Rider
 

reactive dotNet