43
#tarabica16

Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

Embed Size (px)

Citation preview

Page 1: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Page 2: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Page 3: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Arhitektura i implementacija CQRS

šablona sa Microsoft.NET-om

Skorić Milan<[email protected]>

Page 4: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Cilj prezentacije

• CQRS - “Command Query

Responsibility Segregation”

nije samo za velika i kompleksna

„enterprise“ rešenja već je

upotrebljiv i prikladan u svakom

rešenju, pogotovo za „cloud“.

Page 5: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

O meni

• Prvi profesionalni kod

napisan uz pomoć „beta“

verzije .Net Framework-a

početkom 2001. godine

• Pionir mobilnih i

elektronskih servisa za

bankarstvo u regionu

• Jedan od osnivača

Page 6: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Agenda

• O tehnologijama

• Moderna arhitektura poslovnih aplikacija

• Šta je to CQRS šablon?

• Primer implementacije CQRS-a u Microsoft .Net

• Slobodno pitajte

Page 7: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Agenda

• Molim vas da popunite anketu pre izlaska.

• Red drugi, zaokružite broj sale (005) i ocenu, hvala!

Page 8: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Digitalizacija

Page 9: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Metapodaci

Page 10: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Page 11: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Ciljevi za Smartwave

• Dostupan

• Brz odziv

• Laka integracija

• Agilnost

• Jedostavno za postavljanje

• Telemetrija

• Ako je moguće i jeftino

Page 12: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Fokus

ASP.NET MVC XAMARIN

SignalR, EF Code Frist

ASP.NET Web API

Visual Studio & .NET

Page 13: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

U oblacima sa BizSpark-om

• Jednostavno se postavlja uz Visual Studio

• Nema „gvožđa“ za održavanje

• Skalabilnost dostupna na klik

• Multi-tenant

https://azure.microsoft.com/en-

us/documentation/articles/sql-database-elastic-

tools-multi-tenant-row-level-security/

Page 14: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

A arhitektura

Kreirana za laku zamenu umesto česte ponovne

upotrebe

Page 15: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Tradicija

PREDNOSTI

• Jednostavno se pravi

• Puna podrška

menadžmenta

• Već utabane staze

MANE

• Limitirana skalabilnost

• Teško se održava a često i

sporo

• Prekomerna konverzija

poruka koji se šetaju među

slojevima

Page 16: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

#Onokad baza nije centarCore

Domain

API

Infrastructure

Page 17: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Domenski model - DDD

Segments

Party Process

Roles

Page 18: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

DDD iz prakse sa EF

Page 19: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Izbegavajte javne konstruktore bez

parametara

Page 20: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Koristite privatne članove a

ponašanje držite uz objekte

http://thedatafarm.com/data-access/entity-framework-private-constructors-and-private-setters/

Page 21: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Microservice

UI HTML, WPF …

APIJSON, XML …

SVC

ModelAggregates,

Entities, Value Objects, Events

• Svaki „mikro“ deo

sadrži sve što je

neophodno da bude

potpuno samostalan

Page 22: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

CQ(R)S iz perspektive koda

• CQRS ( najprostiji)• CQS

Page 23: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Tipovi implementacija

• Regularna implementacija – vraća novac

– Transakcija po akciji

– Upiti vraćaju DTO

• Standardna implementacija

– Domenski model je fokusiran na ponašanje

koje menja stanje

– Tabela po upitu

• “Event Sourcing”

– Čuvaju se samo događaji na osnovi kojih se

gradi stanje domena

– Automatski rešen istorijat i audit podataka

CQ

ES

SqLDocument

Graph

Page 24: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Standardna implementacija

ApplicationLayer

State DB

Event store

Read stack

Domain Layer

In MemoryHandlers

Command Event Data

Handlers

Model Services

BUS

Page 25: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Azure implementacija

SPA

Web API

Query Command

Repository

Read Model

Azure – BUS sub-system

Queue

Blob Storage

Azure Table Storage as

Event Store

Command handler

Domain Events

EventHandler

Query Handler

HTTPReq./Res.

HTTPReq.

Worker RoleWeb Role

Unit ofWork

Page 26: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Demo

Page 27: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

WebAPI

Page 28: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Komanda

Page 29: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Obrada komande

Page 30: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Provera ispravnosti

Page 31: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Command Bus

Page 32: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Upit

Page 33: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Read-Only EF Context

Page 34: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Domenski događaji

Page 35: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Događaji iz domenskih objekata

Page 36: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Obrada događaja

Page 37: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Demo

Page 38: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Kružna arhitektura

Task based UI

Read ModelDomain Model

Commands: Create Comment

Queries: Find all comments

Event: Comment Created

Page 39: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Prednosti i mane

PREDNOSTI

• Komande su glagoli i

podržavaju uvek samo

jedan scenario

• Query Store – može da

bude NoSQL

• Proširivost

• Performantnost

• Lako se testira

• Lako se integriše

MANE

• Teško je održavati

sinhronizaciju između više

skladišta podataka

• Puno novih koncepata

• Puno novih odluka koje

treba doneti

• Limitirana praksa

Page 40: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Resursi

• https://msdn.microsoft.com/en-us/library/jj554200.aspxBy Patterns & Practices

• http://www.codemag.com/article/1411071By Leonardo Esposito

• http://martinfowler.com/bliki/CQRS.htmlBy Martin Fowler

• http://codebetter.com/gregyoung/2012/09/09/cqrs-is-not-an-architecture-2/By Greg Young

– http://www.udidahan.comBy Udi Dahan

Page 41: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Pitanja i odgovori

• Slobodno se prijavite, Smartwave trenutno nudi

besplatno „beta“ verziju za testiranje i evaluaciju

http://smartwavebeta.cloudapp.net/

• Kod sa predavanja biće dostupan na:

https://github.com/milanskoric

Page 42: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16

Page 43: Tarabica16 Arhitektura i implementacija CQRS šablona sa Microsoft.Net-om

#tarabica16