Mam stosunkowo nowy projekt, który wykorzystuje architekturę mikroserwisu. Czuję się dobrze pod względem wielkości i szczegółowości poszczególnych usług, z wyjątkiem lub naszej służby bezpieczeństwa.Architektura Microservice - domena między domenami
Mam trzy główne usługi, na przykład foo-service
, bar-service
i baz-service
. Te usługi nigdy nie muszą się komunikować, ale wszystkie trzy usługi regularnie rozmawiają przez żądania HTTP do security-service
. Chcę tego z różnych powodów przerwać. Największe jest to, że każde żądanie skierowane do moich indywidualnych usług powoduje zgłoszenie żądania do służby bezpieczeństwa, która może zmienić się w kilka dodatkowych przeskoków, gdy uwzględnisz równoważenie obciążenia, itd. Czytałem "Wzorce architektury oprogramowania" Marka Richardsa i zaleca w tych przypadkach udostępnianie baz danych i naruszanie DRY: skopiuj wymaganą funkcjonalność do każdej usługi. Mimo to używa tego przykładu w przypadku mniejszych klas "narzędziowych", które mogą nie mieć zastosowania w tym przypadku.
Usługa bezpieczeństwa nie jest tak duża, więc mogłabym zdecydowanie skopiować ją do każdej z pozostałych usług. Powiedział, że jest wystarczająco duży, że nie czuję się wspaniale kopiować i wklejać go - 314 "odpowiednich" linii kodu zgodnie z coveralls (java, więc jest o wiele więcej rzeczywistego kodu ;-). Mogłabym łatwo przekształcić go w moduł, który każda usługa przynosi, ale wtedy moje usługi mają wspólną zależność i to mnie ugryzło w przeszłości. Oczywiście kod bezpieczeństwa będzie się powiększał wraz z dodawaniem metod uwierzytelniania, ale nie odkrywamy koła, jeśli chodzi o auth, więc głównie integruje się z innymi bibliotekami i usługami uwierzytelniania. Oznacza to, że nie wyobrażam sobie, że ta konkretna baza kodu staje się ogromna.
Moje pytanie, czy powinienem skopiować i wkleić kod lub zbudować moduł, który przynosi każda usługa? Dzięki!
To wydaje się być krzyżową sprawą, z której narodził się Siteminder. Powinien to być filtr lub podstawowe uwierzytelnienie na usługach, a nie dodatkowe przeskoki w sieci. – duffymo
Filtrujemy zgłoszenia serwisowe. Po prostu na podstawowym teraz (jest to nowy), ale mają wymagania, aby użyć konkretnych oauth dostawców później. Najważniejszą rzeczą, jaką obecnie robi usługa ochrony, jest zarządzanie uprawnieniami za pośrednictwem grup zabezpieczeń. Tak naprawdę jest to funkcja, która moim zdaniem będzie musiała przejść do każdej usługi (aby wszyscy nie mieli dostępu do usługi zabezpieczeń w celu autoryzacji). – eric
co konkretnie robi usługa bezpieczeństwa, uwierzytelnianie lub autoryzacja? – miraculixx