分散システムのパターン

Unmesh Joshiによる

2023

2019年11月の初日、私の受信トレイにはインドの当社シニア開発者からのメッセージがありました。彼は、開発者がKafka、Cassandra、Zookeeperなどの最新のツールを効果的に使用するために必要となる、分散システムの基本概念に苦戦している様子を観察していました。彼は分散システムの重要な概念の背後にある理論を教えようとしていましたが、同僚たちがその結果を十分に理解できていないことに気づきました。それで、彼はよりコードを中心としたアプローチを試しました。彼は、こうした中核的なオープンソースシステムを駆動するコードを調べ、理論的な概念を強調して説明するように設計された、簡略化した実装を作成しました。これはより効果があり、彼のメールはそのトレーニングをどのように進めていくかということについてでした。

私たちは、パターンシリーズの開発が良い方向性であると判断し、4年間の旅へと出発しました。ソフトウェア開発のほとんどの側面よりも、分散システム設計には、形式手法などのツールによって提供される数学的解析が必要になることがよくあります。しかし、その理論がどのように機能するかを理解するのは難しいものですが、論文に記載されている内容と実践的なシステムで実装できる内容の間には依然としてかなりのギャップがあります。Unmeshは、日々オンラインシステムを実行するシステムのコードを研究し(多くの場合、新しい言語とフレームワークを学ぶ必要があります)、このコードに埋め込まれた一般的なソリューションをより一般的なパターンに変換することができました。これらのパターンの骨組みの実装を構築することによって、彼はしばしば微妙な動作とトレードオフを正しく理解しました。

彼が学んだことを伝えるために、彼はパターンを作成し、それらを私や他の興味のあるThoughtworkersに送り、レビューを反映し、より幅広い消費のために開発した草案をここで公開しました。パターンコレクションが形になると、彼はピアソンに連絡してこれを作本に変えました。私はそれを自分の署名シリーズに追加できたことを誇りに思っています。

最終的な本には 30個のパターン が含まれており、それぞれが説明的なテキストで図解されており、複雑な相互作用を説明するためのシーケンス図が多く含まれており、重要な詳細を明確にするコードサンプルがすべて含まれています。これらのパターンを理解することで、分散システムの動作を理解するための強固な基盤が得られます。特に、これらのシステムが直面する最も難しい問題、つまり、複数のライターが同時に更新しようとするときにパラドックスに陥ることなく、可用性と回復性を向上させるためにデータを分散する方法がわかります。

参考資料

パターンのカタログ

オンライン電子書籍の関連する章へのディープリンクとともに、本にある全てのパターンのリストです。