システムのエントロピーをコントロールすることの大切さ

Satoshi Tajima
The Finatext Tech Blog
May 14, 2024

--

Photo by Aron Visuals on Unsplash

こんにちは、Finatextの @s_tajima です。

今回は、社内向けに書いた、「システムのエントロピーをコントロールすることの大切さ」という記事を、社外向けにも公開します。「Finatextは、こんな考えのもとにシステムのアーキテクチャを決めているのか」という参考にしていただけると嬉しいです!

この記事における「システムのエントロピー」とは、「システムの無秩序さ・乱雑さ」を表現しています。組織全体で技術スタックが統一されていれば「エントロピーは低い」、バラバラな技術が採用されていれば「エントロピーは高い」と言えます。

システムのエントロピーが低ければ低いほど、環境の把握は簡単で、改修のハードルが低く、自動化等もしやすいです。つまりアジリティが上げやすいのです。
逆に、エントロピーが高くなると、システムの理解に時間がかかり、自動化や改善のハードルや手間が高まり、アジリティは下がります。

巨大で歴史のある金融機関やシステム開発会社と比較されることの多い弊社にとって、アジリティは競争優位性の要です。
そんなアジリティを維持するためにも、基本的にはエントロピーが低い状態を保つことは非常に重要です。

熱力学においては、「エントロピーが自然に低くなることはない」というエントロピー増大の法則がありますが、システムのエントロピーも同じように増大の法則があります。組織の規模拡大、新しい機能やサービスの開発、技術トレンドの変化等は、システムのエントロピーを増大させる要因になります。
特に、成長企業においてはこの増大の勢いは必然的に大きいものになりがちです。

関連する話として、 KISSの原則 (Keep It Simple, Stupid) という有名な格言がありますが、Simple(≒ エントロピーが低い状態)を維持するのは言うほど簡単ではないのです。

システムのエントロピーの増大は避けられませんが、“増大のペース” はある程度コントロールすることができます。つまり、エントロピーの増大を “どれだけ遅らせられるか” というのが重要なテーマになります。

これは、自分が新しい機能を開発したり、新しい技術を採用するときに、

  • それがどの程度のエントロピー増大をもたらすか
  • エントロピーの増大を減らす方法がないか

といった要素を考えましょうということです。

一方で、”基本的には” と書いた通り、エントロピーは低ければ低いほど良いかというと、そうではない場合があります。

  • エントロピーの増加を避けるために新しい技術を採用できず、生産性の低い古のソフトウェアだけを使い続けることになる
  • エントロピーを低くすることにこだわりすぎるあまり、技術選定の自由度を下げ、エンジニアのモチベーションを下げる

というように、エントロピーを低く保てても、それ以外の弊害が発生することはあります。
よって、

  • エントロピー増大に見合うリターンがあるか
  • エントロピーを低く保てる代わりに他のリスクを生んでいないか

を考慮することも大切です。

新しい技術を採用しつつ、エントロピーを低く保つことも不可能ではありません。「新しいシステムを導入するときに、古いシステムを退役させること」はその1つの手法です。

例えば、

  • 「ライブラリAが使いにくいから、ライブラリBを使い始めました。新しいところからライブラリBを使います。」
  • 「ライブラリAが使いにくいので、すべてをライブラリBで置き換えます。」

という2つのパターンだと、後者を選択できれば 新しい技術を使いつつ、エントロピーへの影響も小さく留められます。

「新しいシステムを導入すること」ができる人は実は世の中にそれなりに多くいます。
一方で、「古いシステムの退役もさせられる人」というのは実はそれほど多くないと感じています。
うちで働くエンジニアは、後者も含めてやれる力をつけてほしいと思っています。

また、熱力学におけるエントロピー増大の法則は、「いかなる状況においてもエントロピーが下がらない」というものではなく、「自然には下がらない( ≒ 閉じた系であること)」という前提条件があります。同じように、システムのエントロピーも、「自然には下がらない」だけで、例えばサービスの機能開発を停止してリファクタリングに専念するなどの「特別な対応」によって下げることが可能なケースはあります。しかし、こういった「特別な対応」は事業の成長にブレーキをかけるものであることが多く、できる限り避けるべきものと考えています。

ここまでの話に反して、Finatextグループは根本的なところでは「エントロピーを爆発的に増大させる方針」を採用しています。しかし個人的には、今のところこの方針は「エントロピー増大に見合う大きなメリットがある」と考えています。

1つめの方針は、 “マルチドメイン・マルチプロダクトな会社であること” です。これは、1つの事業で1つのプロダクトを運営する会社と比べると、圧倒的に強くエントロピーを増大させる力が働きます。
そんなリスクを負ってでもこの意思決定をしているお陰で、現在も高い成長を維持できる事業ポートフォリオが作れているというメリットがあります。
システムのエントロピーが低いシングルプロダクトスタートアップが、一定の事業成長の後に踊り場を迎えて苦労している事例にも心当たりがあります。

2つめの方針は、”技術的な意思決定の権限をそれぞれのチームに大きく委譲していること” です。
これにより、当然ながら中央集権的な意思決定と比べてエントロピーが増大しやすくなりますが、
意思決定のボトルネックが生まれるのを防ぎ、エンジニアがプロダクトに対してJibungotoを感じやすくなるメリットがあると考えています。

そんな方針を持ちつつも、過剰なエントロピーの増大を防ぐために、
Platform Engineeringを採用したり、意思決定の合理性に関する説明責任を求めるといった構造を作っています。
この話に絡めると、 エントロピーの増大具合が大きければ大きいほどその説明責任は大きくなります。

まとめとしては、システムのエントロピーを意識し、増大のペースをうまくコントロールすることは、会社としての競争優位性を高めることになるので、Finatextではそんな視点を意識した意思決定を心がけているというお話でした。
もし興味をもっていただけた方がいたら、ぜひX (@s_tajima) などでご連絡ください!

--

--