2016-11-07 4 views
0

Je viens de développer une WebApp Ressource Humaine à Laravel.Architecture et bases de données multi-applications

Donc, dans cette application, j'ai ma base de données utilisateur.

Maintenant, j'ai 2 anciennes applications, que je suis sur le point de réécrire/Migrer vers Laravel.

Le premier est de gérer les paiements des employés.

La deuxième application est pour surveiller ma force de vente sur le terrain. Donc, fondamentalement, je vais essentiellement les réécrire.

Ma question concerne l'architecture. Je vais développer ces deux applications séparant les API dans Lumen/Laravel pour chaque application, individuellement, puis écrire des clients dans Angular2. J'utiliserai OAuth2.0 pour définir les autorisations et les étendues entre les applications.

Maintenant, mon indécision réside sur la partie Base de données.

Dois-je séparer la base de données, inclure la base de données dans le même schéma ou comment traiter mes bases de données?

Aujourd'hui, j'ai 1 DB par application, mais aussi, j'ai la redondance dans les utilisateurs: Chaque application fonctionne avec les mêmes utilisateurs, et donc dupliquer cette information.

À l'heure actuelle, lorsque l'utilisateur est créé dans App1, il appelle les API pour le créer dans app2 et app3. Ce n'est pas si gentil, à mon humble avis.

Donc, je pense que je voudrais avoir une seule base de données de l'utilisateur, mais je n'ai pas vraiment l'expérience de ce:

  • dois-je extraire l'information de l'utilisateur dans une base de données centrale pour tous les utilisateurs, devrait
  • dois-je garder les informations de l'utilisateur dupliquées entre ma base de données?
  • si je le garde en 3 DB differents, comment dois-je faire JOIN, les transactions, les clés étrangères, etc.

Je sais qu'il n'y a pas 1 réponse, cela dépend de ce que je veux, mais c'est aussi mon problème, je ne sais pas quelle question devrais-je demander pour prendre ma décision ???

Il est important de mentionner que je n'ai pas beaucoup de trafic, max 1000 utilisateurs, et ils appartiennent tous à mon entreprise, il n'augmentera pas beaucoup. Donc, vraiment, faire une application scallable ne devrait pas être ma priorité en ce moment.

Tout conseil sera apprécié !!!

Répondre

0

Puisque vous avez partagé des bases de données entre vos applications, la pratique courante est de les avoir dans la même application Laravel/Lumen. Pour ce faire, vous pouvez séparer les applications des groupes de routes, hiérarchiser les hiérarchies des contrôleurs de chaque application et déclarer à l'intérieur de chaque modèle la connexion que vous utiliserez pour ce modèle. De cette façon, vous pouvez utiliser les mêmes connexions DB pour toutes vos applications et partager les mêmes données sans avoir à les dupliquer.