2017-04-25 12 views
4

Ich arbeite an PAAS-Lösung als ein Produkt. Wir haben Geschäftsprozesse in mehrere Microservices aufgeteilt. Ein Kernteil der Prozesse ist eng mit fast allen Microservices verbunden.Benutzer als Microservice

Ist es eine gute Vorgehensweise, einen separaten Dienst zum Verwalten von Daten wie Benutzerverwaltung zu erstellen? Nach der Implementierung hat nur dieser Dienst Zugriff auf Benutzer und andere zugehörige DB-Tabellen. Alle anderen Dienste müssen diesen neuen Benutzer-Microservice für benutzerbezogene Aufgaben aufrufen.

Dieser Ansatz wird uns zwingen, DB-Schema durch Hinzufügen von Denormalisierung neu zu gestalten. Wir würden keine zugrunde liegenden Tabellen erhalten, die unter mehreren Microservices bereitgestellt werden. Wenn mehrere Dienste Daten benötigen, werden diese über einen Microservice geteilt.

+0

Scheint vernünftig, aber Sie müssen sicherstellen, dass dieser Engpass Ihr System nicht verlangsamt. Wie üblich, Profil und bieten Redundanz nach Bedarf. Das Argument, ob Microservices ein Weg sind, würde den Rahmen dieser Site sprengen, denke ich. – hauron

Antwort

4

würde ich ja sagen.

Schließlich ist es für die Benutzer-Credentials typisch ist, Autorisierung Authentifizierung zu einer logischen Einheit zentralisiert werden (mind Sie, dass diese „logische Einheit“ könnte ein einzelner Server oder eine verteilte Lösung mit einer einheitlichen Schnittstelle sein.)

Dies umfasst normalerweise die Benutzerprofilverwaltung. Beachten Sie, dass Sie manchmal auch eine separate Komponente oder Einheit dafür haben. Und das kann perfekt ein separater Microservice sein.

Warum? Die Verwaltung eines Benutzerprofils unterscheidet sich von allen anderen Diensten, einschließlich Authentifizierung und Autorisierung.

Wenn dies nun ein einzelner physischer Bereitstellungspunkt ist, wäre das ein Flaschenhals. Wenn dies jedoch ein verteilter Dienst ist (d. H. Mehrere Instanzen desselben Mikrodienstes, der ein Thema für eine andere Diskussion ist), dann wird dieses Problem gemildert.

Selbst in monolithischen Anwendungen (wenn sie gut geschrieben sind), sehen Sie normalerweise die Benutzerauthentifizierung und -verwaltung als ihre eigenen isolierten Komponenten, die vom Rest getrennt sind.

Hoffe, das hilft.