SlideShare une entreprise Scribd logo
1  sur  49
Command / Query ResponsibilitySegregation теория и практика
О чем пойдет речь? ,[object Object]
С чего мы начали?
Куда мы движемся?
Чем пользоваться?
Что в итоге?,[object Object]
Типовые свойства ,[object Object]
Сложность принятия решений
Новые роли
Масштабируемость
Старые компоненты
Расходы на разработку,[object Object]
С чего все начинают?
С чего все начинают?
Как все заканчивается?
Command / Query Responsibility Segregation ,[object Object]
Event Sourcing
Task Based User Interface
Messaging
Domain Driven Design,[object Object]
Command/Query Separation End User Interface Application Server Query Command SELECT * FROM Product UPDATE Product DB
Command/Query Separation End User Interface Application Server Query Command SELECT * FROM Product UPDATE Product DB
Command/Query Separation End User Interface Application Server Query Command SELECT * FROM Product UPDATE Product Queries Cache Domain Persistence
Command/Query Separation End User Interface Reporting Domain Model UPDATE Product SELECT * FROM Product Queries Cache Domain Persistence
Command/Query Separation End User Interface AddProductToTheCart Reporting Domain Model INSERT INTO CartINSERT INTO CartItem Queries Cache Domain Persistence
Command/Query Separation End User Interface AddProductToCart Reporting Domain Model INSERT INTO CartINSERT INTO CartItem ProductToCartAdded View Data Cache Domain Persistence
Command/Query Separation End User Interface AddProductToCart Reporting Domain Model INSERT INTO CartINSERT INTO CartItem INSERT INTO ProductsInCart ProductToCartAdded View Data Cache Domain Persistence
Command/Query Separation End User Interface AddProductToCart SELECT * FROM ProductsInCart Reporting Domain Model INSERT INTO CartINSERT INTO CartItem INSERT INTO ProductsInCart ProductToCartAdded View Data Cache Domain Persistence
Event Sourcing
Event Sourcing КАК?!  У Вас на счету: -19435.89₴
Event Sourcing У Вас на счету: -19435.89₴ Перемещение средств:
Event Sourcing End User Interface Reporting Domain Model ProductToCartAdded ProductFromCartRemovedProductQuantityChanged ….. View Data Cache Domain Persistence Events Storage
Event Sourcing End User Interface Reporting Domain Model ProductToCartAdded ProductFromCartRemovedProductQuantityChanged ….. View Data Cache Domain Persistence Events Storage
Task Based User Interface 1. As a Tourist I want to Book a Hotel
Task Based User Interface 1. As a Tourist I want to Find and Book a Hotel
Task Based User Interface 1. As a Tourist I want to Find and Book a Hotel
Task Based User Interface 1. As a Tourist I want to Find and Book a Hotel
Messaging Book Hotel Domain Model View Data Cache Events Storage
Messaging  BookHotelCommand Book Hotel Domain Model View Data Cache Events Storage
Messaging  BookHotelCommand Book Hotel  Domain Model HotelBooked View Data Cache Events Storage
Domain Driven Desingn Ожидайте
Практика
С чего начали мы?
С чего начали мы? Shared Services End User Interface Backoffice Service Layer Application Facade Domain Model DB1 DB2 Services
Как это выглядит?
Шаг №1 User  Interface Service Layer Application Facade Domain Model Database
Шаг №1 User  Interface Domain Model Database
Шаг №2 User  Interface Domain Model Reports Database
Шаг №2

Contenu connexe

En vedette

CQRS and what it means for your architecture
CQRS and what it means for your architectureCQRS and what it means for your architecture
CQRS and what it means for your architectureRichard Banks
 
Developing event-driven microservices with event sourcing and CQRS (Shanghai)
Developing event-driven microservices with event sourcing and CQRS (Shanghai)Developing event-driven microservices with event sourcing and CQRS (Shanghai)
Developing event-driven microservices with event sourcing and CQRS (Shanghai)Chris Richardson
 
Developing event-driven microservices with event sourcing and CQRS (phillyete)
Developing event-driven microservices with event sourcing and CQRS (phillyete)Developing event-driven microservices with event sourcing and CQRS (phillyete)
Developing event-driven microservices with event sourcing and CQRS (phillyete)Chris Richardson
 
Introduction to Cassandra Basics
Introduction to Cassandra BasicsIntroduction to Cassandra Basics
Introduction to Cassandra Basicsnickmbailey
 
Microservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event SourcingMicroservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event SourcingBen Wilcock
 
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...Chris Richardson
 
An Overview of Apache Cassandra
An Overview of Apache CassandraAn Overview of Apache Cassandra
An Overview of Apache CassandraDataStax
 
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...Chris Richardson
 

En vedette (9)

CQRS and what it means for your architecture
CQRS and what it means for your architectureCQRS and what it means for your architecture
CQRS and what it means for your architecture
 
Developing event-driven microservices with event sourcing and CQRS (Shanghai)
Developing event-driven microservices with event sourcing and CQRS (Shanghai)Developing event-driven microservices with event sourcing and CQRS (Shanghai)
Developing event-driven microservices with event sourcing and CQRS (Shanghai)
 
Developing event-driven microservices with event sourcing and CQRS (phillyete)
Developing event-driven microservices with event sourcing and CQRS (phillyete)Developing event-driven microservices with event sourcing and CQRS (phillyete)
Developing event-driven microservices with event sourcing and CQRS (phillyete)
 
Introduction to Cassandra Basics
Introduction to Cassandra BasicsIntroduction to Cassandra Basics
Introduction to Cassandra Basics
 
Microservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event SourcingMicroservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event Sourcing
 
Cassandra NoSQL Tutorial
Cassandra NoSQL TutorialCassandra NoSQL Tutorial
Cassandra NoSQL Tutorial
 
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
 
An Overview of Apache Cassandra
An Overview of Apache CassandraAn Overview of Apache Cassandra
An Overview of Apache Cassandra
 
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
 

Similaire à Command-Query Responsibility Segregation: теория и практика

Обеспечение бесперебойной работы корпоративных приложений в больших гетероген...
Обеспечение бесперебойной работы корпоративных приложений в больших гетероген...Обеспечение бесперебойной работы корпоративных приложений в больших гетероген...
Обеспечение бесперебойной работы корпоративных приложений в больших гетероген...Cisco Russia
 
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"LogeekNightUkraine
 
Обзор Cisco UCCX 11
Обзор Cisco UCCX 11Обзор Cisco UCCX 11
Обзор Cisco UCCX 11Cisco Russia
 
Видеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложенииВидеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложенииVoximplant
 
Saa s microsoft spla_kalachova
Saa s microsoft spla_kalachovaSaa s microsoft spla_kalachova
Saa s microsoft spla_kalachovaNick Turunov
 
плакаты конькова ивана12[1].02.14
плакаты конькова ивана12[1].02.14плакаты конькова ивана12[1].02.14
плакаты конькова ивана12[1].02.14IKonkov
 
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Ontico
 
облако для корпоративных ландшафтов практические аспекты выбора
облако для корпоративных ландшафтов   практические аспекты выбораоблако для корпоративных ландшафтов   практические аспекты выбора
облако для корпоративных ландшафтов практические аспекты выбораPlenipotentiary_Iryna
 
IBM ECM & Discovery Strategy
IBM ECM & Discovery StrategyIBM ECM & Discovery Strategy
IBM ECM & Discovery StrategyIBM IBM
 
About TheCloud.ru
About TheCloud.ruAbout TheCloud.ru
About TheCloud.ruTheCloud_ru
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...GetDev.NET
 
Изоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабированиеИзоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабированиеDenis Izmaylov
 
Производительность и энергопотребление мобильных приложений на примере Window...
Производительность и энергопотребление мобильных приложений на примере Window...Производительность и энергопотребление мобильных приложений на примере Window...
Производительность и энергопотребление мобильных приложений на примере Window...Andrew Mayorov
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - ПроизводительностьAlexander Demidov
 
Cloud overview 60_min
Cloud overview 60_minCloud overview 60_min
Cloud overview 60_minPavel Gelvan
 
Api Adobe Suslov
Api Adobe SuslovApi Adobe Suslov
Api Adobe SuslovAlex Ilyin
 

Similaire à Command-Query Responsibility Segregation: теория и практика (20)

Обеспечение бесперебойной работы корпоративных приложений в больших гетероген...
Обеспечение бесперебойной работы корпоративных приложений в больших гетероген...Обеспечение бесперебойной работы корпоративных приложений в больших гетероген...
Обеспечение бесперебойной работы корпоративных приложений в больших гетероген...
 
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
 
Обзор Cisco UCCX 11
Обзор Cisco UCCX 11Обзор Cisco UCCX 11
Обзор Cisco UCCX 11
 
Видеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложенииВидеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложении
 
Saa s microsoft spla_kalachova
Saa s microsoft spla_kalachovaSaa s microsoft spla_kalachova
Saa s microsoft spla_kalachova
 
плакаты конькова ивана12[1].02.14
плакаты конькова ивана12[1].02.14плакаты конькова ивана12[1].02.14
плакаты конькова ивана12[1].02.14
 
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
 
облако для корпоративных ландшафтов практические аспекты выбора
облако для корпоративных ландшафтов   практические аспекты выбораоблако для корпоративных ландшафтов   практические аспекты выбора
облако для корпоративных ландшафтов практические аспекты выбора
 
IBM ECM & Discovery Strategy
IBM ECM & Discovery StrategyIBM ECM & Discovery Strategy
IBM ECM & Discovery Strategy
 
About TheCloud.ru
About TheCloud.ruAbout TheCloud.ru
About TheCloud.ru
 
Bada
BadaBada
Bada
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
 
Изоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабированиеИзоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабирование
 
Производительность и энергопотребление мобильных приложений на примере Window...
Производительность и энергопотребление мобильных приложений на примере Window...Производительность и энергопотребление мобильных приложений на примере Window...
Производительность и энергопотребление мобильных приложений на примере Window...
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
 
Cloud overview 60_min
Cloud overview 60_minCloud overview 60_min
Cloud overview 60_min
 
Microsoft Azure
Microsoft AzureMicrosoft Azure
Microsoft Azure
 
Api Adobe Suslov
Api Adobe SuslovApi Adobe Suslov
Api Adobe Suslov
 

Plus de Kiev ALT.NET

Design by Contract
Design by ContractDesign by Contract
Design by ContractKiev ALT.NET
 
Micro-ORM Introduction - Don't overcomplicate
Micro-ORM Introduction - Don't overcomplicateMicro-ORM Introduction - Don't overcomplicate
Micro-ORM Introduction - Don't overcomplicateKiev ALT.NET
 
Reactive Extensions
Reactive ExtensionsReactive Extensions
Reactive ExtensionsKiev ALT.NET
 
Continuous Integration (CI)
Continuous Integration (CI)Continuous Integration (CI)
Continuous Integration (CI)Kiev ALT.NET
 
WebSharper - веб-программирование без слёз
WebSharper - веб-программирование без слёзWebSharper - веб-программирование без слёз
WebSharper - веб-программирование без слёзKiev ALT.NET
 
F# - функциональный язык «новой» волны
F# - функциональный  язык «новой» волныF# - функциональный  язык «новой» волны
F# - функциональный язык «новой» волныKiev ALT.NET
 
Caliburn Micro Overview
Caliburn Micro OverviewCaliburn Micro Overview
Caliburn Micro OverviewKiev ALT.NET
 
Введение в MVVM
Введение в MVVMВведение в MVVM
Введение в MVVMKiev ALT.NET
 

Plus de Kiev ALT.NET (16)

CQRS EventStore
CQRS EventStoreCQRS EventStore
CQRS EventStore
 
Design by Contract
Design by ContractDesign by Contract
Design by Contract
 
Micro-ORM Introduction - Don't overcomplicate
Micro-ORM Introduction - Don't overcomplicateMicro-ORM Introduction - Don't overcomplicate
Micro-ORM Introduction - Don't overcomplicate
 
Async
AsyncAsync
Async
 
Linq providers
Linq providersLinq providers
Linq providers
 
Reactive Extensions
Reactive ExtensionsReactive Extensions
Reactive Extensions
 
NoSql, MongoDb
NoSql, MongoDbNoSql, MongoDb
NoSql, MongoDb
 
CouchDb
CouchDbCouchDb
CouchDb
 
Orchard
OrchardOrchard
Orchard
 
Mercurial
MercurialMercurial
Mercurial
 
CI via TFS
CI via TFSCI via TFS
CI via TFS
 
Continuous Integration (CI)
Continuous Integration (CI)Continuous Integration (CI)
Continuous Integration (CI)
 
WebSharper - веб-программирование без слёз
WebSharper - веб-программирование без слёзWebSharper - веб-программирование без слёз
WebSharper - веб-программирование без слёз
 
F# - функциональный язык «новой» волны
F# - функциональный  язык «новой» волныF# - функциональный  язык «новой» волны
F# - функциональный язык «новой» волны
 
Caliburn Micro Overview
Caliburn Micro OverviewCaliburn Micro Overview
Caliburn Micro Overview
 
Введение в MVVM
Введение в MVVMВведение в MVVM
Введение в MVVM
 

Command-Query Responsibility Segregation: теория и практика