表題の通り、Webサービス内のイベント(例えば、ユーザのアクションなど)を、ユーザに通知(メールやブラウザpush)するシステムのDB設計や実装方針についての相談です。
具体的な例としては、カンバンボードなどのプロジェクト管理ツールをイメージして頂けますと幸いです。
例えば、以下のような機能イメージです。
- あるユーザ(依頼者)が、他のユーザ(担当者)にタスクをアサインした場合に、担当者ユーザにメールで通知が行く
- あるタスクにコメントがついた場合、そのタスクの担当者にメールが行く
などなど。あるオブジェクトリソースについて何らかの変更が加えられた場合、それに関連があるユーザにメール通知が行くといった感じです。
メール送信処理はイベントごとに即送信するのではなく、ある程度通知までタイムラグをもたせて複数イベントを集計して送信するようにしたいです(例えば、15分毎の定期スケジューリングなど)。
その際に、一つのオブジェクトリソースに対して複数のステータスの変更が加えられた場合、最終的なステートを通知できるような設計を考えています(例えば、タスクで言うと短時間の間に複数回ステータスが変更された場合、全てのステータス変更イベントを列挙するのではなく最終的なステータスを通知する。イベントソーシングのようなイメージ)。
上記の要件を踏まえた上で、DB設計・実装方針についてアドバイスを頂きたく思います。
ちなみにですが、当該サービスの運用は GCP を想定しています(ソリューションとなるマネージドサービスがあるかもしれないので念の為共有)。
何卒よろしくお願い致します。
追記:
イベントソーシングなどの手法も考えましたが、元々DDDでエンティティの管理に用いる手法だという認識で、自身の経験不足もありまして今回の要件に合うか判断がつかず...ご参考までに。
あなたの回答
tips
プレビュー