クライアントサーバーアーキテクチャのコンポーネント、境界、データおよび制御フロー、インターフェース、障害処理を定義します。採用の境界と観測可能な障害の証拠を固定しつつ、環境固有の制限は設定可能なままにします。
パッケージステータス: 人間によるレビュー準備が整ったリファレンスコンテキストです。契約とテストシナリオは完成していますが、採用実装がこれらを通過したという主張はありません。
決定
クライアントサーバーアーキテクチャについては、所有インターフェースと依存方向を持つ記録されたアーキテクチャ決定を採用します。1つの所有境界、明示的な状態モデル、バージョン管理されたインターフェースを使用し、ポリシー決定はアダプターや副作用から分離します。このパッケージはリファレンス契約であり、採用チームは自身の環境の証拠から数値制限、プロバイダー、管轄区域、運用責任者を選択しなければなりません。
範囲
- このアーキテクチャブロックで記述されるクライアントサーバーアーキテクチャのアクター、入力、出力、状態、ポリシーまたはスキーマのバージョン、および外部に見える結果。
- 主および代替インターフェース、バックグラウンド作業、キャッシュ、統合、サポートパス、および同じ境界を動作させる証拠。
- リファレンスを安全に適用するために必要な採用固有の設定、展開、回復、および検証の責任。
このブロックの外側
- すべての採用者に対して普遍的なベンダー、フレームワーク、管轄区域、数値閾値、保持期間、またはサービスレベル目標を選択すること。
- パッケージ化されたシナリオが下流の実装で実行されたことや、このリファレンスが法的、セキュリティ、アクセシビリティの認証を付与することを主張すること。
契約
- 決定の推進要因、代替案、制約、可逆性、および選択した構造を無効にする条件を明示する。
- すべての境界でデータ、振る舞い、インターフェース、デプロイメント、および運用の所有権を割り当てる。共有コードは所有権を消滅させない。
- 記録された方向の依存のみを許可し、他のコンポーネントの内部モデルではなく安定した契約を交換する。
- 各リモートまたは非同期境界に対してタイムアウト、容量、一貫性、劣化、デプロイメント、マイグレーション、および回復の振る舞いを定義する。
- コンポーネントの所有権と許可された依存方向を文書化し、どのデータが各境界を越えるかを含める。
- 同期、非同期、およびバッチパスは同じ権限と状態不変条件を実装する。
- 各事実と決定を1つのクライアントまたはサーバー権限に割り当て、バージョン管理されたトランスポート、検証、認証、認可、冪等性、およびエラー契約を定義する。
- クライアント状態は信頼できず古くなっている可能性があるとみなし、オフラインまたは楽観的な意図をサーバーバージョンと調整し、どちらか一方が独立してアップグレードしても利用可能な障害経路を保持する。
実装ガイダンス
- ドメイン状態とインターフェース契約から開始し、アダプター、ストレージ、キュー、およびプロバイダー固有のコードを接続する。
- クライアントサーバーアーキテクチャの入力、出力、アクター、状態、不変条件、副作用、および証拠をモデル化してからフレームワークやベンダーの詳細を選択する。
- 適用されるクライアントサーバーアーキテクチャ契約またはポリシーバージョンを物理状態とともに保存し、マイグレーション、リプレイ、およびサポートの決定が追跡可能であるようにする。
- 制御された展開の背後にあるパスを導入し、予想される結果と観測された結果を比較し、採用証拠が完了するまでテスト済みの回復ルートを保持する。
障害処理と安全策
- 境界の障害は封じ込められ、安定した呼び出し元の結果を生成し、テスト済みのロールバックまたは前方回復経路を持つ。
- 無効または矛盾したクライアントサーバーアーキテクチャ状態は拒否または隔離される。実装は権限を拡大したり効果を重複させる値を推測しない。
- リトライは制限され、耐久的な識別子を使用する。使い果たした後は、作業は検査可能な終端状態に達し、責任者が明確である。
検証と運用
- 各アダプターを通じて契約を実行し、失敗した依存が権威ある境界を迂回できないことを証明する。
- クライアントサーバーアーキテクチャの成功、拒否、検証失敗、依存失敗、リトライ使い果たし、および回復を契約バージョンごとに監視し、機密ペイロードの詳細は含めない。
- ポリシー、スキーマ、依存関係、マイグレーション、または境界の変更後に正負のフィクスチャを再実行し、結果の証拠を保持する。
採用の前提
- 例の名前と値は具体的なフィクスチャであり、普遍的なデフォルトではない。採用者は文書化された証拠と所有権を通じてこれらを置き換える。
- 採用システムは認証済みの識別、耐久的な操作または記録バージョン、制限されたテレメトリ、および変更のための制御されたパスを提供できる。
このパッケージの実行可能に見える例はフィクスチャおよび受け入れ契約です。
構造とメタデータを検証するためにコレクションバリデーターを実行し、ターゲットリポジトリでシナリオを翻訳・実行してから実装証拠を記録してください。