Microservices Exception Handling

Microservices Exception Handling
DA
  • Rejestracja:około 15 lat
  • Ostatnio:9 miesięcy
0

Zastanawiam się jak powinna wyglądać prawidłowa implementacja wyjątków przy strukturze mikroserwisów tzn.
Załóżmy , że mamy 3 serwisy :
API - serwis wejściowy bez większej logiki biznesowej. Posiada restController, który zwraca ResponseEntity i jedyną rzeczą jaką robi to strzela do LogicSerwisu
LogicSerwis - serwis w którym jest cała logika biznesowa dopełnienie obiektu, pobieranie z bazy danych, wrzucanie na kolejkę itp. I żeby zwrócić response do API ten serwis uderza do kolejnego serwisu FillObject.
FillObject - serwis, który dostaje RQ z LogicSerwis uzupełnia obiekt dodatkowymi danymi i odsyła z powrotem.

Czy każdy z tych serwisów powinien mieć swoją własną fabrykę wyjątków ? czy wszystko powinno być w LogicSerwis bo to jest centrum wszystkiego? Jak powinny być zaimplementowane wyjątki tak żeby na samym końcu API zwróciło błąd, że np FillObject nie mógł napełnić obiektu.

edytowany 1x, ostatnio: davyd
danek
  • Rejestracja:ponad 10 lat
  • Ostatnio:7 miesięcy
  • Lokalizacja:Poznań
  • Postów:797
0

A do czego te wyjątki chcesz używać?


Spring? Ja tam wole mieć kontrole nad kodem ᕙ(ꔢ)ᕗ
Haste - mała biblioteka do testów z czasem.
DA
  • Rejestracja:około 15 lat
  • Ostatnio:9 miesięcy
0

Do wyświetlania min błędów z połączeniem, złych RQ, braku dostępu do zasobu ale również chce wyświetlać takie informację jak brak obiektu w bazie o podanym id, błędy walidacji. ResponseEntity zwraca mój obiekt response dlatego zastanawiam się czy tam nie wrzucić jakiejś listy z error i na każdym etapie jezeli coś by się działo dorzucać do listy a pozniej jak wróci do API bedzie lista error, które po prostu wyświetle.

danek
  • Rejestracja:ponad 10 lat
  • Ostatnio:7 miesięcy
  • Lokalizacja:Poznań
  • Postów:797
0

Poczytaj sobie to i to


Spring? Ja tam wole mieć kontrole nad kodem ᕙ(ꔢ)ᕗ
Haste - mała biblioteka do testów z czasem.
Charles_Ray
  • Rejestracja:około 17 lat
  • Ostatnio:około 7 godzin
  • Postów:1875
0

Są tutaj 2 kwestie. Po pierwsze mikroserwisy i bounded conteksty - usługa A nie powinna wnikać w bebechy usługi B. Może sprawdzić, co nie zabanglało, ale nie powinna kminić dlaczego. Druga sprawa - translacja błędów na wyjściu z systemu. Tutaj zależy, czy klientem jest jakiś frontend i przed tym stoi API gateway, czy jakaś zewnętrzna aplikacja. Tak czy inaczej, musi istnieć warstwa odcięcia, gdzie błędy z wewnątrz mapujemy na tzw. „published language” dla świata zewnętrznego (często będą tu nawet odstępstwa od reguł Rest).


”Engineering is easy. People are hard.” Bill Coughran
edytowany 1x, ostatnio: Charles_Ray

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.