Ving

En resa mot CQRS

Anders Ljusberg (@CodingInsomnia)

Thomas Cook Northern Europe

  • 2700 medarbetare på 200 platser
  • Mer än 1.5 miljoner resor varje år
  • Ungefär 100 anställda på IT-avdelningen

Based on a true story...

"Legacy"-system

  • CRUD
  • n-Tier
  • Entity Framework

Två nya krav:

  • Realtidsintegration
  • Förändringslogg

En liten varning...

Arkitektur

Layers
var theCodez = new MyCodez();
theCodez.ShowMe();

CQRS

Commands

  • Hanterar förändringar
  • Returnerar inget

Queries

  • Returnera information
  • Inga sidoeffekter

Behåll kompatibilitet

Layers

Ett steg i taget...

...men alla är viktiga för full effekt

Queries

CQRS Queries

Commands

CQRS Commands
var theCodez = new MyCodez();
theCodez.ShowMe();

Identifierare

Guids

  • Klienten kan skapa själv
  • Behöver inte vänta på svar från server

Hur införa?

  • Ändra databasen
  • Översättningstabell

Events

CQRS Events
var theCodez = new MyCodez();
theCodez.ShowMe();

"Authoritative" Events

CQRS Authoritative Events
var theCodez = new MyCodez();
theCodez.ShowMe();

Till slut...

Våra krav

  • Revisionslogg
  • Integration

Många möjligheter

  • Fylla på ny vy
  • NoSQL?

Summering

Steg för steg

  • Commands/Command Handlers
  • Events
  • "Authoritative" Events

Men...

  • Inte mönstret för ny app
  • Inte mönstret för alla

Frågor?

Twitter: @CodingInsomnia

Web: http://coding-insomnia.com