Contents
スポンサーリンク
概要
「ソフトウェアアーキテクチャ・ハードパーツ 〜分散アーキテクチャのためのトレードオフ分析〜」を読んだので感想を書こうと思います。
スポンサーリンク
書籍概要
どんな本?
ソフトウェアアーキテクチャに絶対的な正解は存在しません。むしろ、さまざまな妥協点の中から選択を強いる難題、すなわち「ハードパーツ」が多く存在します。そのため、ソフトウェアアーキテクトには常にトレードオフを見極め、状況に合った選択をすることが求められます。本書は、読者が自身のアーキテクチャ上の難題に対して効果的なトレードオフ分析を行い、より良い決定ができるようにするための書籍です。
本書では、サービスの粒度やデータの所有権、コードの再利用やワークフローの調整、可用性や信頼性の実現といった現代のソフトウェアアーキテクチャの難題と、それに対するさまざまなアプローチやパターンを紹介します。そして意思決定を難しくするトレードオフについて、モノリスを分解しマイクロサービスアーキテクチャに再構築する例を通して詳しく説明します。
『ソフトウェアアーキテクチャの基礎』の著者らによる現代的なトレードオフ分析とその実践を学べる本書は、現代のソフトウェアアーキテクチャに関わるソフトウェア開発者にとって必携の一冊です。
- Neal Ford、Mark Richards、Pramod Sadalage、Zhamak Dehghani 著、島田 浩二 訳
- 2022年10月 発行
- 472ページ
- 定価4,180円(税込)
スポンサーリンク
内容のまとめと感想
本書はオライリーから以前発売された、「ソフトウェアアーキテクチャの基礎 エンジニアリングに基づく体系的アプローチ」と同じ著者によるソフトウェアアーキテクチャに関して書かれた本です。
といっても、続編的な書籍というわけではなく、本書だけを読んでも問題ない独立したものとなっています。
「ソフトウェアアーキテクチャの基礎」に関しては下記にて感想を書いていますので、併せてご覧ください。
ハードパーツって?
本書のタイトルになっているハードパーツとは、ソフトウェアアーキテクチャにおいてハード(難しい、ハードウェアのように堅い)で変更が難しい部分という意味のようです。
このようなハードパーツに対して、モノリスのシステムから分散アーキテクチャを変更するために、どのように変更を行っていけば良いのかを示したのが本書になります。
トレードオフの話
本書で何度も出てくるキーワードとして、「トレードオフ」があります。
これはソフトウェアのアーキテクチャの決定に関して、各システムごとに様々なバックグラウンドがあるため、決まった答えは無く、トレードオフ(良い点と悪い点)を分析した上で、選択する必要があるという事が重要であるという事です。
(このワードと考え方は、「 ソフトウェアアーキテクチャの基礎 エンジニアリングに基づく体系的アプローチ」でも何度も話が出ていました。)
本書では、モノリスなソフトウェアを分散アーキテクチャに変更するために、
- 選択肢となる知識や構造
- それらを選択するために必要となる作業や分析方法、各トレードオフ
が示されています。ですので、それを実際に自分自身の状況に置き換えて選択するための知識取得やトレーニングができるのが本書になります。
物語形式でわかりやすい
架空の問題を抱えたモノリシックなソフトウェアを、分散アーキテクチャ(マイクロサービス)にするために順を追って説明していく構造になっています。
実際にソフトウェアアーキテクトにあたる人物や各ステークホルダーが登場し、会話をしながらアーキテクチャを変更していくといった形で、面白いです。
実際にADR(アーキテクチャを決定する上での話し合いの背景や根拠などを示した議事的なもの)が書いてあったりもして、参考になります。
物語 => 各種説明 => 物語 => ... という構造で、説明で使用された構造やトレードオフに関して、物語で実際に使われるので理解しやすかったです。
分散アーキテクチャに必要となる知識が幅広く語られている
分散アーキテクチャに構造変更する上で検討すべき構造が書かれていて、既存の構造を変更するのはもちろんのこと、新規でこういった構造を実現する上での知識を得る事ができます。
特定のインフラ、フレームワーク、プログラム言語に依存したものではない汎用的な考え方を学ぶ事ができますね。
一例ですが、下記のようなテーマに関して複数の考え方とそのトレードオフが書かれています。
- モノリスな構造をどうやって、個々のサービスに分割する?
- サービスの粒度は?
- 共有機能はどうする?(共通機能のサービスに分ける?それとも共有ライブラリ?)
- 各サービスにおけるデータベースの構造は?(共有?それとも個別に持つ?
- トランザクションはどうすればいい?
まとめ
モノリスなシステムをマイクロサービスのような分散アーキテクチャに変更するために必要となる、各種分析やトレードオフに関してまとめられた書籍です。
前作の「ソフトウェアアーキテクチャの基礎」が、アーキテクチャの選定や設計に必要となる知識を体系的に書かれていたのに対して、本書はより特定の状況にフォーカスした書籍になっています。
その分抽象度は少なくなっていて、物語形式で進むのも併せて、非常に読みやすい書籍になっていると思います。(前作は正直結構読むのがキツかった。)
昨今耳にする事が多くなった、マイクロサービスのような分散アーキテクチャに関してどういった構造やパターンがあるのか興味がある、という人は読んでみて損は無いと思います。
より汎用的なアーキテクチャ自体の設計などに興味がある人は「 ソフトウェアアーキテクチャの基礎」の方をオススメします。
(どちらも背景に説明されている考え方は一緒なので、両方併せて読むといいかも。)