「マイクロソフト系技術情報 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: :アーキテクチャ, :クラウド系開発