見出し画像

『ソフトウェアアーキテクトのための意思決定術』の感想

はじめに

以下の本を読了したので感想をまとめます。

著者のSrinath PereraさんはApacheのOSS開発者としてアーキテクトの経験が豊富な方だそうです。代表的なプロダクトとしてApache Axis2やWSO2 CEPなどが挙げられているので、分散システムや大規模データ処理に関して高い知見と経験を持ったアーキテクトと想定されます。

翻訳者の島田浩二さんは、アーキテクチャ関連の書籍を中心に多くの技術書を翻訳されている方ですね(世界的に有名なアーキテクト、Neal Fordさんの著書はもしかして全部島田さんの翻訳?)。

本の構成

目次構成は以下となっています。

第1章 ソフトウェアリーダーシップ入門
第2章 システム、設計、アーキテクチャを理解する
第3章 システムパフォーマンスを理解するためのモデル
第4章 ユーザーエクスペリエンス(UX)を理解する
第5章 マクロアーキテクチャ:はじめに
第6章 マクロアーキテクチャ:コーディネーション
第7章 マクロアーキテクチャ:状態の一貫性の保持
第8章 マクロアーキテクチャ:セキュリティへの対応
第9章 マクロアーキテクチャ:高可用性とスケーラビリティへの対応
第10章 マクロアーキテクチャ:マイクロサービスアーキテクチャでの考慮事項
第11章 サーバーアーキテクチャ
第12章 安定したシステムの構築
第13章 システムの構築と進化

目次より

第1章の後半に説明がされているとおり、全体としては4部構成となっています。構造をマインドマップ形式で図示したのが以下です。

この本の構造

第2章では、アーキテクトが不確実性に対処するためのツールとして5つの質問と7つの原則が説明されています。後の章では、これらのツールを用いた具体的な意思決定のポイントが述べられます。

第3章は著者自身が「他の章に比べてより詳細で専門的な内容となっている」と述べているように、著者の経験や専門性が色濃く反映された章です。第4章のUXと合わせてパート2はさらっと読んで先に進んでも問題ないかと思います。

パート3がメイン部分です。著者がマクロアーキテクチャと呼ぶのは、システム全体としてのアーキテクチャのことです。第6章〜第10章にかけては、マクロアーキテクチャに関わる個々のトピックを掘り下げていきます。技術的な判断を行う上で必要となる主要な知識を整理した上で、具体的な検討ポイントやアプローチの仕方が述べられます。

続いて第11章では個々のサービスに対してどのようにアーキテクチャ的な判断を行うか、第12章ではSRE的な観点での意思決定について取り上げられています。

感想

この本のタイトル『ソフトウェアアーキテクトのための意思決定術』を見た時、どちらかというとソフトスキル面に重きを置いた本を想像しました。実際には、まったく違っていました(原題の"Software Architecture and Decision-Making"の方がしっくりきます)。

各トピックについて技術的観点でしっかり押さえるべきところを押さえた上で、トレードオフやリスクの評価、そして最終的な意思決定をどう進めたらよいかのガイドラインを提供してくれる本です。

この本に一貫しているのは、ビジネス視点、ユーザー視点、そしてそれらを踏まえたアーキテクチャの合目的性であると感じました。たとえば、MSA(MicroService Architecture)については以下のように書かれています。

MSAについては懐疑的であることが重要だ。基本原則から考え、推奨事項が実際にチームに役立つことを確認しよう。AmazonやNetflixでうまくいったことが、必ずしもあなたにとってうまくいくとは限らない。
MSAに関する2つの一般的な誤りは、小規模なチームでMSAを採用すること、MSAを考えなしに採用することだ。これらの誤りは複雑なアーキテクチャへとつながる。これらの誤りを避ける最良の方法は、目的を忘れないことだ。

第10章より

つまり、アーキテクチャの選定は目的指向、戦略指向であるべきだということです。

そういえば先日Forkwellさんのイベントにて、アーキテクチャで重要なのは合目的性であるという話をしました。一緒に登壇したログラスの鈴木さんと行ったQ&Aコーナーでも、ビジネスサイドとの協調の重要性やユーザーヒアリングおよび観察の効果についての話題が出ました。

誰に薦めるか?

中級以上のアーキテクトに是非読んでほしい一冊だと思います。初学者の場合は、拙書『アーキテクトの教科書』でまず全体感を掴んだ上でこの本に進むとよいかもしれません。実践の場において具体的にどのようにアーキテクチャ選定を行うかを学ぶことができる本だと思いました。


いいなと思ったら応援しよう!

yonekubo
もし記事の内容が何かの参考になりましたら、チップで応援頂けますとありがたいです!