CQRS – moda czy sposób na wydajność?

Nowe trendy w branży e-commerce stawiają przed architektami systemów coraz to nowsze wyzwania. Rynek wymusza, aby sklepy internetowe nie były już statycznymi katalogami produktów lecz prezentowały spersonalizowaną ofertę, która będzie dostosowana do upodobań nawet tych najbardziej wymagających klientów. Sprawia to, że gromadzimy coraz większą ilość danych, co w konsekwencji powoduje problem z ich przetworzeniem. Czy obecnie zyskujący tak wielką popularność CQRS jest trendem, który powinni wykorzystać architekci, aby wyeliminować te problematyczne kwestie?


Personalizowana oferta

W obecnych czasach dane o użytkownikach i ich zachowaniach są cenną informację dla właścicieli sklepów internetowych. Wiedza o tym jakie produkty są przeglądane i  dodawane do koszyków zakupowych przez klientów oraz informacja o tym, w których godzinach sklep odwiedza najwięcej osób, pozwala dostosować ofertę pod indywidualne oczekiwania konsumentów. Posiadając taką wiedzę w łatwy sposób można wspomóc decyzje zakupowe, poprzez różnego rodzaju procesy jak np. opcję ostatnio przeglądanych i najczęściej kupowanych produktów.

Co więcej, obecnie dostępnych jest wiele mechanizmów umożliwiających zatrzymanie uwagi klienta, w chwili, gdy ten planuje porzucenie ścieżki zakupowej. Polegają one na zdefiniowaniu zachowań konsumenta świadczących o braku zdecydowania lub chęci finalizacji zamówienia. W takim momencie wyświetlając konsumentowi informację o przysługującym rabacie dostarczamy mu motywację do dokończenia zakupów. Innym sprawdzonym sposobem jest przypomnienie o porzuconym koszyku.

Gromadząc i analizując, przez dłuższy okres czasu, dane o preferencjach zakupowych klientów jesteśmy w stanie w odpowiednim momencie je wykorzystać np. poprzez  poinformowanie użytkownika o potrzebie zakupu nowej kurtki na sezon zimowy (wiemy, że użytkownik co roku w grudniu kupuje kurtkę). Wszystkie te mechanizmy niewątpliwie wpływają na zwiększenie sprzedaży w e-commerce, niemniej jednak są wymagające pod kątem zapewnienia odpowiedniej architektury zapewniającej szybkość, stabilność oraz skalowalność.

Moda czy sposób na rozwiązanie?

Projektujący system architekci muszą mieć na uwadze: czas przez jaki będzie użytkowany, rozwój oraz wzrost zainteresowania. Sprawia to, że muszą dążyć do zapewnienia wysokiej wydajności, stabilności oraz możliwości modyfikacji względem rosnących potrzeb. W rozmowach projektantów dążących do utrzymania wysokich standardów coraz częściej pada informacja o wykorzystaniu wzorca architektonicznego CQRS. Tu powstaje pytanie czy jest to klucz do sukcesu czy modny temat. W sieci można znaleźć wiele materiałów oraz przykładów mówiących o tym czym on jest, dlatego w tym miejscu skupimy się na tym jak przy jego zastosowaniu poprawić wydajność systemu.

Architekci analizując stawiane przed nimi problemy powinni podzielić je na 2 grupy: te wymagające ścisłej kontroli oraz te, których wykonanie w określonym czasie nie jest krytyczne dla zachowania poprawności operacji. Obrazując na przykładzie: „Dla procesu złożenia zamówienia krytyczne jest sprawdzenie stanów magazynowych oraz wyliczenie cen sprzedawanych produktów, ale nie są już krytyczne operacje takie jak wysłanie powiadomienia e-mail, zapisanie statystyk czy wysłanie zamówienia do systemów zewnętrznych”. Operacje, które nie są krytyczne dla wykonania możemy wykonać asynchronicznie odciążający tym samym główny proces. Asynchroniczność w tym przypadku polega  na oddelegowaniu części operacji do wykonania przez procesy działające backendowo w tle.

Praktyka

W teorii wygląda to prosto, jak jest w praktyce? Spójrzmy na poniższy przykład. Problem jaki mamy to zbieranie informacji o produktach przeglądanych przez użytkownika. Czy jest to operacja krytyczna dla projektowanego systemu? Nie, dane są dla nas cenne, ale równie  cenny jest komfort użytkownika, a co za tym idzie czas odpowiedzi na żądanie. Wykorzystując do rozwiązania tego zdania CQRS możemy w prosty sposób sprawić, aby operacje były wykonywane asynchronicznie. Informacja o obejrzeniu danego produktu przez użytkownika tworzy Command, który bez problemu może być „wrzucony” na kolejkę, a następnie przetworzony przez procesy działające na backendzie. Aby zobrazować działanie spójrzmy na Rysunek 1.

CQRE - Schemat asynchronicznego wykonania operacji - Grupa Unity

Rysunek 1. Schemat asynchronicznego wykonania operacji (Żródło)

 

Analizując powyższy przykład nie powinniśmy mieć wątpliwości, że  to nie tylko chwilowy trend. Idea CQRS nie ogranicza się tylko do odseparowania logiki sposobu zapisu i odczytu, ale istnieje również możliwość jego wykorzystania do zwiększenia elastyczności systemu m.in. poprzez zastosowanie asynchronicznego przetwarzania.

 

 

Projektant w Grupie Unity odpowiedzialny za utrzymanie, rozwój oraz wydajność systemów e-commerce dla klientów firmy. Doświadczenie zdobywał realizując projekty sklepów internetowych dla branży fashion. Obecnie pochłonięty rozwojem w zakresie wdrożeń Magento2. Aktywnie uczestniczy w poszerzaniu kompetencji zespołu poprzez organizację wewnętrznych szkoleń. Prywatnie zaangażowany w rozwój oprogramowania dedykowanego CandleScanner dla klientów indywidualnych i domów maklerskich.

Napisz do nas

Potrzebujesz więcej informacji lub jesteś zainteresowany współpracą z nami? Chętnie odpowiemy na każde pytanie. Zapraszamy do kontaktu!
Pola oznaczone * są wymagane.

Więcej na naszym blogu...

Zobacz wszystkie posty