Buduję nową aplikację i czytałem o architekturze mikrousług. Sama architektura ma wiele sensu z punktu widzenia rozwoju, wdrażania i zarządzania cyklem życia. Jednak pojawił się jeden problem związany z obsługą danych podstawowych.
Na przykład mam 2 aplikacje - powiedzmy aplikację Sprzedaż i aplikację do sprzedaży biletów. Załóżmy, że obie te aplikacje są zbudowane jako własne mikrousługi. Jednak obie te aplikacje, jeśli zostaną wdrożone (zakładając, że są wdrażane osobno, mówią, że Sales używa MongoDB, a Ticketing używa MariaDB), musiałyby mieć dostęp do tych samych danych podstawowych, np. Konta, Produkty. Oznaczałoby to, że dla danego podmiotu danych podstawowych istniałaby aplikacja właściciela (np. W przypadku rachunków może to być aplikacja Sprzedaż) oraz zainteresowana strona (np. Aplikacja do sprzedaży biletów musiałaby mieć informacje o rachunkach).
Można to osiągnąć na wiele sposobów: - Replikacja danych od głównego do zainteresowanego - Synchroniczny odczyt od zainteresowanego do drugiego (zależność synchronizacji nie jest zalecana w paradygmacie architektury mikro-usług) - Własne scentralizowane repozytorium
Również w obrębie kont może istnieć podstawowa część, która jest wspólna zarówno dla sprzedaży, jak i sprzedaży biletów (np. Nazwa konta, adres itp.). Jednak niektóre aspekty konta mogą dotyczyć WYŁĄCZNIE sprzedaży, a inne TYLKO sprzedaży biletów.
Wszelkie przemyślenia / najlepsze praktyki / opinie dotyczące którejkolwiek z wyżej wymienionych opcji?