ソフトウェアアーキテクチャ
概要
ソフトウェアアーキテクチャは、システムを構成する要素・それらの関係・設計や進化を導く原則の集合です。「変更しにくい重要な決定」とも表現され、品質特性(性能・可用性・保守性・セキュリティなど)を満たすための土台となります。
アーキテクチャ特性(品質特性)
- 性能・スケーラビリティ(システムパフォーマンス)
- 可用性・回復性(クラウドアプリケーション設計原則)
- 保守性・進化容易性
- セキュリティ(Webアプリケーションセキュリティ / DevSecOps)
- 可観測性(オブザーバビリティ)
主なアーキテクチャスタイル
| スタイル | 概要 |
|---|---|
| モノリス | 単一デプロイ単位。シンプルだがスケールに課題 |
| マイクロサービス | サービス分割により独立デプロイ・スケール |
| イベント駆動 | イベントの発行/購読で疎結合(ストリーミングシステム) |
| レイヤード | 層に責務を分離 |
アーキテクチャの促進(Facilitating)
書籍『ソフトウェアアーキテクチャの促進』が扱うテーマ:アーキテクチャは一部の人が決めて押し付けるものではなく、チームの協働(ファシリテーション)によって育てる もの。意思決定を記録する ADR(Architecture Decision Records)、設計を共有するワークショップなどが実践手法。
設計との関係
- 戦略的設計:ドメイン駆動設計(境界づけられたコンテキスト)
- 普遍的原則:クラウドアプリケーション設計原則(Azure 10原則)
- 漸進的改善:Tidy First(小さな整頓を積み重ねる)
関連ページ
参考資料
- ソフトウェアアーキテクチャの促進(O’Reilly)