非機能要件(NFR)は、ITシステムの性能、セキュリティ、耐障害性、スケーラビリティ、保守性などの非機能的特性です。これらはアーキテクチャ設計において重要な役割を果たし、しばしば機能要件と同様に技術的解決策やインフラを定義します。
例えば、ビジネスシステムが高い可用性(稼働率 > 99.99%)を要求する場合、アーキテクトはフェイルオーバー、自動切り替え、データのレプリケーション、負荷分散などのメカニズムを実装する必要があります。そうしなければ、ビジネスの価値が失われる可能性があります。
例:NFRがアーキテクチャに与える影響(Python、FastAPIの場合):
from fastapi import FastAPI from starlette.middleware.cors import CORSMiddleware app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # このアプローチは、NFRに外部フロントとの統合が必要という要件がある場合に必要です。
主な特徴:
開発の後半でNFRを追加しても問題ありませんか?
いいえ、重要なNFRは最初から考慮する必要があります。そうでなければ、アーキテクチャの根本的な再設計が必要になります。
NFRの実行責任はアーキテクトにのみありますか?
間違いです。これはプロジェクトチーム全体の責任であり、アナリストからDevOpsまで含まれます。
スケーラビリティとセキュリティは、インフラストラクチャの課題と見なすべきですか?
いいえ。スケーラビリティとセキュリティは、アーキテクチャ的かつインフラ的な課題です(例えば、ユーザーごとのデータ分割はサービスレベルで実現されます)。