マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

詳細

カテゴリ

可用性

  • アプリケーションの可用性が最大限になるように設計・実装。

データ管理

  • データの整合性を維持するため、
    様々な場所にあるデータを同期する。
  • パターン

設計と実装

  • コンポーネントの設計
  • デプロイの一貫性や統一性
  • 管理および開発を容易にする保全性
  • 再使用可能性
  • パターン
    • ...。

メッセージング

  • スケーラビリティを最大化する
    (非同期)メッセージング インフラストラクチャ
  • 課題も多数ある。
    • メッセージの順序
    • 有害メッセージの管理
    • 冪等性
  • パターン

管理と監視

  • アプリケーションの停止や再デプロイを行わずに、
    変化するビジネス要件やカスタマイズに対応する。
  • パターン

パフォーマンスと拡張性

  • 以下の要件に対応
    • 要求のピークに対応するスケールアウト
    • 要求が減少に対応するスケールイン

回復性

  • 迅速かつ効率的に障害を検出して復旧する。
  • パターン
  • Polly系
    • Retry
    • Circuit Breaker
    • Timeout
    • Bulkhead
    • Fallback

セキュリティ

  • 悪意のある攻撃からの保護
  • 機密データの保護
  • ユーザ認証と認可(アクセス制御)

カタログ

フロントエンド用バックエンド

ゲートキーパー

ゲートウェイ(集約 / オフロード / ルーティング)

要求チェック

  • 大きいメッセージを要求チェックとペイロードに分割

正常性エンドポイント監視

公開されたエンドポイントを通じて外部ツールが定期的に
アクセスできる機能チェックをアプリケーションに実装。

  • HTTP/HTTPS ヘルスチェック的な手法で確認する。
  • 管理下で無いので、こんな方法しか無いらしい。
  • 考慮点
    • 認証
    • 負荷
    • 専用エンドポイントの新設
    • , etc.
  • 関連のあるパターンとガイダンス
  • インストルメンテーション
    • アプリケーション実行時の挙動の監視
    • ある種のインシデント改善を自動化
  • メトリック アラート通知の受信
    メトリック アラートを作成、表示(受信)、管理

競合コンシューマー

  • 受ける側で"調整"するパターン
  • 具体例は、後述の「非同期処理サービス」。
  • 関連のあるパターンとガイダンス

調整(絞り弁、スロットル)

  • 受ける側で"制限"するパターン
    • 絞り弁 = Throttle (スロットル)
    • slow_downとか、リクエスト自体を拒否するとか。
  • アプリケーションの
    • インスタンス
    • 個々のテナント
    • またはサービス全体によって使用されるリソース

の使用量を制御する。

  • 関連のあるパターンとガイダンス
  • 前述の)インストルメンテーション
  • サービス・メータリング
    使用しているリソースの計測

Polly(Retry, Circuit Breaker, Timeout, Bulkhead, Fallback)

  • 詳しくは、Pollyの項を参照

非同期要求 - 応答

  • HTTP ポーリングを使用
  • ポートを開いて非同期コールバックを受信出来ない場合。

キュー ベースの負荷平準化

タスクとそのタスクが呼び出すサービスとの間で
キューを使用して、断続的な大きい負荷を平準化する。

  • 非同期処理サービスでやってるようなことをやれという話。
    (「"非同期処理サービス"を使え。」とは言っていない)
  • 関連のあるパターンとガイダンス

優先順位キュー

  • 関連のあるパターンとガイダンス

パブリッシャー/サブスクライバー

  • 関連のあるパターンとガイダンス
  • パターン
    • オブザーバー パターン
    • メッセージ ブローカー パターン。

シーケンシャルなコンボイ

  • メッセージをキュー システム内のカテゴリにプッシュ
  • キュー リスナーが 1 つのカテゴリから一度に 1 つずつロックしてプル
  • 異なるカテゴリのメッセージがインターリーブされる場合がある。

テーブルのインデックス作成

  • 関連のあるパターンとガイダンス

マテリアライズド・ビュー

  • コレは知ってるでしょ?
  • 関連のあるパターンとガイダンス

シャーディング

  • 関連のあるパターンとガイダンス

イベント ソーシング

※ もっと業務要素が加わっているモノもある。

コマンド クエリ責務分離 (CQRS)

  • データ ストアの読み取り操作と更新操作のデータ モデルを分離

補正トランザクション

  • RDBMSのトランザクション・スコープ外で補正を行う。
  • チェック・ポイントで反映されたデータを取り消すなど。

パイプとフィルター

  • だが、ココでは(、ジョブ・ネット的)、バッチの意味。

リーダー選定

  • リーダーとして機能するように、単一のタスク インスタンスが選定
  • リーダー・インスタンスは、下位タスク インスタンスのアクションを調整
  • 垂直方向・水平方向のケースがあるが、水平方向の場合は、MapReduceのような。
  • 関連のあるパターンとガイダンス

Scheduler Agent Supervisor

  • 下記要素の協調動作によって処理される。
  • Scheduler
    実行されるタスクを構成する手順を準備し、その操作を調整
  • Agent
    リモート リソースへのアクセスをカプセル化して呼び出す。
  • Supervisor
    • Schedulerによって実行されているタスク内の手順の状態を監視
    • 手順の失敗を検出した場合は、復旧または是正アクションの Agent を準備する。

コレオグラフィ

  • オーケストレーターに依存せず、システムの各コンポーネントが、
    ビジネス トランザクションのワークフローに関する意思決定プロセスに参加する。
  • 1 つの方法は、非同期メッセージを使用してビジネス操作をコーディネートする。
  • オーケストレーターに起因するパフォーマンスのボトルネックを解消する。
  • 関連のあるパターンとガイダンス

コンピューティング リソース統合

  • 複数のタスクを 1 つのコンピューティング単位に統合する。
  • コンピューティング単位とは
    • 仮想マシン
    • Cloud Service ロール
    • App Service Web アプリ
  • SCM:Service Control Manager的に
    Azure ファブリック コント ローラーがタスクを管理する。
    (そう言う意味では前述の「非同期処理サービス」的ではある)
  • 関連のあるパターンとガイダンス

破損対策レイヤー

  • 新・旧の異なるセマンティクスのシステムを連携する際に
    システム間に挿入するファサード、アダプター レイヤ
  • 関連のあるパターンとガイダンス

ストラングラー

  • 新・旧のバックエンド レガシ システムを段階的に移行する際に
    要求をインターセプトするように挿入する、ファサード レイヤ
  • 関連のあるパターンとガイダンス

アンバサダー

  • アンバサダーは、
    • リモート サービスに要求を送るエージェントのようなもの。
    • ルーティング、サーキット ブレーキ、ログ記録の機能を提供する。
  • 関連のあるパターンとガイダンス

サイドカー

  • 別のプロセス(子プロセス、サブ・コンテナ)として実装
  • 監視、ログ記録、構成、ネットワーク サービスなどの関連する機能を提供
  • 関連のあるパターンとガイダンス

バレット キー

  • 関連のあるパターンとガイダンス

フェデレーション ID

外部構成ストア

  • アプリケーション展開パッケージから、構成情報を
    外部ストレージなどの一元管理される場所に移動する。

キャッシュ アサイド

オンデマンドでデータをデータ ストアからキャッシュに読込

  • パフォーマンスが向上する。
  • データ ストアからキャッシュ間で整合性の維持が必要

静的コンテンツ ホスティング

  • 静的コンテンツを、クライアントに直接配信できるクラウド ベースのストレージ サービスにデプロイ
  • アプリケーションはストレージ サービスの静的コンテンツのURLを配信。
  • パフォーマンスと可用性を最大化するために、コンテンツ配信ネットワーク (CDN) を使用。

参考

参照アーキテクチャ

Microsoft Docs

  • Cloud Design Patterns

カテゴリ

カタログ

  • 可用性
  • クライアント
    • Polly系
      Retry, Circuit Breaker, Timeout, Bulkhead, Fallback
  • 非同期
  • データ

サンプル(GitHub

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: :アーキテクチャ, :クラウド系開発


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-03-22 (日) 00:47:52 (17d)