У меня есть два веб-приложения, каждое со своим собственным микросервисом бэкэнда, и у каждого микросервиса есть своя собственная база данных.Для любых изменений в таблицах базы данных микросервиса1, я хочу изменить (создать / обновить) записи в таблицах базы данных микросервиса 2. Как я могу это сделать?
Контекст:
Webapp 1: Пользовательский интерфейс для координаторов по персоналу для планирования интервью.
Микросервис 1: Бэкэнд-сервис, который планирует интервью.
БД для микросервиса 1: Хранит информацию, касающуюся интервью кандидата.
interviews: [ {
"interviewId": "1",
"candidateId": "abc",
"interviewers": [
{
"interviewer_name": "Thor",
"schedule": {
"startTime": "",
"endTime": "",
"roomNumber": 101
}
},
{
"interviewer_name": "Loki",
"schedule": {
"startTime": "",
"endTime": "",
"roomNumber": 101
}
}
]
} ]
Webapp 2: Интерфейс для интервьюеров для координации вопросов, задаваемых в интервью.
Микросервис 2: Внутренний сервис для интервьюеров для координации выбора вопросов.т. е. каждый интервьюер выбирает, какой вопрос он / она собирается задать кандидату во время интервью (это необходимо для того, чтобы два интервьюера не задавали один и тот же вопрос кандидату).
БД для микросервиса 2: Схемы
// QuestionBank: Таблица, содержащая вопросы, которые могут выбрать интервьюеры.
// Интервьюеры: Таблица, содержащая всех интервьюеров в фирме.
//InterviewToInterviewer: (много-много картографирования интервью с интервьюерами).В одном интервью может быть много интервьюеров, и каждый интервьюер может участвовать во многих интервью.
// InterviewToInterviewerToQuestion: (сопоставление интервью со многими собеседниками с вопросами).Для каждого интервью Интервьюер может выбрать много вопросов, и каждый из вопросов в банке вопросов может быть частью многих записей интервьюToInterviewer.
Текущий рабочий процесс:
Как только запланировано интервью из веб-приложения 1:
- Электронное письмо отправляется всем интервьюерам.В электронном письме содержится ссылка на веб-приложение 2, при щелчке по этой ссылке открывается веб-приложение 2, предоставляющее интервьюерам интерфейс для выбора вопросов, которые они планируют задать в интервью.
Требование:
Если вопросы не выбраны интервьюером, я хочу отправить им напоминания.Для этого я хочу, чтобы webapp2 знал, что интервью запланировано.
Я хочу, чтобы webapp2 знал о любых изменениях в составе (в данном интервью меняется интервьюер или интервью отменяется и т. Д.), Которые происходят.
Решения, которые я обдумал:
Как только интервью запланировано / изменено с webapp1, webapp1 вызовет webapp2 (webapp2 предоставляет API длячто) сообщить webapp2, что создано новое интервью или обновлено существующее интервью.
Для любой новой записи / обновления в таблице интервью в DB1 триггер БД запускается в DB2.Я не уверен, возможно ли это тоже.
Из двух приведенных выше подходов кто-то может мне помочь с плюсами и минусами одного выбора перед другим.Или есть другой альтернативный подход для достижения этой цели.
Лидеры здесь приветствуются.