クラウド設計パターン
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>アーキテクチャ設計]]
* 目次 [#j8805eae]
#contents
*概要 [#d012c3e3]
-まだ、ごく一部しか書けていない(オンデマンドで追記予定)。
-[[ガイドライン>クラウド アプリケーション アーキテクチャ ...
*詳細 [#x8291193]
**カテゴリ [#zeb8a6a4]
***可用性 [#i63267d2]
-アプリケーションの可用性が最大限になるように設計・実装。
-パターン
--[[正常性エンドポイント監視>#r913f362]]
--[[調整(絞り弁、スロットル)>#r5f048d8]]
--[[キュー ベースの負荷平準化>#m8158a06]]
***データ管理 [#e03b2289]
-データの整合性を維持するため、~
様々な場所にあるデータを同期する。
-パターン
--配置
---[[テーブルのインデックス作成>#q19a433d]]
---[[マテリアライズド・ビュー>#t9eed998]]
---[[シャーディング>#i8ed3766]]
--操作
---[[イベント ソーシング>#gd32eb7b]]
---[[コマンド クエリ責務分離 (CQRS)>#z972b50e]]
---[[補正トランザクション>#d113b16e]]
--その他
---[[バレット キー>#i4f422e4]]
---[[キャッシュ アサイド>#gb491759]]
---[[静的コンテンツ ホスティング>#t2f1a55e]]
***設計と実装 [#r9cb5e6b]
-コンポーネントの設計
-デプロイの一貫性や統一性
-管理および開発を容易にする保全性
-再使用可能性
-パターン
--...。
***メッセージング [#td14fd2d]
-スケーラビリティを最大化する~
(非同期)メッセージング インフラストラクチャ
-課題も多数ある。
--メッセージの順序
--有害メッセージの管理
--冪等性
-パターン
--[[要求チェック>#vbc37c90]]
--[[非同期要求 - 応答>#i947e3b1]]
--[[競合コンシューマー>#adeadf05]]
--[[調整(絞り弁、スロットル)>#r5f048d8]]
--キュー
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[優先順位キュー>#tf045f04]]
---[[パブリッシャー/サブスクライバー>#we34db20]]
---[[シーケンシャルなコンボイ>#n889f92a]]
-タスクの協調動作
--[[パイプとフィルター>#d56122e0]]
--[[Scheduler Agent Supervisor>#d9b6b869]]
--[[コレオグラフィ>#z41a1a75]]
***管理と監視 [#tbba2978]
-アプリケーションの停止や再デプロイを行わずに、~
変化するビジネス要件やカスタマイズに対応する。
-パターン
--[[ゲートウェイ>#o7cb8518]]
---集約
---オフロード
---ルーティング
--[[正常性エンドポイント監視>#r913f362]]
--システム間連系
---[[破損対策レイヤー>#ee356f31]]
---[[ストラングラー>#gb7104aa]]
--コンポーネント
---[[アンバサダー>#kd47d078]]
---[[サイドカー>#kf9fc0f6]]
--[[外部構成ストア>#g6bdf9c1]]
***パフォーマンスと拡張性 [#w039903b]
-以下の要件に対応
--要求のピークに対応するスケールアウト
--要求が減少に対応するスケールイン
-以下の要素と関係がある。
--[[データ ストレージ>#e03b2289]]
--[[メッセージング インフラストラクチャ>#td14fd2d]]
-パターン
--[[調整(絞り弁、スロットル)>#r5f048d8]]
--データ配置
---[[テーブルのインデックス作成>#q19a433d]]
---[[マテリアライズド・ビュー>#t9eed998]]
---[[シャーディング>#i8ed3766]]
--非同期タスク
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[優先順位キュー>#tf045f04]]
---[[イベント ソーシング>#gd32eb7b]]
---[[コマンド クエリ責務分離 (CQRS)>#z972b50e]]
---[[コレオグラフィ>#z41a1a75]]
--その他
---[[キャッシュ アサイド>#gb491759]]
---[[静的コンテンツ ホスティング>#t2f1a55e]]
***回復性 [#m9fc9b20]
-迅速かつ効率的に障害を検出して復旧する。
-パターン
--[[正常性エンドポイント監視>#r913f362]]
--[[Polly系>#t4755eb8]]
---Retry
---Circuit Breaker
---Timeout
---Bulkhead
---Fallback
--非同期タスクと補正
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[リーダー選定>#b5489904]]
---[[Scheduler Agent Supervisor>#d9b6b869]]
---[[補正トランザクション>#d113b16e]]
***セキュリティ [#sd3af2e4]
-悪意のある攻撃からの保護
-機密データの保護
-ユーザ認証と認可(アクセス制御)
-パターン
--[[ゲートキーパー>#r1236eb8]]
--[[バレット キー>#i4f422e4]]
--[[フェデレーション ID>#x070c362]]
**カタログ [#v1bfce15]
***フロントエンド用バックエンド [#f9d59953]
-[[個別サービス・インターフェイス>https://opentouryo.ossc...
-関連のあるパターンとガイダンス
--パターン
---[[ゲートウェイ(集約 / オフロード / ルーティング)>#o7cb...
***[[ゲートキーパー>Web/APの分離#eaab229f]] [#r1236eb8]
-関連のあるパターンとガイダンス
--パターン
---[[バレット キー>#i4f422e4]]
***ゲートウェイ(集約 / オフロード / ルーティング) [#o7cb8...
-[[API Gateway]]のような。
-関連のあるパターンとガイダンス
--パターン
---集約 ⇔ オフロード ⇔ ルーティング
---[[フロントエンド用バックエンド>#f9d59953]]
---[[Polly(Retry, Circuit Breaker, Timeout, Bulkhead, Fal...
***要求チェック [#vbc37c90]
-大きいメッセージを要求チェックとペイロードに分割
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***正常性エンドポイント監視 [#r913f362]
公開されたエンドポイントを通じて外部ツールが定期的に~
アクセスできる機能チェックをアプリケーションに実装。
-HTTP/HTTPS ヘルスチェック的な手法で確認する。
-管理下で無いので、こんな方法しか無いらしい。
-考慮点
--認証
--負荷
--専用エンドポイントの新設
--, etc.
-関連のあるパターンとガイダンス
--インストルメンテーション
---アプリケーション実行時の挙動の監視
---ある種のインシデント改善を自動化
--[[メトリック アラート>Azure Alerts]]通知の受信~
[[メトリック アラート>Azure Alerts]]を作成、表示(受信)...
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***競合コンシューマー [#adeadf05]
-受ける側で"調整"するパターン
-具体例は、[[後述>#m8158a06]]の「非同期処理サービス」。
-関連のあるパターンとガイダンス
--パターン
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[コンピューティング リソース統合>#h0efa234]]
--[[自動スケール>クラウド アプリケーション アーキテクチャ...
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***調整(絞り弁、スロットル) [#r5f048d8]
-受ける側で"制限"するパターン
--絞り弁 = Throttle (スロットル)
--[[slow_down>CIBA(Client Initiated Backchannel Authentic...
-アプリケーションの
--インスタンス
--個々のテナント
--またはサービス全体によって使用されるリソース
>の使用量を制御する。
-関連のあるパターンとガイダンス
--パターン
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[優先順位キュー>#tf045f04]]
--([[前述>#r913f362]]の)インストルメンテーション
--サービス・メータリング~
使用しているリソースの計測
--[[自動スケール>クラウド アプリケーション アーキテクチャ...
***[[Polly(Retry, Circuit Breaker, Timeout, Bulkhead, Fal...
-詳しくは、[[Polly>Polly(Retry, Circuit Breaker, Timeout,...
-関連のあるパターンとガイダンス
--Retry ⇔ Circuit Breaker ⇔ Bulkhead
--[[正常性エンドポイント監視>#r913f362]]
--[[調整(絞り弁、スロットル)>#r5f048d8]]
***非同期要求 - 応答 [#i947e3b1]
-HTTP ポーリングを使用
-ポートを開いて非同期コールバックを受信出来ない場合。
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***キュー ベースの負荷平準化 [#m8158a06]
タスクとそのタスクが呼び出すサービスとの間で~
キューを使用して、断続的な大きい負荷を平準化する。
-[[非同期処理サービス>https://opentouryo.osscons.jp/index...
(「"非同期処理サービス"を使え。」とは言っていない)
-関連のあるパターンとガイダンス
--パターン
---[[競合コンシューマー>#adeadf05]]
---[[調整(絞り弁、スロットル)>#r5f048d8]]
--[[メッセージング サービスの選択>クラウド アプリケーショ...
--[[スケーラビリティの向上>参照アーキテクチャ#z6ed15db]]...
***優先順位キュー [#tf045f04]
-[[キュー ベースの負荷平準化>#m8158a06]]に加え、
-優先順位の高い順に受信・処理されるようにする。
-関連のあるパターンとガイダンス
--パターン
---[[競合コンシューマー>#adeadf05]]
---[[調整(絞り弁、スロットル)>#r5f048d8]]
--[[自動スケール>クラウド アプリケーション アーキテクチャ...
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***パブリッシャー/サブスクライバー [#we34db20]
-Microsoft Message Queue (MSMQ)等にあった。
-[[レプリケーション>SQL Server のレプリケーション]]でも利...
-関連のあるパターンとガイダンス
--パターン
---オブザーバー パターン
---メッセージ ブローカー パターン。
--アーキ・ガイド
---[[イベント ドリブン アーキテクチャ>クラウド アプリケー...
---[[メッセージング サービスの選択>クラウド アプリケーシ...
***シーケンシャルなコンボイ [#n889f92a]
-メッセージをキュー システム内のカテゴリにプッシュ
-キュー リスナーが 1 つのカテゴリから一度に 1 つずつロッ...
-異なるカテゴリのメッセージがインターリーブされる場合があ...
***テーブルのインデックス作成 [#q19a433d]
-[[SQL Server のインデックス]]
-セカンダリ・インデックスの無い~
[[NoSQL>https://dotnetdevelopmentinfrastructure.osscons.j...
-関連のあるパターンとガイダンス
--パターン
---[[シャーディング>#i8ed3766]]
---[[マテリアライズド・ビュー>#t9eed998]]
***マテリアライズド・ビュー [#t9eed998]
-コレは知ってるでしょ?
-関連のあるパターンとガイダンス
--パターン
---[[テーブルのインデックス作成>#q19a433d]]
---[[シャーディング>#i8ed3766]]
---[[イベント ソーシング>#gd32eb7b]]
---[[コマンド クエリ責務分離 (CQRS)>#z972b50e]]
***シャーディング [#i8ed3766]
-[[Elastic Scale, Elastic Database Pool]]
-関連のあるパターンとガイダンス
--パターン
---[[テーブルのインデックス作成>#q19a433d]]
---[[マテリアライズド・ビュー>#t9eed998]]
--[[データのパーティション分割>クラウド アプリケーション ...
***イベント ソーシング [#gd32eb7b]
-以下のようなパターン
--追加処理の専用ストアを用意し、
--[[Apache NiFi>https://dotnetdevelopmentinfrastructure.o...
--バッチで[[データレイク → データマート>https://dotnetdev...
>※ もっと業務要素が加わっているモノもある。
-関連のあるパターンとガイダンス
--パターン
---[[マテリアライズド・ビュー>#t9eed998]]
---[[コマンド クエリ責務分離 (CQRS)>#z972b50e]]
---[[補正トランザクション>#d113b16e]]
--[[データのパーティション分割>クラウド アプリケーション ...
***コマンド クエリ責務分離 (CQRS) [#z972b50e]
-データ ストアの読み取り操作と更新操作のデータ モデルを分離
-関連のあるパターンとガイダンス
--パターン
---[[マテリアライズド・ビュー>#t9eed998]]
---[[イベント ソーシング>#gd32eb7b]]
--[[データのパーティション分割>クラウド アプリケーション ...
***補正トランザクション [#d113b16e]
-RDBMSのトランザクション・スコープ外で補正を行う。
-[[ロング・トランザクション(バッチ)>#d56122e0]]で必要に...
--[[リラン可能バッチ的(チェック・ポイントの実装)>https:...
--チェック・ポイントで反映されたデータを取り消すなど。
-関連のあるパターンとガイダンス
--パターン
---[[Scheduler-Agent-Supervisor>#d9b6b869]]
---[[Retry>#t4755eb8]]
***パイプとフィルター [#d56122e0]
-語源は、[[Linuxのパイプとフィルター>https://dotnetdevelo...
-だが、ココでは(、ジョブ・ネット的)、バッチの意味。
-関連のあるパターンとガイダンス
--パターン
---[[競合コンシューマー>#adeadf05]]
---[[補正トランザクション>#d113b16e]]
---[[コンピューティング リソース統合>#h0efa234]]
---冪等性
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***リーダー選定 [#b5489904]
-リーダーとして機能するように、単一のタスク インスタンス...
-リーダー・インスタンスは、下位タスク インスタンスのアク...
-垂直方向・水平方向のケースがあるが、水平方向の場合は、[[...
-関連のあるパターンとガイダンス
--[[自動スケール>クラウド アプリケーション アーキテクチャ...
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***Scheduler Agent Supervisor [#d9b6b869]
-下記要素の協調動作によって処理される。
--Scheduler~
実行されるタスクを構成する手順を準備し、その操作を調整
--Agent~
リモート リソースへのアクセスをカプセル化して呼び出す。
--Supervisor
---Schedulerによって実行されているタスク内の手順の状態を...
---手順の失敗を検出した場合は、復旧または是正アクションの...
-関連のあるパターンとガイダンス
--パターン
---[[補正トランザクション>#d113b16e]]
---[[Retry, Circuit Breaker>#t4755eb8]]
---[[リーダー選定>#b5489904]]
***コレオグラフィ [#z41a1a75]
-オーケストレーターに依存せず、システムの各コンポーネント...
ビジネス トランザクションのワークフローに関する意思決定プ...
-1 つの方法は、非同期メッセージを使用してビジネス操作をコ...
-オーケストレーターに起因するパフォーマンスのボトルネック...
-関連のあるパターンとガイダンス
--パターン
---[[アンバサダー>#kd47d078]]
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[パブリッシャー/サブスクライバー>#we34db20]]
---[[補正トランザクション>#d113b16e]]
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***コンピューティング リソース統合 [#h0efa234]
-複数のタスクを 1 つのコンピューティング単位に統合する。
-コンピューティング単位とは
--仮想マシン
--Cloud Service ロール
--App Service Web アプリ
-[[SCM:Service Control Manager>SCM]]的に~
Azure ファブリック コント ローラーがタスクを管理する。~
(そう言う意味では[[前述>#m8158a06]]の「非同期処理サービ...
-関連のあるパターンとガイダンス
--[[自動スケール>クラウド アプリケーション アーキテクチャ...
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***破損対策レイヤー [#ee356f31]
-新・旧の異なるセマンティクスのシステムを連携する際に~
システム間に挿入するファサード、アダプター レイヤ
-関連のあるパターンとガイダンス
--[[ストラングラー>#gb7104aa]](パターン)
***ストラングラー [#gb7104aa]
-新・旧のバックエンド レガシ システムを段階的に移行する際...
要求をインターセプトするように挿入する、ファサード レイヤ
-関連のあるパターンとガイダンス
--[[破損対策レイヤー>#ee356f31]](パターン)
***アンバサダー [#kd47d078]
-アンバサダーは、
--リモート サービスに要求を送る[[エージェント>#d9b6b869]]...
--ルーティング、サーキット ブレーキ、ログ記録の機能を提供...
-関連のあるパターンとガイダンス
--[[サイドカー>#kf9fc0f6]](パターン)
***サイドカー [#kf9fc0f6]
-別のプロセス(子プロセス、サブ・コンテナ)として実装
-監視、ログ記録、構成、ネットワーク サービスなどの関連す...
-関連のあるパターンとガイダンス
--[[アンバサダー>#kd47d078]](パターン)
***バレット キー [#i4f422e4]
-[[(≒OAuth)>OAuth]]
-関連のあるパターンとガイダンス
--パターン
---[[ゲートキーパー>#r1236eb8]]
---静的コンテンツ ホスティング パターン
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***[[フェデレーション ID>クレームベース認証]] [#x070c362]
***外部構成ストア [#g6bdf9c1]
-アプリケーション展開パッケージから、[[構成情報を>.NET co...
外部ストレージなどの一元管理される場所に移動する。
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***キャッシュ アサイド [#gb491759]
オンデマンドでデータをデータ ストアからキャッシュに読込
-パフォーマンスが向上する。
-データ ストアからキャッシュ間で整合性の維持が必要
***静的コンテンツ ホスティング [#t2f1a55e]
-静的コンテンツを、クライアントに直接配信できるクラウド ...
-アプリケーションはストレージ サービスの静的コンテンツのU...
-パフォーマンスと可用性を最大化するために、コンテンツ配信...
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
*参考 [#c2dfaa70]
**[[参照アーキテクチャ]] [#b453c6db]
**Microsoft Docs [#b508628e]
-クラウド設計パターン - Azure Architecture Center~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
--Cloud Design Patterns
***カテゴリ [#m86d8985]
-可用性のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
-データ管理のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
-設計と実装のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
-管理と監視のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
-メッセージングのパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
-パフォーマンスとスケーラビリティのパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
-回復性のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
-セキュリティのパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
***カタログ [#t00b5522]
-WebAPI
--[[フロントエンド用バックエンド>#f9d59953]]
--[[ゲートキーパー>#r1236eb8]]
--[[ゲートウェイ>#o7cb8518]]
---集約
---オフロード
---ルーティング
-可用性
--[[要求チェック>#vbc37c90]]
--[[正常性エンドポイント監視>#r913f362]]
--サーバ
---[[競合コンシューマー>#adeadf05]]
---[[調整(絞り弁、スロットル)>#r5f048d8]]
--クライアント~
---[[Polly系>#t4755eb8]]~
Retry, Circuit Breaker, Timeout, Bulkhead, Fallback
-非同期
--[[非同期要求 - 応答>#i947e3b1]]
--キュー
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[優先順位キュー>#tf045f04]]
---[[パブリッシャー/サブスクライバー>#we34db20]]
---[[シーケンシャルなコンボイ>#n889f92a]]
-データ
--配置
---[[テーブルのインデックス作成>#q19a433d]]
---[[マテリアライズド・ビュー>#t9eed998]]
---[[シャーディング>#i8ed3766]]
--操作
---[[イベント ソーシング>#gd32eb7b]]
---[[コマンド クエリ責務分離 (CQRS)>#z972b50e]]
---[[補正トランザクション>#d113b16e]]
-タスクの協調動作
--[[パイプとフィルター>#d56122e0]]
--[[コンピューティング リソース統合>#h0efa234]]
--[[リーダー選定>#b5489904]]
--[[Scheduler Agent Supervisor>#d9b6b869]]
--[[コレオグラフィ>#z41a1a75]]
-システム間連系
--[[破損対策レイヤー>#ee356f31]]
--[[ストラングラー>#gb7104aa]]
-コンポーネント
--[[アンバサダー>#kd47d078]]
--[[サイドカー>#kf9fc0f6]]
-セキュリティ
--[[ゲートキーパー>#r1236eb8]]
--[[バレット キー>#i4f422e4]]
--[[フェデレーション ID>#x070c362]]
-その他
--[[外部構成ストア>#g6bdf9c1]]
--[[キャッシュ アサイド>#gb491759]]
--[[静的コンテンツ ホスティング>#t2f1a55e]]
**サンプル(GitHub) [#z590e396]
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: [[:アーキテクチャ]], [[:クラウド系開発]]
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>アーキテクチャ設計]]
* 目次 [#j8805eae]
#contents
*概要 [#d012c3e3]
-まだ、ごく一部しか書けていない(オンデマンドで追記予定)。
-[[ガイドライン>クラウド アプリケーション アーキテクチャ ...
*詳細 [#x8291193]
**カテゴリ [#zeb8a6a4]
***可用性 [#i63267d2]
-アプリケーションの可用性が最大限になるように設計・実装。
-パターン
--[[正常性エンドポイント監視>#r913f362]]
--[[調整(絞り弁、スロットル)>#r5f048d8]]
--[[キュー ベースの負荷平準化>#m8158a06]]
***データ管理 [#e03b2289]
-データの整合性を維持するため、~
様々な場所にあるデータを同期する。
-パターン
--配置
---[[テーブルのインデックス作成>#q19a433d]]
---[[マテリアライズド・ビュー>#t9eed998]]
---[[シャーディング>#i8ed3766]]
--操作
---[[イベント ソーシング>#gd32eb7b]]
---[[コマンド クエリ責務分離 (CQRS)>#z972b50e]]
---[[補正トランザクション>#d113b16e]]
--その他
---[[バレット キー>#i4f422e4]]
---[[キャッシュ アサイド>#gb491759]]
---[[静的コンテンツ ホスティング>#t2f1a55e]]
***設計と実装 [#r9cb5e6b]
-コンポーネントの設計
-デプロイの一貫性や統一性
-管理および開発を容易にする保全性
-再使用可能性
-パターン
--...。
***メッセージング [#td14fd2d]
-スケーラビリティを最大化する~
(非同期)メッセージング インフラストラクチャ
-課題も多数ある。
--メッセージの順序
--有害メッセージの管理
--冪等性
-パターン
--[[要求チェック>#vbc37c90]]
--[[非同期要求 - 応答>#i947e3b1]]
--[[競合コンシューマー>#adeadf05]]
--[[調整(絞り弁、スロットル)>#r5f048d8]]
--キュー
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[優先順位キュー>#tf045f04]]
---[[パブリッシャー/サブスクライバー>#we34db20]]
---[[シーケンシャルなコンボイ>#n889f92a]]
-タスクの協調動作
--[[パイプとフィルター>#d56122e0]]
--[[Scheduler Agent Supervisor>#d9b6b869]]
--[[コレオグラフィ>#z41a1a75]]
***管理と監視 [#tbba2978]
-アプリケーションの停止や再デプロイを行わずに、~
変化するビジネス要件やカスタマイズに対応する。
-パターン
--[[ゲートウェイ>#o7cb8518]]
---集約
---オフロード
---ルーティング
--[[正常性エンドポイント監視>#r913f362]]
--システム間連系
---[[破損対策レイヤー>#ee356f31]]
---[[ストラングラー>#gb7104aa]]
--コンポーネント
---[[アンバサダー>#kd47d078]]
---[[サイドカー>#kf9fc0f6]]
--[[外部構成ストア>#g6bdf9c1]]
***パフォーマンスと拡張性 [#w039903b]
-以下の要件に対応
--要求のピークに対応するスケールアウト
--要求が減少に対応するスケールイン
-以下の要素と関係がある。
--[[データ ストレージ>#e03b2289]]
--[[メッセージング インフラストラクチャ>#td14fd2d]]
-パターン
--[[調整(絞り弁、スロットル)>#r5f048d8]]
--データ配置
---[[テーブルのインデックス作成>#q19a433d]]
---[[マテリアライズド・ビュー>#t9eed998]]
---[[シャーディング>#i8ed3766]]
--非同期タスク
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[優先順位キュー>#tf045f04]]
---[[イベント ソーシング>#gd32eb7b]]
---[[コマンド クエリ責務分離 (CQRS)>#z972b50e]]
---[[コレオグラフィ>#z41a1a75]]
--その他
---[[キャッシュ アサイド>#gb491759]]
---[[静的コンテンツ ホスティング>#t2f1a55e]]
***回復性 [#m9fc9b20]
-迅速かつ効率的に障害を検出して復旧する。
-パターン
--[[正常性エンドポイント監視>#r913f362]]
--[[Polly系>#t4755eb8]]
---Retry
---Circuit Breaker
---Timeout
---Bulkhead
---Fallback
--非同期タスクと補正
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[リーダー選定>#b5489904]]
---[[Scheduler Agent Supervisor>#d9b6b869]]
---[[補正トランザクション>#d113b16e]]
***セキュリティ [#sd3af2e4]
-悪意のある攻撃からの保護
-機密データの保護
-ユーザ認証と認可(アクセス制御)
-パターン
--[[ゲートキーパー>#r1236eb8]]
--[[バレット キー>#i4f422e4]]
--[[フェデレーション ID>#x070c362]]
**カタログ [#v1bfce15]
***フロントエンド用バックエンド [#f9d59953]
-[[個別サービス・インターフェイス>https://opentouryo.ossc...
-関連のあるパターンとガイダンス
--パターン
---[[ゲートウェイ(集約 / オフロード / ルーティング)>#o7cb...
***[[ゲートキーパー>Web/APの分離#eaab229f]] [#r1236eb8]
-関連のあるパターンとガイダンス
--パターン
---[[バレット キー>#i4f422e4]]
***ゲートウェイ(集約 / オフロード / ルーティング) [#o7cb8...
-[[API Gateway]]のような。
-関連のあるパターンとガイダンス
--パターン
---集約 ⇔ オフロード ⇔ ルーティング
---[[フロントエンド用バックエンド>#f9d59953]]
---[[Polly(Retry, Circuit Breaker, Timeout, Bulkhead, Fal...
***要求チェック [#vbc37c90]
-大きいメッセージを要求チェックとペイロードに分割
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***正常性エンドポイント監視 [#r913f362]
公開されたエンドポイントを通じて外部ツールが定期的に~
アクセスできる機能チェックをアプリケーションに実装。
-HTTP/HTTPS ヘルスチェック的な手法で確認する。
-管理下で無いので、こんな方法しか無いらしい。
-考慮点
--認証
--負荷
--専用エンドポイントの新設
--, etc.
-関連のあるパターンとガイダンス
--インストルメンテーション
---アプリケーション実行時の挙動の監視
---ある種のインシデント改善を自動化
--[[メトリック アラート>Azure Alerts]]通知の受信~
[[メトリック アラート>Azure Alerts]]を作成、表示(受信)...
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***競合コンシューマー [#adeadf05]
-受ける側で"調整"するパターン
-具体例は、[[後述>#m8158a06]]の「非同期処理サービス」。
-関連のあるパターンとガイダンス
--パターン
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[コンピューティング リソース統合>#h0efa234]]
--[[自動スケール>クラウド アプリケーション アーキテクチャ...
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***調整(絞り弁、スロットル) [#r5f048d8]
-受ける側で"制限"するパターン
--絞り弁 = Throttle (スロットル)
--[[slow_down>CIBA(Client Initiated Backchannel Authentic...
-アプリケーションの
--インスタンス
--個々のテナント
--またはサービス全体によって使用されるリソース
>の使用量を制御する。
-関連のあるパターンとガイダンス
--パターン
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[優先順位キュー>#tf045f04]]
--([[前述>#r913f362]]の)インストルメンテーション
--サービス・メータリング~
使用しているリソースの計測
--[[自動スケール>クラウド アプリケーション アーキテクチャ...
***[[Polly(Retry, Circuit Breaker, Timeout, Bulkhead, Fal...
-詳しくは、[[Polly>Polly(Retry, Circuit Breaker, Timeout,...
-関連のあるパターンとガイダンス
--Retry ⇔ Circuit Breaker ⇔ Bulkhead
--[[正常性エンドポイント監視>#r913f362]]
--[[調整(絞り弁、スロットル)>#r5f048d8]]
***非同期要求 - 応答 [#i947e3b1]
-HTTP ポーリングを使用
-ポートを開いて非同期コールバックを受信出来ない場合。
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***キュー ベースの負荷平準化 [#m8158a06]
タスクとそのタスクが呼び出すサービスとの間で~
キューを使用して、断続的な大きい負荷を平準化する。
-[[非同期処理サービス>https://opentouryo.osscons.jp/index...
(「"非同期処理サービス"を使え。」とは言っていない)
-関連のあるパターンとガイダンス
--パターン
---[[競合コンシューマー>#adeadf05]]
---[[調整(絞り弁、スロットル)>#r5f048d8]]
--[[メッセージング サービスの選択>クラウド アプリケーショ...
--[[スケーラビリティの向上>参照アーキテクチャ#z6ed15db]]...
***優先順位キュー [#tf045f04]
-[[キュー ベースの負荷平準化>#m8158a06]]に加え、
-優先順位の高い順に受信・処理されるようにする。
-関連のあるパターンとガイダンス
--パターン
---[[競合コンシューマー>#adeadf05]]
---[[調整(絞り弁、スロットル)>#r5f048d8]]
--[[自動スケール>クラウド アプリケーション アーキテクチャ...
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***パブリッシャー/サブスクライバー [#we34db20]
-Microsoft Message Queue (MSMQ)等にあった。
-[[レプリケーション>SQL Server のレプリケーション]]でも利...
-関連のあるパターンとガイダンス
--パターン
---オブザーバー パターン
---メッセージ ブローカー パターン。
--アーキ・ガイド
---[[イベント ドリブン アーキテクチャ>クラウド アプリケー...
---[[メッセージング サービスの選択>クラウド アプリケーシ...
***シーケンシャルなコンボイ [#n889f92a]
-メッセージをキュー システム内のカテゴリにプッシュ
-キュー リスナーが 1 つのカテゴリから一度に 1 つずつロッ...
-異なるカテゴリのメッセージがインターリーブされる場合があ...
***テーブルのインデックス作成 [#q19a433d]
-[[SQL Server のインデックス]]
-セカンダリ・インデックスの無い~
[[NoSQL>https://dotnetdevelopmentinfrastructure.osscons.j...
-関連のあるパターンとガイダンス
--パターン
---[[シャーディング>#i8ed3766]]
---[[マテリアライズド・ビュー>#t9eed998]]
***マテリアライズド・ビュー [#t9eed998]
-コレは知ってるでしょ?
-関連のあるパターンとガイダンス
--パターン
---[[テーブルのインデックス作成>#q19a433d]]
---[[シャーディング>#i8ed3766]]
---[[イベント ソーシング>#gd32eb7b]]
---[[コマンド クエリ責務分離 (CQRS)>#z972b50e]]
***シャーディング [#i8ed3766]
-[[Elastic Scale, Elastic Database Pool]]
-関連のあるパターンとガイダンス
--パターン
---[[テーブルのインデックス作成>#q19a433d]]
---[[マテリアライズド・ビュー>#t9eed998]]
--[[データのパーティション分割>クラウド アプリケーション ...
***イベント ソーシング [#gd32eb7b]
-以下のようなパターン
--追加処理の専用ストアを用意し、
--[[Apache NiFi>https://dotnetdevelopmentinfrastructure.o...
--バッチで[[データレイク → データマート>https://dotnetdev...
>※ もっと業務要素が加わっているモノもある。
-関連のあるパターンとガイダンス
--パターン
---[[マテリアライズド・ビュー>#t9eed998]]
---[[コマンド クエリ責務分離 (CQRS)>#z972b50e]]
---[[補正トランザクション>#d113b16e]]
--[[データのパーティション分割>クラウド アプリケーション ...
***コマンド クエリ責務分離 (CQRS) [#z972b50e]
-データ ストアの読み取り操作と更新操作のデータ モデルを分離
-関連のあるパターンとガイダンス
--パターン
---[[マテリアライズド・ビュー>#t9eed998]]
---[[イベント ソーシング>#gd32eb7b]]
--[[データのパーティション分割>クラウド アプリケーション ...
***補正トランザクション [#d113b16e]
-RDBMSのトランザクション・スコープ外で補正を行う。
-[[ロング・トランザクション(バッチ)>#d56122e0]]で必要に...
--[[リラン可能バッチ的(チェック・ポイントの実装)>https:...
--チェック・ポイントで反映されたデータを取り消すなど。
-関連のあるパターンとガイダンス
--パターン
---[[Scheduler-Agent-Supervisor>#d9b6b869]]
---[[Retry>#t4755eb8]]
***パイプとフィルター [#d56122e0]
-語源は、[[Linuxのパイプとフィルター>https://dotnetdevelo...
-だが、ココでは(、ジョブ・ネット的)、バッチの意味。
-関連のあるパターンとガイダンス
--パターン
---[[競合コンシューマー>#adeadf05]]
---[[補正トランザクション>#d113b16e]]
---[[コンピューティング リソース統合>#h0efa234]]
---冪等性
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***リーダー選定 [#b5489904]
-リーダーとして機能するように、単一のタスク インスタンス...
-リーダー・インスタンスは、下位タスク インスタンスのアク...
-垂直方向・水平方向のケースがあるが、水平方向の場合は、[[...
-関連のあるパターンとガイダンス
--[[自動スケール>クラウド アプリケーション アーキテクチャ...
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***Scheduler Agent Supervisor [#d9b6b869]
-下記要素の協調動作によって処理される。
--Scheduler~
実行されるタスクを構成する手順を準備し、その操作を調整
--Agent~
リモート リソースへのアクセスをカプセル化して呼び出す。
--Supervisor
---Schedulerによって実行されているタスク内の手順の状態を...
---手順の失敗を検出した場合は、復旧または是正アクションの...
-関連のあるパターンとガイダンス
--パターン
---[[補正トランザクション>#d113b16e]]
---[[Retry, Circuit Breaker>#t4755eb8]]
---[[リーダー選定>#b5489904]]
***コレオグラフィ [#z41a1a75]
-オーケストレーターに依存せず、システムの各コンポーネント...
ビジネス トランザクションのワークフローに関する意思決定プ...
-1 つの方法は、非同期メッセージを使用してビジネス操作をコ...
-オーケストレーターに起因するパフォーマンスのボトルネック...
-関連のあるパターンとガイダンス
--パターン
---[[アンバサダー>#kd47d078]]
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[パブリッシャー/サブスクライバー>#we34db20]]
---[[補正トランザクション>#d113b16e]]
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***コンピューティング リソース統合 [#h0efa234]
-複数のタスクを 1 つのコンピューティング単位に統合する。
-コンピューティング単位とは
--仮想マシン
--Cloud Service ロール
--App Service Web アプリ
-[[SCM:Service Control Manager>SCM]]的に~
Azure ファブリック コント ローラーがタスクを管理する。~
(そう言う意味では[[前述>#m8158a06]]の「非同期処理サービ...
-関連のあるパターンとガイダンス
--[[自動スケール>クラウド アプリケーション アーキテクチャ...
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***破損対策レイヤー [#ee356f31]
-新・旧の異なるセマンティクスのシステムを連携する際に~
システム間に挿入するファサード、アダプター レイヤ
-関連のあるパターンとガイダンス
--[[ストラングラー>#gb7104aa]](パターン)
***ストラングラー [#gb7104aa]
-新・旧のバックエンド レガシ システムを段階的に移行する際...
要求をインターセプトするように挿入する、ファサード レイヤ
-関連のあるパターンとガイダンス
--[[破損対策レイヤー>#ee356f31]](パターン)
***アンバサダー [#kd47d078]
-アンバサダーは、
--リモート サービスに要求を送る[[エージェント>#d9b6b869]]...
--ルーティング、サーキット ブレーキ、ログ記録の機能を提供...
-関連のあるパターンとガイダンス
--[[サイドカー>#kf9fc0f6]](パターン)
***サイドカー [#kf9fc0f6]
-別のプロセス(子プロセス、サブ・コンテナ)として実装
-監視、ログ記録、構成、ネットワーク サービスなどの関連す...
-関連のあるパターンとガイダンス
--[[アンバサダー>#kd47d078]](パターン)
***バレット キー [#i4f422e4]
-[[(≒OAuth)>OAuth]]
-関連のあるパターンとガイダンス
--パターン
---[[ゲートキーパー>#r1236eb8]]
---静的コンテンツ ホスティング パターン
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***[[フェデレーション ID>クレームベース認証]] [#x070c362]
***外部構成ストア [#g6bdf9c1]
-アプリケーション展開パッケージから、[[構成情報を>.NET co...
外部ストレージなどの一元管理される場所に移動する。
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
***キャッシュ アサイド [#gb491759]
オンデマンドでデータをデータ ストアからキャッシュに読込
-パフォーマンスが向上する。
-データ ストアからキャッシュ間で整合性の維持が必要
***静的コンテンツ ホスティング [#t2f1a55e]
-静的コンテンツを、クライアントに直接配信できるクラウド ...
-アプリケーションはストレージ サービスの静的コンテンツのU...
-パフォーマンスと可用性を最大化するために、コンテンツ配信...
-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/maste...
*参考 [#c2dfaa70]
**[[参照アーキテクチャ]] [#b453c6db]
**Microsoft Docs [#b508628e]
-クラウド設計パターン - Azure Architecture Center~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
--Cloud Design Patterns
***カテゴリ [#m86d8985]
-可用性のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
-データ管理のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
-設計と実装のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
-管理と監視のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
-メッセージングのパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
-パフォーマンスとスケーラビリティのパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
-回復性のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
-セキュリティのパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patte...
***カタログ [#t00b5522]
-WebAPI
--[[フロントエンド用バックエンド>#f9d59953]]
--[[ゲートキーパー>#r1236eb8]]
--[[ゲートウェイ>#o7cb8518]]
---集約
---オフロード
---ルーティング
-可用性
--[[要求チェック>#vbc37c90]]
--[[正常性エンドポイント監視>#r913f362]]
--サーバ
---[[競合コンシューマー>#adeadf05]]
---[[調整(絞り弁、スロットル)>#r5f048d8]]
--クライアント~
---[[Polly系>#t4755eb8]]~
Retry, Circuit Breaker, Timeout, Bulkhead, Fallback
-非同期
--[[非同期要求 - 応答>#i947e3b1]]
--キュー
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[優先順位キュー>#tf045f04]]
---[[パブリッシャー/サブスクライバー>#we34db20]]
---[[シーケンシャルなコンボイ>#n889f92a]]
-データ
--配置
---[[テーブルのインデックス作成>#q19a433d]]
---[[マテリアライズド・ビュー>#t9eed998]]
---[[シャーディング>#i8ed3766]]
--操作
---[[イベント ソーシング>#gd32eb7b]]
---[[コマンド クエリ責務分離 (CQRS)>#z972b50e]]
---[[補正トランザクション>#d113b16e]]
-タスクの協調動作
--[[パイプとフィルター>#d56122e0]]
--[[コンピューティング リソース統合>#h0efa234]]
--[[リーダー選定>#b5489904]]
--[[Scheduler Agent Supervisor>#d9b6b869]]
--[[コレオグラフィ>#z41a1a75]]
-システム間連系
--[[破損対策レイヤー>#ee356f31]]
--[[ストラングラー>#gb7104aa]]
-コンポーネント
--[[アンバサダー>#kd47d078]]
--[[サイドカー>#kf9fc0f6]]
-セキュリティ
--[[ゲートキーパー>#r1236eb8]]
--[[バレット キー>#i4f422e4]]
--[[フェデレーション ID>#x070c362]]
-その他
--[[外部構成ストア>#g6bdf9c1]]
--[[キャッシュ アサイド>#gb491759]]
--[[静的コンテンツ ホスティング>#t2f1a55e]]
**サンプル(GitHub) [#z590e396]
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: [[:アーキテクチャ]], [[:クラウド系開発]]
ページ名: