背景
過去の案件で、先輩エンジニアと「ああでもないこうでもない」と議論しながら、
指標ツリー(その時はメジャメントセットと呼んでいた)を作成していた時があった。
その際に、環境が変わっても普遍的に分析し続ける指標セットが存在し、
「もしやここにコンポーネントの凝集原則を用いたら再利用性により、アジリティを出せるのでは?」という問いを持ったことがキッカケです。
データメッシュは単なる技術的な流行ではなく、ビジネスの変化に俊敏に対応するための戦略的な資産である
そのために、既存の設計思想をどう生かせばいいのか? をここに残します。
1. 戦略変更時におけるデータプロダクトの再利用
これは、データメッシュがもたらす最大のメリットの一つである俊敏性を体現しています。
どういうことかというと、以下のような指標ツリーがあったとします。
上の層ほど、経営層や事業戦略を考える層が関心があり、抽象度の高い指標になります。
よくDMMの石垣さんは、生産性には抽象度があると仰ってますが、そのことです。
KPIツリーはこれをWhyとして定義します。
これなしにKPIツリーは考えられません。
だって、ボトルネックは移動し続けるから、KGIとして定める指標は、
1か月前までは【顧客満足度】だったけれども、今月は【ユーザー解約率】
になる可能性が大です。
なぜ再利用できるのか?
適切に設計されたデータプロダクトは、「顧客」「売上」「商品」といった、
ビジネスの根幹となる概念(ドメイン)ごとに、凝集度高く作られています。
企業の事業戦略が変化しても、これらのビジネスの根幹となる概念そのものが完全に消えることは稀です。
経営は、ヒト・モノ・金で成立するのだから。
もしも、仮に下図のように新しい事業戦略が立てられ、その指標を具体化した結果、
過去の指標セットと一致したとしましょう。
この場合、図の【サービス指標(事業戦術指標)】から下の指標ツリーは、そのまま過去の指標を再利用できることになります。
つまり、各マイクロサービスの所有するデータプロダクトは、定義を変えることなく、
そのまま再利用できるってことです。
しかもすでにある程度データプロダクトが成熟した品質のため、新しくデータ基盤構築することないし、お金の面でも浮きます。
具体例
①旧戦略
KPIツリーが「新規顧客獲得数」を重視していた。そのために顧客データプロダクトと日次売上データプロダクトが使われていた。
②新戦略
経営方針が変わり、KPIツリーが「既存顧客の利益率」を重視するようになった。
③再利用
新しい「利益率」を計算するためには、当然「どの顧客が(=顧客データプロダクト)」「何をどれだけ買ったか(=日次売上データプロダクト)」という情報が必要です。
④結論
なので、既存のデータプロダクトはそのまま再利用し、
新たに必要となる商品原価データプロダクトなどを追加で開発・組み合わせるだけで、
新しい戦略に対応した分析が可能になります。
モノリシックなデータウェアハウスでは、データが密結合になっているため、
一部のデータプロダクトを再利用したいってときでも、このような再利用は非常に困難です。
2. データプロダクトと「再利用原則」
再利用・リリース等価の原則 (REP)
「再利用の単位は、リリースの単位と等価になる」という原則です。
クリーンアーキテクチャ本にも出てきていました。
つまり、あるコンポーネントが再利用可能であるためには、それが独立してリリース(バージョン管理)できる、凝集度の高い単位でなければならない、ということです。
データメッシュでは、データをプロダクトとして考える以上、
絶対に、コンポーネントの凝集原則が使えるはずだ
と仮説を立てていたんです。
データプロダクトとの一致
データメッシュにおける「データプロダクト」は、
明確なオーナー(ドメインチーム)が存在する
安定したインターフェース(スキーマやAPI)が提供される
独立してバージョン管理・リリースされる
という特徴を持っている。
これはまさしくREPが定義する「再利用可能なコンポーネント」の姿そのものです。
まとめ
結論として、データメッシュは、
再利用可能なデータプロダクトという「部品」 を組織内に揃えておくことで、
ビジネス戦略の変化という要求に対して、ゼロから作り直すのではなく、既存の部品を組み合わせて迅速に対応することを可能にするのです。
データメッシュは悪手
と鼻から決めつけるのではなく、指標ツリーを一度描いてみて、
「なんだか毎回、戦略が変わってもこの指標セット出て来るよな~」ってところは、
まさに【再利用検討箇所】 なので、是非とも分割してみることを検討してください。
そして、是非ともクリーンアーキテクチャにある、設計原則をデータ基盤にも適材適所で使ってみてください。