このすみノート

Webエンジニアが技術や趣味を書くブログです。

ソフトウェアアーキテクチャの基礎を読み始めた

たまたま昨日本屋で見かけたので、オライリーのソフトウェアアーキテクチャの基礎を買いました。 まだ1章しか読み終わっていませんが、今のところおもしろいです。

読書メモを書きながら読んでいるのですが、1章ではざっと次のようにメモしました。

イントロダクション

  • ソフトウェアアーキテクチャ自体の定義が業界でよく定まっていない。
  • ソフトウェアアーキテクトの役割は、広範囲の能力を活用するアーキテクチャの台頭によって、拡大していっている。
  • 「ソフトウェアアーキテクチャは、一度実装すると変更が難しい」といった考えは時代遅れ

ソフトウェアアーキテクチャ

  1. システムの構造:アーキテクチャスタイルの種類
  2. アーキテクチャの特性:可用性、信頼性、スケーラビリティ、デプロイ容易性 ...
  3. アーキテクチャ決定:システムをどのように構築すべきかのルールを定める
  4. 設計指針:設計指針として、望ましいアプローチに関するガイドを提供する

ソフトウェアアーキテクトの主な役割

  1. アーキテクチャ決定を下す
    1. 重要なのは、技術的な選択を指定するのではなく、ガイドすること
  2. アーキテクチャを継続的に分析する
    1. アーキテクチャや現在の技術環境を継続的に分析し、その上で改善案を提案する
  3. 最新のトレンドを把握し続ける
    1. アーキテクトが下す決定は、長い間影響を与え、変更が難しいものであることが多い。主要な業界の動向に沿うことは、アーキテクトが先を見据えた適切な判断を下すのに役に立つ。
  4. 決定の順守を徹底する
  5. 多様なものに触れ、経験している
    1. 今日ほとんどの環境は異種混合のものとなっている
  6. 事業ドメインの知識を持っている
    1. 知識がなければ、アーキテクトはステークホルダーやビジネスユーザーとうまくコミュニケーションがとれない
  7. 対人スキルを持っている
    1. アーキテクトは、アーキテクチャの実装を通じて開発チームをリードすることが期待されている
  8. 政治を理解し、かじ取りする
    1. コストや作業量の増加といった面から、アーキテクトが下すほとんどの決定は反発される。
    2. アーキテクトが行う決定は、広範で重要な決定とみなされるため、正当性を示すために戦わなくてはならない。

ソフトウェアアーキテクチャの法則

  • 第一法則:ソフトウェアアーキテクチャはトレードオフがすべてだ。
  • 第二法則:「どうやって」よりも「なぜ」の方がずっと重要だ。

おわりに

本の内容としては、現代におけるソフトウェアアーキテクトの基礎知識を再定義する意図があるようです。

ソフトウェアアーキテクチャは過去の名著がいくつも思い浮かぶ分野ですが、変化の激しい現在ではアーキテクチャの考え方もどんどん変わっていきますので、良い機会なのでキャッチアップしていきたいです。