アーキテクチャ
アーキテクチャとは、対象を特性を左右する重要事項の集まりである。
ソフトウェア開発においてトレードオフのある選択を迫られることが何度もある。このトレードオフを選択することでソフトウェアの特徴が定まる。また、実装手段も限定されていく。特に要求や要件を満たすための選択は重要な決定となりえる。
具体的には、1000万同時アクセスを可能にしたい要求があるとして、それを実現するためには何か品質を犠牲しなければならなくなる可能性が高い。何を犠牲にするかによってアプリケーションが特徴を持つことがある。具体的には、分断耐性の高いマイクロサービスを選択することで整合性を犠牲にしなければならないかもしれない。逆に一貫性を高め、応答性や安定性を落とすことを選ぶかもしれない。これらの選択によってアプリケーションの「安定性が高い」のように特徴が定まるのである。
これらの決定は一つではなく複数あるため、これらを集めたものをアーキテクチャとする。
アーキテクチャを表現するために、アーキテクチャ図と呼ばれる図を用いて表現することがある。アーキテクチャ図は何を対象にした図であるかは状況による。具体的には、AWSサービスの関係図がアーキテクチャ図と呼ばれることがあるが、それがアプリケーションにとって重要であればアーキテクチャ図かもしれないし、EC2インスタンスだけならアーキテクチャ図と言えるかどうかは定かではない。何かしらアプリケーションの重要な要素を示しているのであれば、それはアーキテクチャ図と。
決定の内容を表現する手段であれば、図でなくてもアーキテクチャが示せる場合がある。例えば、プロトタイプである。プロトタイプに重要な要素が実現されており、求める要求や要件が実現できることを示せるのであればそれはアーキテクチャを表現している。
このようにアーキテクチャを表現する方法にはさまざまな手段がある。