設計 モデリングLT会 vol.3
通知マイクロサービスはアリ?ナシ?設計 モデリングLT会 - Vol.32022.1.20
View Slide
Who?@mtoyoshiSheepMedical株式会社CTOSheepMedical:・創業5年目のスタートアップ・アジア、インド、U.S.など9カ国進出・デロイトトーマツ主催テクノロジー企業成長率ランキング2021 第3位設計を学んだり議論したりするのが好きですときどき戒めのためにFizzBuzzEnterpriseEditionを眺めています
通知マイクロサービスはアリ?ナシ?
通知マイクロサービスはアリ?ナシ?きっかけはこちらを読んでいて ↓↓
通知マイクロサービスはアリ?ナシ?自分の経験上、通知マイクロサービスはあまりうまくいかなかった自分はナシ派みなさんはいかがでしょう??「通知」サービス切り出していますか?
通知マイクロサービスはアリ?ナシ?!注意!この本は通知マイクロサービスを作るべきといった主張ではない
通知マイクロサービスはアリ?ナシ?「通知」以外のマイクロサービスは業務的な意味合いで切り分けられている(ように見える)通知マイクロサービスは業務というよりは機能の共通性で括りだされているように・・・見える
通知マイクロサービスはアリ?ナシ?マイクロサービスアーキテクチャを採用する場合、共有ライブラリ(やDRY原則)はアンチパターンといわれる詳しくはこちら →「通知」は ”共有マイクロサービス”であり同様に避けるべきでは?
通知マイクロサービスはアリ?ナシ?通知といっても、様々:・メール通知・スマホAppへプッシュ通知・Slackへ通知・Teamsへ通知・Chatworkへ通知など。また、当初要件はメール通知だけであったとしても、増えがち。
通知マイクロサービスはアリ?ナシ?依頼する側の影響を抑えるべく抽象層が欲しくなる。依頼する側は、「要はこんなメッセージを通知したいんだ」とだけ伝え、通知サービス内で「メール通知」したり、「Slackに通知」したり。Open-Closedの原則。
通知マイクロサービスはアリ?ナシ?例えば、発送マイクロサービスが荷物が発送されました。1月21日 10:00に到着予定です。とユーザーに通知したいとします。加えて、日時を太字で強調したいという要件が来たとします。どうする?
通知マイクロサービスはアリ?ナシ?改めて通知マイクロサービスについて考えてみる。位置づけ的にも、通知サービスが発送サービス固有のことを知っていたり依存したりすることはないはず。基本的には依頼されたことを粛々とやることになるだろう。(やはり共有ライブラリっぽい)
通知マイクロサービスはアリ?ナシ?ということは、発送サービスは・通知したいメッセージ内容・どこを太字にしたいかの指示を指示してもらう必要がある。
通知マイクロサービスはアリ?ナシ?※なお、メッセージ内容は通知マイクロサービスが持つ、という案も。ただ「マイクロサービス側が持つデータの値で文面変えたい」という要件が来たときに双方向依存が起きたりしがち。自分で判断して送りたいメッセージ文面を渡した方が良いと考える。
通知マイクロサービスはアリ?ナシ?最終的に太字にするには・HTMLメールならを使用・Slackなら*を使用しかし依頼側は抽象層に合ったレベル感で太字を指示する必要がある。メタ修飾子の必要性。
通知マイクロサービスはアリ?ナシ?・・・ただし、正直面倒くさい。その結果、発送サービスからの依頼文における日付箇所を太字にすることを、通知サービスが(指示がないのになぜか)知っているプログラムになりがち。
通知マイクロサービスはアリ?ナシ?いわゆる、Leaky Abstraction
通知マイクロサービスはアリ?ナシ?他にも、Aマイクロサービスは・「メール通知」・「スマホアプリプッシュ通知」Bマイクロサービスは・「メール通知」・「スマホアプリプッシュ通知」・「Slack通知」などサービス毎に通知先が変わるかもしれない。Leaky Abstraction!
通知マイクロサービスはアリ?ナシ?そういったことを考慮すると、各マイクロサービスが自分で通知するのが良いのではないか。機能共通型のマイクロサービスの独立性を担保することは難しい。(自分の設計力が足りていない可能性も)ナシ
通知マイクロサービスはアリ?ナシ?なお、「注文する」API(ユースケース)の処理内で様々の通知処理もしてしまうのはやりすぎでは。イベント駆動にすることで後続処理として分割できる。①OrderedEventをpublish②自身で①のイベントをsubscribe③各種通知処理が行われる ナシ
通知マイクロサービスはアリ?ナシ?なお、、、・土日は通知を受け取らない・メール通知は受け取らないといった通知の仕方自体の仕様が複雑だったりすると、通知マイクロサービスがほしくなったり・・・しそう(汗
ご清聴ありがとうございました