Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

アーキテクチャ特性(品質属性)

アーキテクチャに「唯一の正解」はなく、あるのは トレードオフ だけ。何を優先するかを決める軸になるのが アーキテクチャ特性(quality attributes、しばしば語尾から “-ilities” とも呼ばれる)。

代表的なアーキテクチャ特性

特性説明
可用性(Availability)システムが利用可能である時間の割合。障害時の復旧速度も含む
拡張性(Scalability)負荷増加に対してリソースを追加することで対応できる度合い
パフォーマンス(Performance)レイテンシ・スループットなど
保守性(Maintainability)変更・修正のしやすさ。結合度と凝集度 がここに直結する
テスト容易性(Testability)自動テストを書きやすいか。依存の注入しやすさに強く影響される
セキュリティ(Security)機密性・完全性・可用性の確保
デプロイ容易性(Deployability)リリースの頻度・リスクの低さ
相互運用性(Interoperability)他システムと連携しやすいか
運用性(Observability)障害やパフォーマンス劣化を検知・診断しやすいか

これらは互いにトレードオフの関係になることが多い(例:可用性を上げるために複製すると整合性が犠牲になりうる、 拡張性のために マイクロサービス 化すると保守性やテスト容易性が下がりうる)。 すべてを同時に最大化することはできないため、ビジネス要求に照らして優先順位をつける必要がある。

進め方

  1. 要求からアーキテクチャ特性を導く:非機能要件(要件定義参照)を 「どの特性がどの程度重要か」に翻訳する

  2. 優先順位をつける:全部は満たせない前提で、上位3つ程度に絞る(例:可用性 > 拡張性 > コスト)

  3. トレードオフを明示して選択する:選んだアーキテクチャがどの特性を優先し、何を犠牲にしたかを記録する (ADR が有効)

  4. 測定可能な形にする:「可用性99.9%」「p99レイテンシ200ms以下」のように検証可能な基準に落とす

CAP定理(分散システムにおける Consistency / Availability / Partition tolerance のトレードオフ)は、 アーキテクチャ特性同士が原理的に両立しないことを示す代表例。詳細は 分散システムの整合性 を参照。