Command Query Responsibility Segregation (CQRS) og Event Sourcing med Azure

Sign in to queue

Description

CQRS og event sourcing går hånd i hånd, og hvis man ønsker at bygge skalerbare systemer med kompleks domænelogik, så tilbyder CQRS og event sourcing en model med suveræne egenskaber. I denne session vil vi kigge på d60s egenudviklede (open source og gratis!) framework, Cirqus, som stiller alle de nødvendige primitiver til rådighed for at kunne bygge systemer baseret på CQRS og event sourcing. Vi vil kigge på hvorledes et sådant system kan hostes i Azure med SQL Azure som event store, samt adskillige asynkrone read-modeller i hhv. SQL Azure, MongoDB og Blob Storage, forbundet vha. Azure Service Bus.

Deltagerne vil blive bekendt med de grundlæggende principper i CQRS og event sourcing samt de arkitekturmæssige egenskaber, som gør at CQRS befinder sig ekstremt godt i et cloud- setup. Alle beskrevne principper vil blive illustreret med vaskeægte, kørende kode.

Day:

1

Level:

300

Code:

Web3006

Room:

Sal 3

The Discussion

  • User profile image
    mhoybyef

    God session!

    Med et databaseudgangspunkt kommer man nok til at savne fremmednøgler og transaktioner/tilbagerulning på et tidspunkt - hvad har cirqus at hjælpe med der?

  • User profile image
    mookid8000

    Tak :)

    "Fremmednøgler" kan du ganske nemt bære rundt på, idet du blot kan gemme ID'en på en anden aggregate root.

    Indeni en root kan du så Load<AnotherRoot>(someId).DoStuff() og events emitted i forbindelse med DoStuff() vil blive opsamlet og persisteret atomart i samme unit of work som command'en processeres i.

    Mao: Hvis alt går godt, så persisteres event batch'et - og hvis ikke, så persisteres der intet.

Add Your 2 Cents