Witam,
załóżmy, że mamy 2 najprostsze mikroserwisy:
- UserService od użytkowników, ich autoryzacji, generowania tokenów itd. używający swojej bazy danych
- PostService - od obsługi postów na tablicy używający swojej bazy danych
Dodając post na tablicy chcielibyśmy zapisywać dane użytkownika, który dodał post. Możemy po prostu zapisać jego id w bazie PostService. Ale żeby wyświetlić jego dane musimy poźniej przez api wywołac jakieś np. userservice/{id}/details i to za każdym razem gdy chcemy wiedzieć coś o dodajacym. Czy to jest poprawne podejście ? Gdy chcemy wyświelić listę 20 postów, każdy post musi odwołać się do serwisu i pobrac informacje kogo to post ?
Żeby to ominąć mogę zrobić tabele users w PostService i zapisywać tylko nazwę użytkownika w tej tabeli, wtedy nie muszę zawsze się odwoływać do drugiego serwisu. Ale co jeśli edytuje dane użytkownika ? Jego nazwę? To chyba traci sens mikroserwisu. Ale jednak jakoś trzeba to zmapować.
To jest tylko prosty przykład, ale takich wspólnych danych może być bardzo dużo. Jak się do tego odnosić?
PS. Wiem, że ktoś może napisać, że może lepszy monolit, nie bawić się w mikroserwisy. Ale chciałbym poznać optymalne rozwiązanie używając podejścia w mikroserwisami. Jeśli ktoś pracuje nad takimi projektami, mógłby opisać jak to działa w praktyce? :)