У меня есть два проекта: один из них является многопроцессорным, а второй - однопроцессорным. Оба они написаны на Node JS.
Кроме того, я использую три системы:
Loggly, Mixpanel, система электронной почты.
Есть некоторые события, которые имеют отношение к обоим проектам - например, транзакция некоторых продуктов.
Как только происходит событие транзакции - мне нужно сделать три основные вещи:
1) Обновите Loggly о свойствах транзакции.
2) Обновить Mixpanel о свойствах транзакции.
3) Обновление системы электронной почты (например - для отправки подтверждения по электронной почте о транзакции).
Данные отправляются в формате JSON.
Кроме того, некоторые события относятся ко всем трем системам (Loggly, Mixpanel, eMail system), а некоторые относятся только к части из них.
Каждая система заинтересована в отдельной части данных. Например, некоторые системы нуждаются во всех данных, тогда как другие используют только небольшую часть данных события.
Вопрос:
В настоящее время в моем проекте - когда происходит событие - я отправляю данные двух проектов напрямую в соответствующие системы. Это означает, что мой код дублируется в 2 проектах (и это плохо).
Например:
// call when transaction event happens
function foo(transactionData) {
Loggly.send('Transaction', transactionData);
Mixpanel.send('Transaction', transactionData);
}
Я ищу новую архитектуру, которая может решить проблему дублирования кода.
Какова лучшая архитектура для этого - объединение паттернов Pub-Sub и инструментов AWS?
Как правильно это сделать?
Спасибо за вашу помощь.