「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>アーキテクチャ設計]]

* 目次 [#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.osscons.jp/index.php?%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9#z6b5bb47]]的な。

-関連のあるパターンとガイダンス
--パターン
---[[ゲートウェイ(集約 / オフロード / ルーティング)>#o7cb8518]]

***[[ゲートキーパー>Web/APの分離#eaab229f]] [#r1236eb8]

-関連のあるパターンとガイダンス
--パターン
---[[バレット キー>#i4f422e4]]

***ゲートウェイ(集約 / オフロード / ルーティング) [#o7cb8518]
-[[API Gateway]]のような。

-関連のあるパターンとガイダンス
--パターン
---集約 ⇔ オフロード ⇔ ルーティング
---[[フロントエンド用バックエンド>#f9d59953]]
---[[Polly(Retry, Circuit Breaker, Timeout, Bulkhead, Fallback)>#t4755eb8]]

***要求チェック [#vbc37c90]
-大きいメッセージを要求チェックとペイロードに分割

-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/master/claim-check

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

-HTTP/HTTPS ヘルスチェック的な手法で確認する。

-管理下で無いので、こんな方法しか無いらしい。

-考慮点
--認証
--負荷
--専用エンドポイントの新設
--, etc.

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

--インストルメンテーション
---アプリケーション実行時の挙動の監視
---ある種のインシデント改善を自動化

--メトリック アラート通知の受信~
メトリック アラートを作成、表示(受信)、管理
--[[メトリック アラート>Azure Alerts]]通知の受信~
[[メトリック アラート>Azure Alerts]]を作成、表示(受信)、管理

-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/master/health-endpoint-monitoring

***競合コンシューマー [#adeadf05]
-受ける側で"調整"するパターン
-具体例は、[[後述>#m8158a06]]の「非同期処理サービス」。

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

--パターン
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[コンピューティング リソース統合>#h0efa234]]

--[[自動スケール>クラウド アプリケーション アーキテクチャ ガイド#x277761f]](アーキ・ガイド)

-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/master/competing-consumers

***調整(絞り弁、スロットル) [#r5f048d8]
-受ける側で"制限"するパターン
--絞り弁 = Throttle (スロットル)
--[[slow_down>CIBA(Client Initiated Backchannel Authentication)#z70c2acf]]とか、リクエスト自体を拒否するとか。

-アプリケーションの
--インスタンス
--個々のテナント
--またはサービス全体によって使用されるリソース

>の使用量を制御する。

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

--パターン
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[優先順位キュー>#tf045f04]]

--([[前述>#r913f362]]の)インストルメンテーション

--サービス・メータリング~
使用しているリソースの計測

--[[自動スケール>クラウド アプリケーション アーキテクチャ ガイド#x277761f]](アーキ・ガイド)

***[[Polly(Retry, Circuit Breaker, Timeout, Bulkhead, Fallback)]] [#t4755eb8]
-詳しくは、[[Polly>Polly(Retry, Circuit Breaker, Timeout, Bulkhead, Fallback)]]の項を参照

-関連のあるパターンとガイダンス
--Retry ⇔ Circuit Breaker ⇔ Bulkhead
--[[正常性エンドポイント監視>#r913f362]]
--[[調整(絞り弁、スロットル)>#r5f048d8]]

***非同期要求 - 応答 [#i947e3b1]
-HTTP ポーリングを使用
-ポートを開いて非同期コールバックを受信出来ない場合。

-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/master/async-request-reply

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

-[[非同期処理サービス>https://opentouryo.osscons.jp/index.php?%E9%9D%9E%E5%90%8C%E6%9C%9F%E5%87%A6%E7%90%86%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9]]でやってるようなことをやれという話。~
(「"非同期処理サービス"を使え。」とは言っていない)

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

--パターン
---[[競合コンシューマー>#adeadf05]]
---[[調整(絞り弁、スロットル)>#r5f048d8]]

--[[メッセージング サービスの選択>クラウド アプリケーション アーキテクチャ ガイド#g243b803]](アーキ・ガイド)
--[[スケーラビリティの向上>参照アーキテクチャ#z6ed15db]](参照アーキ)

***優先順位キュー [#tf045f04]
-[[キュー ベースの負荷平準化>#m8158a06]]に加え、
-優先順位の高い順に受信・処理されるようにする。

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

--パターン
---[[競合コンシューマー>#adeadf05]]
---[[調整(絞り弁、スロットル)>#r5f048d8]]

--[[自動スケール>クラウド アプリケーション アーキテクチャ ガイド#x277761f]](アーキ・ガイド)

-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/master/priority-queue

***パブリッシャー/サブスクライバー [#we34db20]
-Microsoft Message Queue (MSMQ)等にあった。
-[[レプリケーション>SQL Server のレプリケーション]]でも利用されている。

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

--パターン
---オブザーバー パターン
---メッセージ ブローカー パターン。

--アーキ・ガイド
---[[イベント ドリブン アーキテクチャ>クラウド アプリケーション アーキテクチャ ガイド#i151f65f]]
---[[メッセージング サービスの選択>クラウド アプリケーション アーキテクチャ ガイド#g243b803]]

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

***テーブルのインデックス作成 [#q19a433d]
-[[SQL Server のインデックス]]
-セカンダリ・インデックスの無い~
[[NoSQL>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?NoSQL]]ではインデックス・テーブルを作成

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

--パターン
---[[シャーディング>#i8ed3766]]
---[[マテリアライズド・ビュー>#t9eed998]]

***マテリアライズド・ビュー [#t9eed998]
-コレは知ってるでしょ?

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

--パターン
---[[テーブルのインデックス作成>#q19a433d]]
---[[シャーディング>#i8ed3766]]
---[[イベント ソーシング>#gd32eb7b]]
---[[コマンド クエリ責務分離 (CQRS)>#z972b50e]]

***シャーディング [#i8ed3766]
-[[Elastic Scale, Elastic Database Pool]]

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

--パターン
---[[テーブルのインデックス作成>#q19a433d]]
---[[マテリアライズド・ビュー>#t9eed998]]

--[[データのパーティション分割>クラウド アプリケーション アーキテクチャ ガイド#c1a7c7a9]](アーキ・ガイド)

***イベント ソーシング [#gd32eb7b]
-以下のようなパターン
--追加処理の専用ストアを用意し、
--[[Apache NiFi>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Apache%20NiFi]]を使ってデータをエントリし、
--バッチで[[データレイク → データマート>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E3%83%93%E3%83%83%E3%82%B0%E3%83%87%E3%83%BC%E3%82%BF#o2e72d99]]へ。

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

-関連のあるパターンとガイダンス
--パターン
---[[マテリアライズド・ビュー>#t9eed998]]
---[[コマンド クエリ責務分離 (CQRS)>#z972b50e]]
---[[補正トランザクション>#d113b16e]]

--[[データのパーティション分割>クラウド アプリケーション アーキテクチャ ガイド#c1a7c7a9]](アーキ・ガイド)

***コマンド クエリ責務分離 (CQRS) [#z972b50e]
-データ ストアの読み取り操作と更新操作のデータ モデルを分離

-関連のあるパターンとガイダンス
--パターン
---[[マテリアライズド・ビュー>#t9eed998]]
---[[イベント ソーシング>#gd32eb7b]]

--[[データのパーティション分割>クラウド アプリケーション アーキテクチャ ガイド#c1a7c7a9]](アーキ・ガイド)

***補正トランザクション [#d113b16e]
-RDBMSのトランザクション・スコープ外で補正を行う。

-[[ロング・トランザクション(バッチ)>#d56122e0]]で必要になる。

--[[リラン可能バッチ的(チェック・ポイントの実装)>https://opentouryo.osscons.jp/index.php?%E3%83%90%E3%83%83%E3%83%81%E5%87%A6%E7%90%86%E6%96%B9%E5%BC%8F#y183f3c4]]

--チェック・ポイントで反映されたデータを取り消すなど。

-関連のあるパターンとガイダンス
--パターン
---[[Scheduler-Agent-Supervisor>#d9b6b869]]
---[[Retry>#t4755eb8]]

***パイプとフィルター [#d56122e0]
-語源は、[[Linuxのパイプとフィルター>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Linux%E3%81%AE%E5%90%84%E7%A8%AE%20%E5%9F%BA%E7%A4%8E#z4c3c029]]

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

-関連のあるパターンとガイダンス
--パターン
---[[競合コンシューマー>#adeadf05]]
---[[補正トランザクション>#d113b16e]]
---[[コンピューティング リソース統合>#h0efa234]]
---冪等性

-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/master/pipes-and-filters

***リーダー選定 [#b5489904]
-リーダーとして機能するように、単一のタスク インスタンスが選定
-リーダー・インスタンスは、下位タスク インスタンスのアクションを調整
-垂直方向・水平方向のケースがあるが、水平方向の場合は、[[MapReduce>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Hadoop#b9ef92ab]]のような。

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

--[[自動スケール>クラウド アプリケーション アーキテクチャ ガイド#x277761f]](アーキ・ガイド)

-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/master/leader-election

***Scheduler Agent Supervisor [#d9b6b869]
-下記要素の協調動作によって処理される。

--Scheduler~
実行されるタスクを構成する手順を準備し、その操作を調整

--Agent~
リモート リソースへのアクセスをカプセル化して呼び出す。

--Supervisor
---Schedulerによって実行されているタスク内の手順の状態を監視
---手順の失敗を検出した場合は、復旧または是正アクションの Agent を準備する。

-関連のあるパターンとガイダンス
--パターン
---[[補正トランザクション>#d113b16e]]
---[[Retry, Circuit Breaker>#t4755eb8]]
---[[リーダー選定>#b5489904]]

***コレオグラフィ [#z41a1a75]
-オーケストレーターに依存せず、システムの各コンポーネントが、~
ビジネス トランザクションのワークフローに関する意思決定プロセスに参加する。

-1 つの方法は、非同期メッセージを使用してビジネス操作をコーディネートする。

-オーケストレーターに起因するパフォーマンスのボトルネックを解消する。

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

--パターン
---[[アンバサダー>#kd47d078]]
---[[キュー ベースの負荷平準化>#m8158a06]]
---[[パブリッシャー/サブスクライバー>#we34db20]]
---[[補正トランザクション>#d113b16e]]

-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/master/choreography

***コンピューティング リソース統合 [#h0efa234]
-複数のタスクを 1 つのコンピューティング単位に統合する。

-コンピューティング単位とは
--仮想マシン
--Cloud Service ロール
--App Service Web アプリ

-[[SCM:Service Control Manager>SCM]]的に~
Azure ファブリック コント ローラーがタスクを管理する。~
(そう言う意味では[[前述>#m8158a06]]の「非同期処理サービス」的ではある)

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

--[[自動スケール>クラウド アプリケーション アーキテクチャ ガイド#x277761f]](アーキ・ガイド)

-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/master/compute-resource-consolidation

***破損対策レイヤー [#ee356f31]
-新・旧の異なるセマンティクスのシステムを連携する際に~
システム間に挿入するファサード、アダプター レイヤ

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

--[[ストラングラー>#gb7104aa]](パターン)

***ストラングラー [#gb7104aa]
-新・旧のバックエンド レガシ システムを段階的に移行する際に~
要求をインターセプトするように挿入する、ファサード レイヤ

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

--[[破損対策レイヤー>#ee356f31]](パターン)

***アンバサダー [#kd47d078]
-アンバサダーは、
--リモート サービスに要求を送る[[エージェント>#d9b6b869]]のようなもの。
--ルーティング、サーキット ブレーキ、ログ記録の機能を提供する。

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

--[[サイドカー>#kf9fc0f6]](パターン)

***サイドカー [#kf9fc0f6]
-別のプロセス(子プロセス、サブ・コンテナ)として実装
-監視、ログ記録、構成、ネットワーク サービスなどの関連する機能を提供

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

--[[アンバサダー>#kd47d078]](パターン)

***バレット キー [#i4f422e4]
-[[(≒OAuth)>OAuth]]

-関連のあるパターンとガイダンス
--パターン
---[[ゲートキーパー>#r1236eb8]]
---静的コンテンツ ホスティング パターン

-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/master/valet-key

***[[フェデレーション ID>クレームベース認証]] [#x070c362]

***外部構成ストア [#g6bdf9c1]
-アプリケーション展開パッケージから、[[構成情報を>.NET config]]を~
外部ストレージなどの一元管理される場所に移動する。

-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/master/external-configuration-store

***キャッシュ アサイド [#gb491759]
オンデマンドでデータをデータ ストアからキャッシュに読込
-パフォーマンスが向上する。
-データ ストアからキャッシュ間で整合性の維持が必要

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

-サンプル~
https://github.com/mspnp/cloud-design-patterns/tree/master/static-content-hosting

*参考 [#c2dfaa70]

**[[参照アーキテクチャ]] [#b453c6db]

**Microsoft Docs [#b508628e]
-クラウド設計パターン - Azure Architecture Center~
https://docs.microsoft.com/ja-jp/azure/architecture/patterns/

--Cloud Design Patterns

***カテゴリ [#m86d8985]
-可用性のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patterns/category/availability
-データ管理のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patterns/category/data-management
-設計と実装のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patterns/category/design-implementation
-管理と監視のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patterns/category/management-monitoring
-メッセージングのパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patterns/category/messaging
-パフォーマンスとスケーラビリティのパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patterns/category/performance-scalability
-回復性のパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patterns/category/resiliency
-セキュリティのパターン~
https://docs.microsoft.com/ja-jp/azure/architecture/patterns/category/security

***カタログ [#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: [[:アーキテクチャ]], [[:クラウド系開発]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS