🦜

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

に公開

↓の読書メモ
https://www.oreilly.co.jp//books/9784873119823/

1章 イントロダクション

アーキテクチャの構成要素

  • システムの構造
  • アーキテクチャ特性
  • アーキテクチャ決定
  • 設計指針

システムの構造

システムを実装するアーキテクチャスタイルの種類を指す

ex) マイクロサービス,レイヤード,マイクロカーネルなど

アーキテクチャ特性

システムの成功基準を定めるもの

システムの機能に関する知識を必要とせずに理解できるもの

ex) Availability, Reliability, Testability 等

アーキテクチャ決定

システムをどのように構築すべきかのルールを定めるもの

システムの制約を形作り,何がゆるされて何が許されないかに関する開発チームの指針になる

ex) アーキテクトはレイヤードアーキテクチャ上でビジネス層とサービス層のみがDBに直接アクセスできるというアーキテクチャ決定を行うことでプレゼンテーション層が直接DBを呼び出すことができる

設計指針

アーキテクチャ決定とは異なり,堅苦しいルールではなくガイドラインである

望ましいアプローチにたいする指針を提供するもの

ex) 非同期メッセージングを利用してパフォーマンスを向上させるべきである

アーキテクトへの期待

  • アーキテクチャ決定を下す
  • アーキテクチャを継続的に分析する
  • 最新のトレンドを把握し続ける
  • 決定の順守を徹底する
  • 多様なものに触れ経験している
  • 事業のドメイン知識を持っている
  • 対人すきるを持っている

2章 アーキテクチャ思考

アーキテクチャと設計

アーキテクチャを機能させるにはアーキテクトと開発チームの間に存在する仮想的・物理的な壁を取り払い,双方向の関係を築く必要がある

アーキテクチャはプロジェクトのイテレーションやフェーズと共に変化するのが不可欠

アーキテクチャと設計の間に明確な境界線はない,どちらもソフトウェアプロジェクトを構成するものであり,両者が常に同期されてなければならない

技術的な幅

開発者は技術的な深さを持たなければならないが,アーキテクトは技術的な幅が要求される

個人の知識はいかの3つに分類できる

  • わかっていること
  • わかっていないとわかっていること
  • わかっていないとわかっていないこと

わかっていることの大きさがその人の技術的な深さとなる

アーキテクトは問題に対する解決策を多く持たなければならないため,わかっていないとわかっていることが重要になってくる

トレードオフを分析する

アーキテクチャはすべてがトレードオフである

様々な要因の上で適するアーキテクチャは定まる

もたらされるプラスの側面とマイナスの側面の両者に目を向け,分析し最適解を模索する

Discussion