Temat: Event sourcing
Marcin M.:
Jakub W.:
Przykład - ES nie jest najlepszą metodą usuwania "problematycznych" błędów.
To dalej tylko i wyłącznie stwierdzenie, bardzo ogólne i nieuzasadnione niczym.
Jak rozumiem, nie jesteś w stanie podać (albo wymyślić) przewag logowania nad radykalną zmianą w mechanizmach persystencji danych...
To proszę, podaj chociaż jeden problem związany z tworzeniem / rozwojem systemów IT, który ES rozwiązuje "lepiej" niż istniejące narzędzia / rozwiązania.
No to jedziemy, pierwsza i najbardziej oczywista rzecz: audyt.
Masz sporządzić dane audytowe z systemu, np. ile razy dany użytkownik wykonał dają akcję, ile łącznie zamówień/faktur/złotych przerobił w danym miesiącu ?
Jak forma zapisu / odtwarzania stanu obiektu automatycznie zagwarantować pewne funkcjonalności biznesowe ?
Kim jest ten "użytkownik" i co to znaczy "przerobił" ?
Jeśli wystawił - w sytuacji gdy aplikacja nie została zaprojektowana tak, żeby "zapamiętywać" kto (pracownik) daną fakturę wystawił (a nie musi), to żadne ES (ani nic innego) takich danych nie udostępni.
Potrzeba (np. w celu umożliwienia audytu) zapisywania "użytkownika przerabiającego faktury" jest częścią funkcjonalności biznesowych i to właśnie w tej warstwie (biznesowej) powinna być realizowana.
Ze statycznym modelem danych musisz wiedzieć, że takie dane będą potrzebne,
przy ES nie trzeba wiedzieć ?
zaimplementować moduł, który będzie odpowiadał za kompletowanie danych audytowych.
no niestety...
Jeśli klient będzie chciał danych, które nie są kompletowane, to jedyne co możesz odpowiedzieć: "nie da się, nie było tego w specyfikacji".
Jeśli klient będzie mnie prosić o dane których wcześniej nie chciał, to uznam, że mu odbiło.
W sumie ... to jest materiał na dobry skecz ;)
Klient: Potrzebuję danych (i funkcjonalności) o których nie był słowa w dokumentacji
Wykonawca: Mamy je
Klient (zakończenie 1): Super. Jesteście super wykonawcami (absurdalna potrzeba, absurdalna realizacja)
Klient (zakończenie 2): Jakie to są dane ? Nie jestem pewien czego potrzebuję.
Klient (zakończenie 3): Tylko sprawdzałem - kończę z wami współpracę ponieważ marnujecie mój czas i pieniądze - jeśli nie ma czegoś w specyfikacji to nie ma być tego w systemie.
W przypadku ES, nie ma z tym żadnych problemów.
ES rozwiązuje problem źle zaprojektowanej domeny aplikacji ...
a co z problemem głodu ? ;)
Z drugiej strony jeśli zrobisz moduł audytowy/log zapisujący wszystko co się stało,
"Zapisuje wszystko" to ES.
Funkcjonalności audytowe to cześć funkcjonalności biznesowej, a więc robota dla analityka.
no to gratulację, bo to pierwszy krok implementacji ES.
To nie ma nic wspólnego z ES.
Logowanie to logowanie. ES przechowywanie stanu systemu w formie listy / historii zmian obiektów biznesowych.
ES pokazuje jak na tak szczegółowym "logu" zaimplementować domenę, dzięki temu nie ma potrzeby statycznego modelu, ani modułu audytowego.
To skąd te wątpliwości ? Jak chcesz, to mogę napisać jak doskonale ES sprawdziło się w projekcie w którym brałem udział :) Może chodzić o wszystko o debugowanie, audyt ... logikę temporalną.. co tam chcesz.
A na serio: ES to taka "błyszcząca rzecz" którą można sprzedać (a właściwie z niej szkolić) Indianom (czyli osobom które jeszcze się nie nauczyły, że IT to dziedzina inżynierii).