「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次  †
概要  †
詳細  †
カテゴリ  †
可用性  †
- アプリケーションの可用性が最大限になるように設計・実装。
 
データ管理  †
- データの整合性を維持するため、
様々な場所にあるデータを同期する。 
設計と実装  †
- コンポーネントの設計
 
- デプロイの一貫性や統一性
 
- 管理および開発を容易にする保全性
 
- 再使用可能性
 
メッセージング  †
- スケーラビリティを最大化する
(非同期)メッセージング インフラストラクチャ 
管理と監視  †
- アプリケーションの停止や再デプロイを行わずに、
変化するビジネス要件やカスタマイズに対応する。 
パフォーマンスと拡張性  †
- 以下の要件に対応
- 要求のピークに対応するスケールアウト
 
- 要求が減少に対応するスケールイン
 
 
回復性  †
- Polly系
- Retry
 
- Circuit Breaker
 
- Timeout
 
- Bulkhead
 
- Fallback
 
 
セキュリティ  †
- 悪意のある攻撃からの保護
 
- 機密データの保護
 
- ユーザ認証と認可(アクセス制御)
 
カタログ  †
フロントエンド用バックエンド  †
ゲートウェイ(集約 / オフロード / ルーティング)  †
要求チェック  †
正常性エンドポイント監視  †
公開されたエンドポイントを通じて外部ツールが定期的に
アクセスできる機能チェックをアプリケーションに実装。
- HTTP/HTTPS ヘルスチェック的な手法で確認する。
 
- 考慮点
- 認証
 
- 負荷
 
- 専用エンドポイントの新設
 
- , etc.
 
 
- インストルメンテーション
- アプリケーション実行時の挙動の監視
 
- ある種のインシデント改善を自動化
 
 
- メトリック アラート通知の受信
メトリック アラートを作成、表示(受信)、管理 
競合コンシューマー  †
- 受ける側で"調整"するパターン
 
- 具体例は、後述の「非同期処理サービス」。
 
調整(絞り弁、スロットル)  †
- 受ける側で"制限"するパターン
- 絞り弁 = Throttle (スロットル)
 
- slow_downとか、リクエスト自体を拒否するとか。
 
 
- アプリケーションの
- インスタンス
 
- 個々のテナント
 
- またはサービス全体によって使用されるリソース
 
 
の使用量を制御する。
- サービス・メータリング
使用しているリソースの計測 
非同期要求 - 応答  †
- HTTP ポーリングを使用
 
- ポートを開いて非同期コールバックを受信出来ない場合。
 
キュー ベースの負荷平準化  †
タスクとそのタスクが呼び出すサービスとの間で
キューを使用して、断続的な大きい負荷を平準化する。
- 非同期処理サービスでやってるようなことをやれという話。
(「"非同期処理サービス"を使え。」とは言っていない) 
優先順位キュー  †
パブリッシャー/サブスクライバー  †
- Microsoft Message Queue (MSMQ)等にあった。
 
- レプリケーションでも利用されている。
 
- パターン
- オブザーバー パターン
 
- メッセージ ブローカー パターン。
 
 
シーケンシャルなコンボイ  †
- メッセージをキュー システム内のカテゴリにプッシュ
 
- キュー リスナーが 1 つのカテゴリから一度に 1 つずつロックしてプル
 
- 異なるカテゴリのメッセージがインターリーブされる場合がある。
 
テーブルのインデックス作成  †
マテリアライズド・ビュー  †
シャーディング  †
イベント ソーシング  †
※ もっと業務要素が加わっているモノもある。
コマンド クエリ責務分離 (CQRS)  †
- データ ストアの読み取り操作と更新操作のデータ モデルを分離
 
補正トランザクション  †
- RDBMSのトランザクション・スコープ外で補正を行う。
 
- チェック・ポイントで反映されたデータを取り消すなど。
 
パイプとフィルター  †
- だが、ココでは(、ジョブ・ネット的)、バッチの意味。
 
リーダー選定  †
- リーダーとして機能するように、単一のタスク インスタンスが選定
 
- リーダー・インスタンスは、下位タスク インスタンスのアクションを調整
 
- 垂直方向・水平方向のケースがあるが、水平方向の場合は、MapReduceのような。
 
Scheduler Agent Supervisor  †
- Scheduler
実行されるタスクを構成する手順を準備し、その操作を調整 
- Agent
リモート リソースへのアクセスをカプセル化して呼び出す。 
- Supervisor
- Schedulerによって実行されているタスク内の手順の状態を監視
 
- 手順の失敗を検出した場合は、復旧または是正アクションの Agent を準備する。
 
 
コレオグラフィ  †
- オーケストレーターに依存せず、システムの各コンポーネントが、
ビジネス トランザクションのワークフローに関する意思決定プロセスに参加する。 
- 1 つの方法は、非同期メッセージを使用してビジネス操作をコーディネートする。
 
- オーケストレーターに起因するパフォーマンスのボトルネックを解消する。
 
コンピューティング リソース統合  †
- 複数のタスクを 1 つのコンピューティング単位に統合する。
 
- コンピューティング単位とは
- 仮想マシン
 
- Cloud Service ロール
 
- App Service Web アプリ
 
 
破損対策レイヤー  †
- 新・旧の異なるセマンティクスのシステムを連携する際に
システム間に挿入するファサード、アダプター レイヤ 
ストラングラー  †
- 新・旧のバックエンド レガシ システムを段階的に移行する際に
要求をインターセプトするように挿入する、ファサード レイヤ 
アンバサダー  †
- アンバサダーは、
- リモート サービスに要求を送るエージェントのようなもの。
 
- ルーティング、サーキット ブレーキ、ログ記録の機能を提供する。
 
 
サイドカー  †
- 別のプロセス(子プロセス、サブ・コンテナ)として実装
 
- 監視、ログ記録、構成、ネットワーク サービスなどの関連する機能を提供
 
バレット キー  †
外部構成ストア  †
- アプリケーション展開パッケージから、構成情報をを
外部ストレージなどの一元管理される場所に移動する。 
キャッシュ アサイド  †
オンデマンドでデータをデータ ストアからキャッシュに読込
- パフォーマンスが向上する。
 
- データ ストアからキャッシュ間で整合性の維持が必要
 
静的コンテンツ ホスティング  †
- 静的コンテンツを、クライアントに直接配信できるクラウド ベースのストレージ サービスにデプロイ
 
- アプリケーションはストレージ サービスの静的コンテンツのURLを配信。
 
- パフォーマンスと可用性を最大化するために、コンテンツ配信ネットワーク (CDN) を使用。
 
参考  †
Microsoft Docs  †
カテゴリ  †
カタログ  †
- クライアント
- Polly系
Retry, Circuit Breaker, Timeout, Bulkhead, Fallback 
 
https://github.com/mspnp/cloud-design-patterns
- async-request-reply
 
- choreography
 
- claim-check
 
- competing-consumers
 
- compute-resource-consolidation
 
- external-configuration-store
 
- health-endpoint-monitoring
 
- leader-election
 
- pipes-and-filters
 
- priority-queue-sf
 
- priority-queue
 
- static-content-hosting
 
- valet-key
 
Tags: :アーキテクチャ, :クラウド系開発