Event Sourcing – fakty i mity
News

Event Sourcing – fakty i mity

26.08.2022
Event Sourcing jest alternatywnym sposobem tworzenia systemów opartych na przetwarzaniu zdarzeń. Nie da się zaprzeczyć, że jest to rozwiązanie, które niesie za sobą wiele korzyści, takich jak łatwe skalowanie aplikacji przez podział na Command i Query oraz procesy asynchroniczne, dostęp do pełnej historii zmian czy możliwość odtworzenia stanu aplikacji dla wskazanej daty. Wraz ze wzrostem popularności Event Sourcingu pojawiło się także wiele wątpliwości. W tym artykule rozprawiamy się z mitami i potwierdzamy fakty.
  1. Event Sourcing jest skomplikowany

Event Sourcing wymaga zmiany myślenia i perspektywy, a także położenia nacisku na zrozumienie procesów biznesowych i rządzących nimi zdarzeń. Nie jest jednak trudny, tylko inny.

  1. Event Sourcing nie jest praktyczny

Modelowanie procesów biznesowych jako zdarzenia pozwala na maksymalne uproszczenie komunikacji projektowej. Event Sourcing opisuje je w przyjazny, bliższy rzeczywistemu światu sposób.

Jesteś ciekawy jak to wygląda w praktyce? Spójrz na poniższy przebieg zdarzeń:

DodanoElementDoKoszyka, ZaakceptowanoZamównienie, WystawionoFakturęProforma, DokonanoOpłaty, WystawionoFakturę, WysłanoZamówienie.

Prościej już chyba się nie da!

  1. Przy Event Sourcingu konieczne jest zastosowanie CQRS, Domain Driven Design oraz innych nietypowych wzorców

Faktem jest, że są to rozwiązania, które świetnie ze sobą współgrają, bo wszystkie koncentrują się na poznaniu procesów biznesowych i starają się jak najwierniej odtworzyć je w oprogramowaniu, jednak ich wspólne wykorzystanie nie jest obowiązkowe.

  1. Konieczne jest posiadanie dwóch baz danych, z czego jedną z nich musi być Mongo

Event Sourcing nie wskazuje konkretnego sposobu przechowywania danych. Można skorzystać z dwóch baz danych, jednak nie jest to konieczne. Analogicznie jest w przypadku Mongo.

  1. Event Sourcing potrzebuje Eventual Consistency oraz szyny zdarzeń typu RabbitMQ lub Kafka – MIT

Zdarzenia można przechowywać w bazie relacyjnej, dlatego wbrew powszechnemu przekonaniu, Eventual Consistency nie jest niezbędne. Jeśli nie planujesz przekazywania zdarzeń do innych serwisów czy modułów, nie musisz korzystać z szyn zdarzeń, takich jak Kafka czy RabbitMQ.

  1. Możesz napotkać na problemy z wydajnością

Wydajność Event Sourcingu zależy od posiadanego pod sobą storage. Jednak dzięki odpowiedniej optymalizacji może działać szybciej od tradycyjnych rozwiązań, poprzez uniknięcie „losowych aktualizacji rekodów”. Event Sourcing zakłada, że zdarzenia są niezmienialne (immutable). Oznacza to, że nie można zmieniać przeszłości, a jedynie inaczej ją interpretować.

  1. Jest to oprogramowanie trudne w utrzymaniu

Poziom skomplikowania problemów migracji i spójności danych w systemach rozproszonych jest porównywalny do rozwiązań relacyjnych i klasycznych, natomiast zwykle ujawniają się one szybciej.

 

Zainteresował Cię temat Event Sourcingu? Więcej na temat przeczytasz tutaj: https://www.euvic.com/pl/event-sourcing-bez-tajemnic/