J'ai deux webapps, chacune avec son propre microservice backend et chaque microservice a sa propre base de données. Pour tout changement dans les tables de la base de données du microservice 1, je veux changer (créer/mettre à jour) les entrées dans les tables de la base de données du microservice 2. Comment puis-je faire cela ?
Le contexte :
Webapp 1 : UI pour les coordinateurs des ressources humaines afin de planifier un entretien.
Microservice 1 : Service backend qui programme un entretien.
DB pour microservice 1 : Stocke les informations relatives à l'entretien d'un candidat.
interviews: [ {
"interviewId": "1",
"candidateId": "abc",
"interviewers": [
{
"interviewer_name": "Thor",
"schedule": {
"startTime": "",
"endTime": "",
"roomNumber": 101
}
},
{
"interviewer_name": "Loki",
"schedule": {
"startTime": "",
"endTime": "",
"roomNumber": 101
}
}
]
} ]
Webapp 2 : Interface utilisateur permettant aux enquêteurs de se coordonner sur les questions à poser lors d'un entretien.
Microservice 2 : Service dorsal permettant aux intervieweurs de coordonner la sélection des questions, c'est-à-dire que chaque intervieweur sélectionne la question qu'il/elle va poser à un candidat lors d'un entretien (ceci afin de s'assurer que deux intervieweurs ne posent pas la même question à un candidat).
DB pour microservice 2 : Schémas
// QuestionBank : Tableau contenant des questions, que les enquêteurs peuvent sélectionner.
// Intervieweurs : Tableau contenant tous les intervieweurs de l'entreprise.
// InterviewToInterviewer : (mise en correspondance de plusieurs entretiens avec des enquêteurs). Un entretien peut avoir plusieurs intervieweurs, et chaque intervieweur peut participer à plusieurs entretiens.
// InterviewToInterviewerToQuestion : (mappage multiple d'interviewToInterviewers avec des questions). Pour chaque entretien, un interviewer peut sélectionner plusieurs questions et chacune des questions d'une banque de questions peut faire partie de plusieurs entrées interviewToInterviewer.
Flux de travail actuel :
Dès que l'entretien est programmé à partir de webapp1 :
- Un courriel est envoyé à tous les enquêteurs. L'email contient un lien vers une webapp 2. En cliquant sur ce lien, on ouvre la webapp 2 qui fournit une interface permettant aux enquêteurs de sélectionner les questions qu'ils prévoient de poser lors d'un entretien.
Exigence :
-
Si les questions ne sont pas sélectionnées par l'enquêteur, je veux lui envoyer des rappels. Pour cela, je veux que la webapp2 sache qu'un entretien est programmé.
-
Je veux que webapp2 soit informé de tout changement de file d'attente (dans un entretien donné, l'intervieweur est changé ou un entretien est annulé etc) qui se produit.
Des solutions auxquelles j'ai pensé :
-
Dès que l'entretien est programmé/modifié depuis la webapp1, la webapp1 appelle la webapp2 (la webapp2 expose une API pour cela) pour faire savoir à la webapp2 qu'un nouvel entretien est créé ou qu'un entretien existant est mis à jour.
-
Pour toute nouvelle entrée/mise à jour de la table des entretiens dans DB1, un déclencheur DB est lancé vers DB2. Je ne suis pas sûr que cela soit également possible.
Parmi les deux approches ci-dessus, quelqu'un peut-il m'aider à déterminer les avantages et les inconvénients de l'une par rapport à l'autre ? Ou bien il existe une autre approche alternative pour y parvenir.
Les pistes sont appréciées.