SlideShare a Scribd company logo
1 of 14
Download to read offline
Сага о сагах
ОБРАБОТКА ДЛИТЕЛЬНЫХ ОПЕРАЦИЙ
Влад Батюшков, ReMeetup DevOWL 03.03.2017
Содержание доклада
 Задача
 Модель
 Инструменты
 Немного кода
 Подводные камни
Что видел бизнес
Чужой
клиент
Форма
Образец
продукта
Наш
клиент
ПЛАТФОРМА
Что нам показалось
PDB
Front API
ПЛАТФОРМА ВНЕШНИЕ ПРОДУКТЫ
API
API
API
НАШ ПРОДУКТ
Не все API возвращают
результат сразу, иногда
приходится ждать…
Длительная операция
Back API
Request 1
Response 1
Back API
Request 2
Response 2
Back API
Request 3
Response 3
ЗАПРОС НА СОЗДАНИЕ
РЕСУРСА
ПРОВЕРКА СТАТУСА
ОПЕРАЦИИ
ЗАПРОС НА ПОЛУЧЕНИЕ
РЕСУРСА
Http - это и есть контракт
Back API
POST api.domain.ru/entity
StatusCode: 202 Accepted
Location: api.domain.ru/saga/XXX-001
Back API
GET api.domain.ru/saga/XXX-001
Back API
StatusCode: 200 OK
Entity
ЗАПРОС НА СОЗДАНИЕ
РЕСУРСА
ПРОВЕРКА СТАТУСА
ОПЕРАЦИИ
ЗАПРОС НА ПОЛУЧЕНИЕ
РЕСУРСА
StatusCode: 201 Created OR 303 SeeOther
Location: api.domain.ru/entity/1
GET api.domain.ru/entity/1
StatusCode: 200 OK
Body: 25%
Сага
 Объект сага – это состояние
процесса/длительной операции
 Содержимое:
ID, State, +
Request, Response +
External, Internal +
Technical stuff
Что мы поняли
PDB
Front API
ПЛАТФОРМА
Back
TDB
ВНЕШНИЕ ПРОДУКТЫ
API
API
API
НАШ ПРОДУКТ
NServiceBus
 https://particular.net/nservicebus  http://masstransit-project.com/
MassTransit
Документация
Инфраструктура
Платно
Документация
Инфраструктура
Бесплатно
Компоненты инфраструктуры
StateMachine
Schedulers
ServiceBus
Ядро
Управление
Хранение
Как это работает
API Back
TDB
STATE-1
STATE-2
STATE-N
DONE
Управляющие сообщения
Управляющие сообщения
Управляющие сообщения
Изменение состояния
Сохранение состояния
Бизнес логика
ESB
Подводные камни
 Возобновление после сбоя
 Слишком асинхронная асинхронность
Спасибо за внимание

More Related Content

Viewers also liked

CQRS and EventSourcing
CQRS and EventSourcingCQRS and EventSourcing
CQRS and EventSourcingDevOWL Meetup
 
Что такое современная Frontend разработка
Что такое современная Frontend разработкаЧто такое современная Frontend разработка
Что такое современная Frontend разработкаDevOWL Meetup
 
Solucion industrialempresarial-161017170618-170221174435-170228171713
Solucion industrialempresarial-161017170618-170221174435-170228171713Solucion industrialempresarial-161017170618-170221174435-170228171713
Solucion industrialempresarial-161017170618-170221174435-170228171713Maxwell Altamirano
 
формирование политических партий и движений
формирование политических партий и движенийформирование политических партий и движений
формирование политических партий и движенийНаталья Козловская
 
Herramientas web 2.0
Herramientas web 2.0Herramientas web 2.0
Herramientas web 2.0piune03
 
Pedagogias emergentes experiencia
Pedagogias emergentes experienciaPedagogias emergentes experiencia
Pedagogias emergentes experienciafrancy1236
 
Crecimiento de El Salvador en 2016: el menor de Centroamérica, sustentado en ...
Crecimiento de El Salvador en 2016: el menor de Centroamérica, sustentado en ...Crecimiento de El Salvador en 2016: el menor de Centroamérica, sustentado en ...
Crecimiento de El Salvador en 2016: el menor de Centroamérica, sustentado en ...FUSADES
 
Gdz ukr literatura_parashich
Gdz ukr literatura_parashichGdz ukr literatura_parashich
Gdz ukr literatura_parashichLucky Alex
 
10 claves para la implementación de tendencias y
10 claves para la implementación de tendencias y10 claves para la implementación de tendencias y
10 claves para la implementación de tendencias ymonita1376
 
Actividades para-pensar-y-trabajar-el-cerebro
Actividades para-pensar-y-trabajar-el-cerebroActividades para-pensar-y-trabajar-el-cerebro
Actividades para-pensar-y-trabajar-el-cerebroMaria Jose Guzman Santos
 
Solucion industrialempresarial-24. Química general 25. Química orgánica 26. F...
Solucion industrialempresarial-24.	Química general 25.	Química orgánica 26.	F...Solucion industrialempresarial-24.	Química general 25.	Química orgánica 26.	F...
Solucion industrialempresarial-24. Química general 25. Química orgánica 26. F...Maxwell Altamirano
 
Effective stress management
Effective stress managementEffective stress management
Effective stress managementsudarshan jadwal
 
Ο Ύμνος της Αγάπης, Β΄ τρίμηνο, Τάξη ΣΤ΄, Σχ. έτος 2016-17
Ο Ύμνος της Αγάπης, Β΄ τρίμηνο, Τάξη ΣΤ΄, Σχ. έτος 2016-17Ο Ύμνος της Αγάπης, Β΄ τρίμηνο, Τάξη ΣΤ΄, Σχ. έτος 2016-17
Ο Ύμνος της Αγάπης, Β΄ τρίμηνο, Τάξη ΣΤ΄, Σχ. έτος 2016-17kastanos
 

Viewers also liked (20)

CQRS and EventSourcing
CQRS and EventSourcingCQRS and EventSourcing
CQRS and EventSourcing
 
Что такое современная Frontend разработка
Что такое современная Frontend разработкаЧто такое современная Frontend разработка
Что такое современная Frontend разработка
 
Solucion industrialempresarial-161017170618-170221174435-170228171713
Solucion industrialempresarial-161017170618-170221174435-170228171713Solucion industrialempresarial-161017170618-170221174435-170228171713
Solucion industrialempresarial-161017170618-170221174435-170228171713
 
формирование политических партий и движений
формирование политических партий и движенийформирование политических партий и движений
формирование политических партий и движений
 
Herramientas web 2.0
Herramientas web 2.0Herramientas web 2.0
Herramientas web 2.0
 
Pedagogias emergentes experiencia
Pedagogias emergentes experienciaPedagogias emergentes experiencia
Pedagogias emergentes experiencia
 
Crecimiento de El Salvador en 2016: el menor de Centroamérica, sustentado en ...
Crecimiento de El Salvador en 2016: el menor de Centroamérica, sustentado en ...Crecimiento de El Salvador en 2016: el menor de Centroamérica, sustentado en ...
Crecimiento de El Salvador en 2016: el menor de Centroamérica, sustentado en ...
 
Gdz ukr literatura_parashich
Gdz ukr literatura_parashichGdz ukr literatura_parashich
Gdz ukr literatura_parashich
 
10 claves para la implementación de tendencias y
10 claves para la implementación de tendencias y10 claves para la implementación de tendencias y
10 claves para la implementación de tendencias y
 
Actividades para-pensar-y-trabajar-el-cerebro
Actividades para-pensar-y-trabajar-el-cerebroActividades para-pensar-y-trabajar-el-cerebro
Actividades para-pensar-y-trabajar-el-cerebro
 
Solucion industrialempresarial-24. Química general 25. Química orgánica 26. F...
Solucion industrialempresarial-24.	Química general 25.	Química orgánica 26.	F...Solucion industrialempresarial-24.	Química general 25.	Química orgánica 26.	F...
Solucion industrialempresarial-24. Química general 25. Química orgánica 26. F...
 
Pedagogias emergentes bibi
Pedagogias emergentes bibiPedagogias emergentes bibi
Pedagogias emergentes bibi
 
Arequipe
ArequipeArequipe
Arequipe
 
Effective stress management
Effective stress managementEffective stress management
Effective stress management
 
Ο Ύμνος της Αγάπης, Β΄ τρίμηνο, Τάξη ΣΤ΄, Σχ. έτος 2016-17
Ο Ύμνος της Αγάπης, Β΄ τρίμηνο, Τάξη ΣΤ΄, Σχ. έτος 2016-17Ο Ύμνος της Αγάπης, Β΄ τρίμηνο, Τάξη ΣΤ΄, Σχ. έτος 2016-17
Ο Ύμνος της Αγάπης, Β΄ τρίμηνο, Τάξη ΣΤ΄, Σχ. έτος 2016-17
 
Maqueta 5
Maqueta 5Maqueta 5
Maqueta 5
 
Jaudry
JaudryJaudry
Jaudry
 
How to Introduce Kids to Oral Care
How to Introduce Kids to Oral Care How to Introduce Kids to Oral Care
How to Introduce Kids to Oral Care
 
Maqueta 5
Maqueta 5Maqueta 5
Maqueta 5
 
Taller español
Taller españolTaller español
Taller español
 

Similar to Cага о сагах

Игорь Кашкута
Игорь КашкутаИгорь Кашкута
Игорь КашкутаCodeFest
 
ITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковEYevseyeva
 
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...ZFConf Conference
 
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...Ontico
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Ontico
 
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)Ontico
 
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Yulia Tsisyk
 
Эд Изотов: "In God we trust the REST we test".
Эд Изотов: "In God we trust the REST we test".Эд Изотов: "In God we trust the REST we test".
Эд Изотов: "In God we trust the REST we test".Hub-IT-School
 
Программируемость корпоративной сети с Cisco APIC-EM
Программируемость корпоративной сети с Cisco APIC-EMПрограммируемость корпоративной сети с Cisco APIC-EM
Программируемость корпоративной сети с Cisco APIC-EMCisco Russia
 
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...it-people
 
2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложенийYandex
 
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Ilya Kaznacheev
 
Ember.js - Назад в Будущее - Odessa JS 2014
Ember.js - Назад в Будущее - Odessa JS 2014Ember.js - Назад в Будущее - Odessa JS 2014
Ember.js - Назад в Будущее - Odessa JS 2014Andrey Listochkin
 
"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИСit-people
 
Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»
Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»
Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»DevDay
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"Fwdays
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015GetDev.NET
 

Similar to Cага о сагах (20)

Игорь Кашкута
Игорь КашкутаИгорь Кашкута
Игорь Кашкута
 
ITmozg, Даниил Павлючков
ITmozg, Даниил ПавлючковITmozg, Даниил Павлючков
ITmozg, Даниил Павлючков
 
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
 
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
 
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)
 
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
 
Правильный REST API
Правильный REST APIПравильный REST API
Правильный REST API
 
Эд Изотов: "In God we trust the REST we test".
Эд Изотов: "In God we trust the REST we test".Эд Изотов: "In God we trust the REST we test".
Эд Изотов: "In God we trust the REST we test".
 
Railsclub 2012
Railsclub 2012Railsclub 2012
Railsclub 2012
 
Программируемость корпоративной сети с Cisco APIC-EM
Программируемость корпоративной сети с Cisco APIC-EMПрограммируемость корпоративной сети с Cisco APIC-EM
Программируемость корпоративной сети с Cisco APIC-EM
 
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
 
2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений
 
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
 
Ember.js - Назад в Будущее - Odessa JS 2014
Ember.js - Назад в Будущее - Odessa JS 2014Ember.js - Назад в Будущее - Odessa JS 2014
Ember.js - Назад в Будущее - Odessa JS 2014
 
"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС
 
Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»
Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»
Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
 
Mobilefest2012
Mobilefest2012Mobilefest2012
Mobilefest2012
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015
 

More from DevOWL Meetup

Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.jsTrainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.jsDevOWL Meetup
 
SEO basics for developers
SEO basics for developersSEO basics for developers
SEO basics for developersDevOWL Meetup
 
Startup tactics for developers: A, B, C
Startup tactics for developers: A, B, CStartup tactics for developers: A, B, C
Startup tactics for developers: A, B, CDevOWL Meetup
 
Easily create apps using Phonegap
Easily create apps using PhonegapEasily create apps using Phonegap
Easily create apps using PhonegapDevOWL Meetup
 
MeetupCamp Витебский летний митап 5-6 июля
MeetupCamp Витебский летний митап 5-6 июляMeetupCamp Витебский летний митап 5-6 июля
MeetupCamp Витебский летний митап 5-6 июляDevOWL Meetup
 
Обзор Haxe & OpenFl
Обзор Haxe & OpenFlОбзор Haxe & OpenFl
Обзор Haxe & OpenFlDevOWL Meetup
 
Recommerce изнутри
Recommerce изнутриRecommerce изнутри
Recommerce изнутриDevOWL Meetup
 
Database reverse engineering
Database reverse engineeringDatabase reverse engineering
Database reverse engineeringDevOWL Meetup
 
ECMAScript 5 Features
ECMAScript 5 FeaturesECMAScript 5 Features
ECMAScript 5 FeaturesDevOWL Meetup
 
AngularJS basics & theory
AngularJS basics & theoryAngularJS basics & theory
AngularJS basics & theoryDevOWL Meetup
 
Async Module Definition via RequireJS
Async Module Definition via RequireJSAsync Module Definition via RequireJS
Async Module Definition via RequireJSDevOWL Meetup
 
Google map markers with Symfony2
Google map markers with Symfony2Google map markers with Symfony2
Google map markers with Symfony2DevOWL Meetup
 
Потоковая репликация PostgreSQL
Потоковая репликация PostgreSQLПотоковая репликация PostgreSQL
Потоковая репликация PostgreSQLDevOWL Meetup
 

More from DevOWL Meetup (18)

Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.jsTrainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
 
SEO basics for developers
SEO basics for developersSEO basics for developers
SEO basics for developers
 
Testing is coming
Testing is comingTesting is coming
Testing is coming
 
HR VS DEV
HR VS DEVHR VS DEV
HR VS DEV
 
Startup tactics for developers: A, B, C
Startup tactics for developers: A, B, CStartup tactics for developers: A, B, C
Startup tactics for developers: A, B, C
 
Easily create apps using Phonegap
Easily create apps using PhonegapEasily create apps using Phonegap
Easily create apps using Phonegap
 
MeetupCamp Витебский летний митап 5-6 июля
MeetupCamp Витебский летний митап 5-6 июляMeetupCamp Витебский летний митап 5-6 июля
MeetupCamp Витебский летний митап 5-6 июля
 
Обзор Haxe & OpenFl
Обзор Haxe & OpenFlОбзор Haxe & OpenFl
Обзор Haxe & OpenFl
 
Recommerce изнутри
Recommerce изнутриRecommerce изнутри
Recommerce изнутри
 
Lucene in Action
Lucene in ActionLucene in Action
Lucene in Action
 
Database reverse engineering
Database reverse engineeringDatabase reverse engineering
Database reverse engineering
 
devOWL coffee-break
devOWL coffee-breakdevOWL coffee-break
devOWL coffee-break
 
ECMAScript 5 Features
ECMAScript 5 FeaturesECMAScript 5 Features
ECMAScript 5 Features
 
AngularJS basics & theory
AngularJS basics & theoryAngularJS basics & theory
AngularJS basics & theory
 
Async Module Definition via RequireJS
Async Module Definition via RequireJSAsync Module Definition via RequireJS
Async Module Definition via RequireJS
 
Bootstrap3 basics
Bootstrap3 basicsBootstrap3 basics
Bootstrap3 basics
 
Google map markers with Symfony2
Google map markers with Symfony2Google map markers with Symfony2
Google map markers with Symfony2
 
Потоковая репликация PostgreSQL
Потоковая репликация PostgreSQLПотоковая репликация PostgreSQL
Потоковая репликация PostgreSQL
 

Cага о сагах