Good practices to share common data across multiple databases

Example scenario
  • This website is used for SSO
  • It has a user dashboard with user resources details, billing details for the services user uses for each of his resources, etc.
  • The user can subscribe his resources to different services hosted on different subdomains as mentioned below
  • Each subdomain provides a unique service
  • Each subdomain has a backend api and frontend website in VueJS. `

Single Database Approach:

Followings are the reasons why I do not want to consider this.

  • The number of subdomains will reach 10-12 eventually. Each will have some data heavy tables, cron jobs, analytics, system logs etc.
  • I do not want a single employee to be able to see the entire database. There will be dedicated team of developers for each app.

Questions that I have with multiple database approach

  1. How do I share the user details from parent domain to subdomains and its databases ? Should I add user_id and admin_id columns to subdomain databases without defining foreign key constraints? If yes, then what if I want to move one app database to another server ? In that case the foreign key constraint won't work right ?
  2. How do I access the common data in subdomains? Through main domain api or by making direct connection with the db ?
  3. Is it okay to replicate common data across apps ? (I don't think that's a good way to go about it)
  4. Are there any articles about multiple database design for sso project ?

Any help would be really appreciated. Thank you.