Avis de non-responsabilité: L'auteur de ce message n'a que des connaissances théoriques et pratiquement aucune connaissance pratique de l'architecture logicielle pour les applications Web.Architecture: une base de données utilisée par deux serveurs distincts
Disons que je veux construire une application web avec le contour de l'architecture suivante:
- Un frontend web typique, qui permet aux utilisateurs de créer/modifier/supprimer un compte et crée/mises à jour/supprime le compte enregistrements dans ...
- ... la base de données, qui stocke tous les comptes des utilisateurs;
- et un bot Jabber (un service distinct, peut-être sur une machine physique distincte) qui parle aux utilisateurs, mais qui doit rechercher et mettre à jour des informations sur les utilisateurs dans la même base de données (2).
Donc, essentiellement j'ai deux applications qui utilisent la même base de données. Je ne suis pas sûr que ce soit une bonne solution en raison de l'intégrité des données, des conditions de course et d'autres problèmes. Un cas d'utilisation typique pourrait être: User1 interagit avec le bot Jabber (3) et le bot doit rechercher et mettre à jour les données dans la base de données, et exactement au même moment, User2 crée un compte via (1), ce qui nécessite une certaine interaction avec la base de données (2). Comment éviter ce type d'architecture tout en gardant la fonctionnalité requise?
Ou comment puis-je concevoir l'architecture d'une manière qui élimine la nécessité d'interroger une base de données à partir de deux services distincts? (Malheureusement, le «business model» de cette application ne permet pas d'avoir la gestion des comptes (1) et la logique «Jabber bot» (2) dans un service Web).
P.S. L'exigence la plus importante du système en question est la haute disponibilité (peut-être que cela affecterait la réponse d'une manière ou d'une autre).