1

I'm trying to create project siteWeb and mobile app with clean Architecture and Microservices.

create identity service with separate database A and make another api service with other database B. for example i have table Competence from DB(B) has relationship many to many with Table AspNetUser from DB(A).

how to link between him?

Would the save two competence for user be required to store data from the User database (user_id, competence_Id) without relationship?

its a good idea to create table profile in DB(B) has column Id

Profile
-Id
-FullName
-Email

and each inscription user be required to save user_id to Profile ("user_id","john doe","[email protected]") after that i link profile with others table in DB(B)?

or i can to Make profile as

 Profile
 -Id
 -FullName
 -Email
 CONSTRAINT [FK_Profile_ToAspNetUsers] FOREIGN KEY ([Id]) REFERENCES [dbo].[AspNetUsers]([Id])

Do we need that?

asked Feb 13, 2020 at 21:39

2 Answers 2

1

The user information can travel in a token, see https://jwt.io and https://auth0.com/docs/protocols/oauth2 for more information

answered Feb 13, 2020 at 23:16
1

Depends on how the information is intended. As Martin pointed out, you can provide some identity information as tokens (sid (subject id, users unique id usually), email, name, birthday).

If you have information completely unrelated to identity of the user (like authorization - identity is just about authentication), you keep separate databases. If its more or less same information in both servers, you project it to the consuming one.

When you have such kind of shared information that needs to be synchronized among multiple microservices, you use pub/sub or message bus infrastructure, i.e. everytime a user changes data in ServiceA, a message is sent to the message bus and all consumers (such as ServiceB, ServiceC) read that and update their tables.

This assumes ServiceB and ServiceC don't alter this data and just need it for reading. The single source of truth remains your ServiceA which is the only one allowed to modify this data.

This can be used to sync stuff like persons names or emails in other microservices (i.e. to be able to display the creator of an data row when you display the list such as "last modified by John Doe") and keep them strictly separated.

answered Feb 14, 2020 at 10:26

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.