Ich entwerfe eine Anwendung, die auf der Microservices-Architektur basiert.
In dieser Anwendung benötige ich Auth Microservice,
Außerdem muss ich einige zusätzliche Benutzerinformationen speichern, wie z. B. mehrere Adressen, Avatar-Bilder usw.
Dies führt zu der Idee, zwei Microservices zu haben - einen für Auth und einen für User, in denen zusätzliche Benutzerinformationen gespeichert werden können.
Bisher habe ich folgende Ideen:
Erlauben Sie dem Authentifizierungsdienst auch, ein Ressourcenserver zu sein, der Benutzerinformationen enthält, einschließlich zusätzlicher Adressen, z. B. eines Avatars usw. Dies ist eine praktische Lösung, da alles, was mit dem Benutzer zu tun hat, an einem Ort gespeichert werden kann und die Komplexität für Vorgänge wie die Registrierung neuer Benutzer verringert wird Benutzer, Löschen des Benutzers. Diese Lösung scheint jedoch dem Konzept von Microservices zu widersprechen, aber für mich ist diese Lösung die attraktivste
Mit zwei verschiedenen Microservices - Auth und User. Auth ist nur für den Umgang mit Token verantwortlich und speichert keine Daten in Bezug auf den Benutzer. Wenn also eine Anforderung für ein Token empfangen wird, ruft der Auth-Dienst den Benutzer an, um Benutzerdaten zu empfangen und eine Entscheidung zu treffen
Mit zwei verschiedenen Microservices - Auth und User. Auth ist für den Umgang mit Token verantwortlich und speichert auch einen Teil der Benutzerinformationen, die sich auf die Authentifizierung beziehen (möglicherweise Kennwort, Rollen). Der Benutzerdienst enthält alle anderen Informationen wie zusätzliche Adressen, Avatare usw. Dieser Ansatz erscheint mir zu komplex, da er das Löschen eines Benutzers / das Erstellen neuer Benutzeroperationen erfordert
Jetzt muss ich eine dieser Lösungen auswählen, aber ich bin verloren und nicht sicher, welche davon die richtige ist.
Ich werde mich über jeden diesbezüglichen Rat freuen.
Vielen Dank
quelle
Antworten:
3 ist die richtige Antwort.
Ihr Auth-Server authentifiziert Benutzer. Ihr User-Server heißt möglicherweise besser "UserProfiles".
Sie werden feststellen, dass viele Ihrer Benutzer Personen mit Profilen sind, aber Sie haben auch Dienstbenutzer für andere APIs oder möglicherweise einfache API-Schlüssel, die ebenfalls den Authentifizierungsserver zur Authentifizierung verwenden, aber kein entsprechendes Profil haben.
Darüber hinaus werden Sie wahrscheinlich feststellen, dass es viele sofort einsatzbereite Auth-Server und Frameworks gibt, die Sie verwenden können, aber Ihr UserProfile wird an Ihre Bedürfnisse angepasst. Es ist oft einfacher,
userid
einem benutzerdefinierten Profil ein hinzuzufügen, als ein benutzerdefiniertes Profil in eine vorgefertigte Authentifizierungsdatenbank zu integrierenquelle