Warstwa Abstrakcji - stanowi izolację pomiędzy kodem programisty a zewnętrznymi modułami, pozwala odseparować system od jego zależności przez co czyni go podatnym na zmiany i aktualizacje. Przywiązując system do innej usługi czynimy go słabym.

Event Sourcing - wprowadzenie PHP

Capture all changes to an application state as a sequence of events.

Martin Fowler

Ciężko o lepszą definicję Event Sourcingu. Niezależnie od technologii i implementacji Event Sourcing to po prostu sposób na tworzenie stanu systemu poprzez zapisywanie i odtwarzanie zdarzeń. Utarło się twierdzenie, że Event Sourcing należy implementować w parze z CQRS. Nie jest to prawda, CQRS bardzo dobrze współgra z Event Sourcingiem jednak mogą istnieć całkowicie od siebie niezależnie. Ten wpis nie poruszy jeszcze tematu implementacji Event Sourcingu za pomocą jakiegokolwiek konkretnego frameworka. Chodzi w nim bardziej o zaprezentowanie i wyjaśnienie samego konceptu niż implementacji.

CQRS - Query, read model

Zanim przystąpisz do czytania rzuć okiem na wprowadzenie do CQRS. W poprzednim wpisie wyjaśniłem po krótce czym jest CQRS oraz jakie jest jego zastosowanie. Tym razem skupie się jedynie na read modelu, czyli części Query.
Generowanie read modelu może okazać się bardzo skomplikowane, szczególnie kiedy model domeny nie do końca przekłada się na interfejs użytkownika. Chyba każdemu zdarzyło się dołożyć coś do encji tylko dlatego, że później w UI będzie to potrzebne, pomimo iż ta wartość nie ma żadnego znaczenia biznesowego. CQRS oraz rozdzielny read i write model świetnie rozwiązuje ten problem, pozwala dane mało istotne trzymać z daleka od tych krytycznych, ograniczając przez to ryzyko wprowadzenia systemu w nieoczekiwany lub niepoprawny stan. Dla mnie osobiście największą zaletą posiadania niezależnego read modelu, który może być przechowywany w zasadzie gdziekolwiek (nawet w pamięci) jest możliwość jego odtworzenia w dowolnym czasie, w dowolny sposób, nawet zmieniając zupełnie jego strukturę.

Akceptuję

Ten serwis używa plików cookies. Więcej o plikach cookies.