Mamy 3 systemy.
Bank.
Firma od której Bank kupił oprogramowanie dajmy jej nazwę „MięsoLux” XD
Integrator - brzmi jak seryjny morderca (jestem w tym zespole i nikogo nie zabiliśmy).
Bank jak wiadomo ma pierdyliat swoich uslug, które w tym przypadku są niskopoziomowe.
Miesolux ma opcje dość wysokopoziomowe.
Przykład: Chcemy przez miesolux dokonać zakupu mięsa - jest to jedna operacja.
Zakup miesa od strony banku składa się z 3 etapów.
- Zablokowania środków klienta banku, który chce kupić mieso.
- Wysłanie do drugiego banku informacji o tym, ze ten drugi bank dostanie pieniazki, ponieważ właściciel swini ze sklepu MiesoLux jest klientem drugiego banku.
- Usunięcie środków klienta z konta.
Najważniejsze w tych operacjach, ze jest sa one typu mutable dla innych systemów. Wiec wprowadzają chwilowa niespójność danych.
Gdy 2 operacja nie pyknie, mamy problem. Trzeba ustalić polityke i o tej polityce chciałbym pogadać.
Czytałem richardsona o mikroserwisach. On powiedział, żeby używać sag. Problem w tym, ze projekt mamy typu legacy a dopiero pod koniec teraz w projekcie zostało powiedziane, ze trzeba będzie zabezpieczyć się przed niespójnością danych.
Czyli operujemy na istniejącym systemie.
Cel jest taki by jak najmniejszymi środkami osiągnąć rezultat.
Transakcje rozproszone odpadają, bo to niemożliwe. Działamy NIE tylko na bazach a innych interfejsach, jak np wiadomosc do innego banku, gdzie Nie ma rollbacku.
Nigdy nie korzystałem z sag, frameworkow sagowych itd. Znam je tylko z poziomu koncepcyjnego, ale tu trzeba isc w ta stronę. Nie wiem tylko jak.
Myslalem, żeby zrobić zabezpieczenie w postaci składowania obecnego stanu operacji do oddzielnej bazy danych.
Czyli zaszła operacja -> event. Zapis do bazy. Mamy maszynę stanu w bazie, ale co z tym dalej to nie wiem...Robi się skomplikowanie.
Drugie pytanie, to jak taki event wysłać i wygenerować najlepiej do tego przypadku?
Czyli 2 dość mocno otwarte pytania.
Jak generować eventy i co dalej z nimi robić w tym przypadku.