クラウド アプリケーション アーキテクチャ ガイド
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>アーキテクチャ設計]]
* 目次 [#h6747479]
#contents
*概要 [#w7763973]
-[[参考>#t8f6cd32]]から目次を抜いて体系化した。
-結構、網羅が出来て来た(オンデマンドで追記予定)。
*詳細 [#gaec9e0b]
以下のような立て付けになっている。
**アーキテクチャ スタイル [#z4be5a2f]
***ビッグ コンピューティング [#y5a64662]
Azure Batch (HPC) 推しらしい。
***[[ビッグ データ>https://dotnetdevelopmentinfrastructur...
***イベントドリブン アーキテクチャ [#i151f65f]
-[[パブリッシュ/サブスクライブ>クラウド設計パターン#we34d...
-イベント ストリーム モデル
--イベントがログに書き込まれる。
--クライアントはいつでも参加でき、イベントを再生
--ストリーム内でクライアントの位置を進めるのは、クライア...
***マイクロサービス [#n23c0f60]
-真面目にやると沼。
-SOAの[[REST WebAPI>#n2ef0ae7]]版(雑)
***n 層アプリケーション [#z12e0109]
アプリケーションを論理層と物理層に分離
***Web キューワーカー [#n91ccc69]
-Webロール、Workerロール
-必要に応じて、キュー
**設計原則 [#f09541eb]
***自動修復機能の設計 [#qe6679ef]
-[[Polly>Polly(Retry, Circuit Breaker, Timeout, Bulkhead,...
-[[フェイル・オーバー>高信頼性設計のポイント#t09e8fc8]]
-パターン
--[[補正トランザクション>クラウド設計パターン#d113b16e]]
--[[リーダー選択>クラウド設計パターン#b5489904]]
-その他
--フォールト挿入でテストする。
--Chaos エンジニアリングを利用する。
***すべてを冗長化 [#qfea7327]
-[[従来型のフェイル・オーバーに加え。>#qe6679ef]]
-[[システム・データのパーティション分割>#c1a7c7a9]]
-複数のリージョンにデプロイ
--geo レプリケーション
--[[Traffic Manager>Azureの高可用性設計#wfcf8512]]
***調整を最小限に抑える [#nb44cea4]
-トランザクション(ACID特性)以外の実現方法を検討する。
--[[楽観排他>DBMSのロック・分離戦略と同時実行制御#fcfbae6...
--[[補正トランザクション>クラウド設計パターン#d113b16e]]
--[[データのパーティション分割>#c1a7c7a9]]
-その他
--ドメイン イベントと同期
--読取 / 書込ワークロードの競合を削減
---[[イベント ソーシング>クラウド設計パターン#gd32eb7b]]
---[[コマンド クエリ責務分離 (CQRS)>クラウド設計パターン#...
--別のインスタンス
---冪等操作の設計
---[[リーダー選定>クラウド設計パターン#b5489904]]
--並列の分散アルゴリズム(ビッグデータ系の分散)
***スケールアウトのための設計 [#b899f21a]
垂直方向・水平方向にスケールできるように設計
-垂直方向~
システム、アプリで構成する。
--ボトルネックの特定、ワークロードの分解など。
--タスクのオフロード(バックグラウンド・ジョブ化)
-水平方向~
クラウド機能で構成する。
--サーバー・ステートレス
--スケールアウト・スケールイン
--[[自動スケール>#x277761f]]
***パーティション分割による制限の回避 [#c1a7c7a9]
スケール・アップに限界があるので、パーティション分割。
-システム
--データベース
--キューまたはメッセージ バス
--App Service Web アプリ
-データベース
--行方向
---[[SQL Server パーティション分割]]
---[[シャーディング>クラウド設計パターン#i8ed3766]]
--列方向~
簡単に言うとテーブルの分割
--機能的~
請求書テーブルと製品在庫テーブルを分割
***操作に合わせた設計 [#d77bdaf2]
運用チームが必要なツールを得られるようにアプリケーション...
***管理対象サービスの使用 [#z6a5c300]
なるべく、[[PaaS / FaaS, SaaS>#c4803bbc]]を選択。
***ジョブに最適なデータ ストアの使用 [#m8572b6f]
-[[データ ストアの選択>#j2ff0ab1]]
-[[調整を最小限に抑える>#nb44cea4]]
-その他
--開発チームのスキルセット
--コンテキスト境界を確認(DDD)
***改良を見込んだ設計 [#z58393db]
SOAっぽい(疎結合)。
-高凝集と疎結合
--サービスを個別にデプロイ
--共通機能を専用のサービスにオフロード
-ゲートウェイにはドメイン ナレッジを実装しない
--ドメイン ナレッジをカプセル化
--オープン インターフェイスを公開
--非同期メッセージングを使用
-[[クリーン・アーキテクチャ>https://dotnetdevelopmentinfr...
(抽象インフラストラクチャをドメイン ロジックと分離)
***ビジネス ニーズに合わせた構築 [#ded084da]
-成長に対応可能な計画とコストの管理
-目標復旧時間 (RTO)、目標復旧時点 (RPO)、最大許容停止時間...
-サービス レベル アグリーメント (SLA) とサービス レベル目...
-要件
--機能要件と非機能要件
--ワークロード別に分けて要件を判断
-ビジネス ドメインを中心にアプリケーションをモデル化(DDD)
**技術選定 [#k95d0d83]
***コンピューティング サービスの選択 [#c4803bbc]
適切なモンを使えと。
-[[ホスティング環境>Azureの高可用性設計#j9978891]]
-参照アーキテクチャ
--[[IaaS>参照アーキテクチャ#e7e8cd61]]
--[[PaaS / FaaS>参照アーキテクチャ#e426fc8a]]
--[[SaaS>参照アーキテクチャ#p371a1a7]]
***データ ストアの選択 [#j2ff0ab1]
適切なモンを使えと。
-RDBMS([[SQL Server]]など)
-[[NoSQL>https://dotnetdevelopmentinfrastructure.osscons....
-, etc.
※ [[多言語パーシステンス>#gc2d31ea]]と言うらしい。
***負荷分散サービスの選択 [#n234e875]
負荷分散については、[[NLB]]の項が参考になる。~
([[NLB]]を使えとは言っていない)
***メッセージング サービスの選択 [#g243b803]
色々あるらしい。
-Azure Service Bus
-Event Grid
-Event Hubs
**ベスト・プラクティス [#lc27f6c5]
***API 設計 [#n2ef0ae7]
-[[WebAPI]] > [[REST]]
-[[非同期操作>クラウド設計パターン#i947e3b1]]([[CIBA>CIBA...
-データ処理~
(ネットワーク帯域幅と処理能力の有効活用)
--フィルター or ページング処理
--[[HATEOAS>#nccfbb60]]
--バイナリ リソースの部分的な応答
***API 実装 [#d9c56aed]
-サーバー実装
--[[スケーラビリティ>#b899f21a]]、[[可用性>#qe6679ef]]、[...
---非同期サポート
---ステートレス
---クライアントの~
・追跡と調整~
・HTTP Keep-Aliveの管理
--Web API
---テスト
---公開と管理([[Azure API Management]])
-クライアント実装
--[[Polly>Polly(Retry, Circuit Breaker, Timeout, Bulkhead...
--クライアント SDKの開発
-[[API Gateway]]の利用
--[[一般的機能>https://dotnetdevelopmentinfrastructure.os...
--監視
---[[Azure API Management]]
---[[ASP.NET Application Insights>Azureの監視と管理#j415f...
-その他
--ドキュメント
***自動スケール [#x277761f]
水平方向のスケーリング
-[[アプリケーション設計>#b899f21a]]
-クラウド機能の活用
--[[PaaS組込の機能>#c4803bbc]]
--Azure Monitor(上記のPaaSと組み合わせて利用)
-関連のあるパターンとガイダンス
--パターン
---[[競合コンシューマー パターン>クラウド設計パターン#m81...
---[[スロットル パターン>クラウド設計パターン#r5f048d8]]
--[[監視と診断>#mecb66f4]](アーキ・ガイド)
***バックグラウンド ジョブ [#a1ddbf3e]
-トリガ
--イベント ドリブン トリガー
--スケジュール ドリブン トリガー。
-その他
--結果の返送方法
--[[ホスティング環境>#c4803bbc]]
--[[パーティション分割(システム)>#c1a7c7a9]]
--競合(リソース)
--調整、回復性~
タスクの協調動作と補正
---[[パイプとフィルター>クラウド設計パターン#d56122e0]]
---[[Scheduler Agent Supervisor>クラウド設計パターン#d9b6...
---[[補正トランザクション>クラウド設計パターン#d113b16e]]
---冪等性
--スケーリング
-関連のあるパターンとガイダンス
--[[キュー ベースの負荷平準化>クラウド設計パターン#m8158a...
--[[優先順位キュー パターン>クラウド設計パターン#r5f048d8]]
***キャッシュ [#v32fc794]
-注意点
--高可用性の実装、スケーラビリティ・パフォーマンスの向上
--コンカレンシーの管理、最終的な整合性
---データをキャッシュするタイミングを決める
---データを効率的にキャッシュする方法を決める
---非常に動的なデータをキャッシュする
---キャッシュ内のデータの有効期限を管理する
---クライアント側キャッシュ内のデータを無効にする
-[[Redis Cache>https://dotnetdevelopmentinfrastructure.os...
***Content Delivery Network (CDN) [#tdd6c563]
-ルーティングとバージョン管理
-キャッシュ制御
-セキュリティ
-CDN フォールバック
***データのパーティション分割 [#o8cf4cf1]
-パーティションの設計
--水平的パーティション分割 (行方向、シャーディング)
--垂直的パーティション分割(列方向)
--機能的パーティション分割(機能的)
-関連のあるパターンとガイダンス
--[[テーブルのインデックス作成>クラウド設計パターン#q19a4...
--[[マテリアライズド・ビュー>クラウド設計パターン#t9eed99...
--[[シャーディング>クラウド設計パターン#i8ed3766]]
***データのパーティション分割戦略 (サービスごと) [#x7539a...
-Azure SQL Database のパーティション分割
-Azure Table Storage のパーティション分割
-Azure Blob Storage のパーティション分割
-Azure Queue Storage のパーティション分割
-Azure Service Bus のパーティション分割
-Cosmos DB のパーティション分割
-Azure Search のパーティション分割
-Azure Cache for Redis のパーティション分割
-Azure Service Fabric のパーティション分割
-Azure Event Hubs のパーティション分割
***デプロイ スタンプ [#rfa6ef1d]
-データ ストアを含め、アプリケーション コンポーネントの複...
-個々のコピーは "スタンプ" と呼ばれ、"サービス ユニット" ...
-このアプローチにより、
--顧客データを分離でき、
--ソリューションのスケーラビリティが向上し、
--インスタンスを複数のリージョンにデプロイすることが可能...
-自動化された完全に反復可能なデプロイ プロセスを使用する
***監視と診断 [#mecb66f4]
-正常性の監視
-可用性の監視
-パフォーマンスの監視
-セキュリティの監視
-SLA の監視
-ユーザー操作の監査
-利用状況の監視
-問題追跡
-操作のトレース
-リリースのデバッグ
-監視と診断のパイプライン
-監視と診断のデータ ソース
-アプリケーションのインストルメント化
-データの収集と保存
-データの分析と問題の診断
-データの視覚化とアラートの生成
***特定のサービスの再試行ガイダンス [#ga1c9efc]
-Azure サービスの再試行機能~
https://docs.microsoft.com/ja-jp/azure/architecture/best-...
***一時的な障害の処理 [#ea4840f2]
-標準の再試行機構が存在するかどうかを調べる。
-操作を再試行するのが妥当かどうかを判断する。
-適切な再試行回数と間隔を決める。
-アンチパターンを避ける。
-再試行の戦略と実装をテストする。
-再試行ポリシーの構成を管理する。
-一過性の障害と一過性ではない障害を記録、追跡する。
-絶えず失敗する操作に対処する。
**チューニング [#sf92174b]
-テレメトリでメトリックを収集できるようコードをインストル...
-平均値によって、外れ値が解らなくなる可能性があるので、~
90/95/99 パーセンタイルパーセンタイル値を閾値にも監視する。
-一度に1つのボトルネックに取り組む~
(ボトルネックを取り除くと、次の別のボトルネックが明らか...
-エラーと再試行は、パフォーマンスに大きな影響を与える可能...
-並列、分散化できる可能性を探す([[パーティション分割>#c1...
--1 つの操作を包括的にエンドツーエンドで把握するのは困難...
--一貫性のあるビューを取得するにはログとメトリックを 1 か...
--自動スケールは、
---基の問題が解らなくなる可能性がある。
---また、スケールアウト・スケールインの閾値も解らなくなる。
--カスケード エラー
---エラーが連鎖して根本原因とは~
異なるコンポーネントでシグナルが現れる
---上流のエラーが原因で下流で障害が発生する。
***分散トランザクション [#pe656b8c]
https://docs.microsoft.com/ja-jp/azure/architecture/perfo...
***複数のバックエンド サービス [#a97a228f]
https://docs.microsoft.com/ja-jp/azure/architecture/perfo...
***イベントのストリーミング [#zabfc6e8]
https://docs.microsoft.com/ja-jp/azure/architecture/perfo...
***アンチ・パターン [#ncdca084]
-ビジー状態のデータベース
-ビジー状態のフロント エンド
-頻度の高い I/O
-余分なフェッチ
-不適切なインスタンス化
-モノリシック永続化
-キャッシュなし
-同期 I/O
**サービス毎 [#l2f69b36]
***[[Azure IoT>Microsoft Azure IoT#u9e76988]] [#daa49ba8]
*参考 [#t8f6cd32]
**Microsoft Docs [#if55fe9b]
-Azure Architecture Center
--Azure アプリケーション アーキテクチャ ガイド~
https://docs.microsoft.com/ja-jp/azure/architecture/guide/
***アーキテクチャ スタイル [#d27a4c5c]
https://docs.microsoft.com/ja-jp/azure/architecture/guide...
***10 の設計原則 [#scc533d0]
https://docs.microsoft.com/ja-jp/azure/architecture/guide...
***技術選定 [#a6bb1af4]
https://docs.microsoft.com/ja-jp/azure/architecture/guide...
***ベスト・プラクティス [#w3bc7d7e]
https://docs.microsoft.com/ja-jp/azure/architecture/best-...
***チューニング [#p29c3cc5]
https://docs.microsoft.com/ja-jp/azure/architecture/perfo...
**その他 [#j1a18824]
***多言語パーシステンス [#gc2d31ea]
-Scott Leberknight氏、多言語パーシステンスについて語る~
https://www.infoq.com/jp/news/2009/08/leberknight-polyglo...
***HATEOAS [#nccfbb60]
-RESTFul APIsにおいてHATEOASを使用する利点~
https://www.infoq.com/jp/news/2009/04/hateoas-restful-api...
-RailsのAPIにHATEOASを散りばめてみる : RESTの拡張、HATEOA...
https://postd.cc/sprinkle-some-hateoas-on-your-rails-apis/
----
Tags: [[:アーキテクチャ]], [[:クラウド系開発]]
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>アーキテクチャ設計]]
* 目次 [#h6747479]
#contents
*概要 [#w7763973]
-[[参考>#t8f6cd32]]から目次を抜いて体系化した。
-結構、網羅が出来て来た(オンデマンドで追記予定)。
*詳細 [#gaec9e0b]
以下のような立て付けになっている。
**アーキテクチャ スタイル [#z4be5a2f]
***ビッグ コンピューティング [#y5a64662]
Azure Batch (HPC) 推しらしい。
***[[ビッグ データ>https://dotnetdevelopmentinfrastructur...
***イベントドリブン アーキテクチャ [#i151f65f]
-[[パブリッシュ/サブスクライブ>クラウド設計パターン#we34d...
-イベント ストリーム モデル
--イベントがログに書き込まれる。
--クライアントはいつでも参加でき、イベントを再生
--ストリーム内でクライアントの位置を進めるのは、クライア...
***マイクロサービス [#n23c0f60]
-真面目にやると沼。
-SOAの[[REST WebAPI>#n2ef0ae7]]版(雑)
***n 層アプリケーション [#z12e0109]
アプリケーションを論理層と物理層に分離
***Web キューワーカー [#n91ccc69]
-Webロール、Workerロール
-必要に応じて、キュー
**設計原則 [#f09541eb]
***自動修復機能の設計 [#qe6679ef]
-[[Polly>Polly(Retry, Circuit Breaker, Timeout, Bulkhead,...
-[[フェイル・オーバー>高信頼性設計のポイント#t09e8fc8]]
-パターン
--[[補正トランザクション>クラウド設計パターン#d113b16e]]
--[[リーダー選択>クラウド設計パターン#b5489904]]
-その他
--フォールト挿入でテストする。
--Chaos エンジニアリングを利用する。
***すべてを冗長化 [#qfea7327]
-[[従来型のフェイル・オーバーに加え。>#qe6679ef]]
-[[システム・データのパーティション分割>#c1a7c7a9]]
-複数のリージョンにデプロイ
--geo レプリケーション
--[[Traffic Manager>Azureの高可用性設計#wfcf8512]]
***調整を最小限に抑える [#nb44cea4]
-トランザクション(ACID特性)以外の実現方法を検討する。
--[[楽観排他>DBMSのロック・分離戦略と同時実行制御#fcfbae6...
--[[補正トランザクション>クラウド設計パターン#d113b16e]]
--[[データのパーティション分割>#c1a7c7a9]]
-その他
--ドメイン イベントと同期
--読取 / 書込ワークロードの競合を削減
---[[イベント ソーシング>クラウド設計パターン#gd32eb7b]]
---[[コマンド クエリ責務分離 (CQRS)>クラウド設計パターン#...
--別のインスタンス
---冪等操作の設計
---[[リーダー選定>クラウド設計パターン#b5489904]]
--並列の分散アルゴリズム(ビッグデータ系の分散)
***スケールアウトのための設計 [#b899f21a]
垂直方向・水平方向にスケールできるように設計
-垂直方向~
システム、アプリで構成する。
--ボトルネックの特定、ワークロードの分解など。
--タスクのオフロード(バックグラウンド・ジョブ化)
-水平方向~
クラウド機能で構成する。
--サーバー・ステートレス
--スケールアウト・スケールイン
--[[自動スケール>#x277761f]]
***パーティション分割による制限の回避 [#c1a7c7a9]
スケール・アップに限界があるので、パーティション分割。
-システム
--データベース
--キューまたはメッセージ バス
--App Service Web アプリ
-データベース
--行方向
---[[SQL Server パーティション分割]]
---[[シャーディング>クラウド設計パターン#i8ed3766]]
--列方向~
簡単に言うとテーブルの分割
--機能的~
請求書テーブルと製品在庫テーブルを分割
***操作に合わせた設計 [#d77bdaf2]
運用チームが必要なツールを得られるようにアプリケーション...
***管理対象サービスの使用 [#z6a5c300]
なるべく、[[PaaS / FaaS, SaaS>#c4803bbc]]を選択。
***ジョブに最適なデータ ストアの使用 [#m8572b6f]
-[[データ ストアの選択>#j2ff0ab1]]
-[[調整を最小限に抑える>#nb44cea4]]
-その他
--開発チームのスキルセット
--コンテキスト境界を確認(DDD)
***改良を見込んだ設計 [#z58393db]
SOAっぽい(疎結合)。
-高凝集と疎結合
--サービスを個別にデプロイ
--共通機能を専用のサービスにオフロード
-ゲートウェイにはドメイン ナレッジを実装しない
--ドメイン ナレッジをカプセル化
--オープン インターフェイスを公開
--非同期メッセージングを使用
-[[クリーン・アーキテクチャ>https://dotnetdevelopmentinfr...
(抽象インフラストラクチャをドメイン ロジックと分離)
***ビジネス ニーズに合わせた構築 [#ded084da]
-成長に対応可能な計画とコストの管理
-目標復旧時間 (RTO)、目標復旧時点 (RPO)、最大許容停止時間...
-サービス レベル アグリーメント (SLA) とサービス レベル目...
-要件
--機能要件と非機能要件
--ワークロード別に分けて要件を判断
-ビジネス ドメインを中心にアプリケーションをモデル化(DDD)
**技術選定 [#k95d0d83]
***コンピューティング サービスの選択 [#c4803bbc]
適切なモンを使えと。
-[[ホスティング環境>Azureの高可用性設計#j9978891]]
-参照アーキテクチャ
--[[IaaS>参照アーキテクチャ#e7e8cd61]]
--[[PaaS / FaaS>参照アーキテクチャ#e426fc8a]]
--[[SaaS>参照アーキテクチャ#p371a1a7]]
***データ ストアの選択 [#j2ff0ab1]
適切なモンを使えと。
-RDBMS([[SQL Server]]など)
-[[NoSQL>https://dotnetdevelopmentinfrastructure.osscons....
-, etc.
※ [[多言語パーシステンス>#gc2d31ea]]と言うらしい。
***負荷分散サービスの選択 [#n234e875]
負荷分散については、[[NLB]]の項が参考になる。~
([[NLB]]を使えとは言っていない)
***メッセージング サービスの選択 [#g243b803]
色々あるらしい。
-Azure Service Bus
-Event Grid
-Event Hubs
**ベスト・プラクティス [#lc27f6c5]
***API 設計 [#n2ef0ae7]
-[[WebAPI]] > [[REST]]
-[[非同期操作>クラウド設計パターン#i947e3b1]]([[CIBA>CIBA...
-データ処理~
(ネットワーク帯域幅と処理能力の有効活用)
--フィルター or ページング処理
--[[HATEOAS>#nccfbb60]]
--バイナリ リソースの部分的な応答
***API 実装 [#d9c56aed]
-サーバー実装
--[[スケーラビリティ>#b899f21a]]、[[可用性>#qe6679ef]]、[...
---非同期サポート
---ステートレス
---クライアントの~
・追跡と調整~
・HTTP Keep-Aliveの管理
--Web API
---テスト
---公開と管理([[Azure API Management]])
-クライアント実装
--[[Polly>Polly(Retry, Circuit Breaker, Timeout, Bulkhead...
--クライアント SDKの開発
-[[API Gateway]]の利用
--[[一般的機能>https://dotnetdevelopmentinfrastructure.os...
--監視
---[[Azure API Management]]
---[[ASP.NET Application Insights>Azureの監視と管理#j415f...
-その他
--ドキュメント
***自動スケール [#x277761f]
水平方向のスケーリング
-[[アプリケーション設計>#b899f21a]]
-クラウド機能の活用
--[[PaaS組込の機能>#c4803bbc]]
--Azure Monitor(上記のPaaSと組み合わせて利用)
-関連のあるパターンとガイダンス
--パターン
---[[競合コンシューマー パターン>クラウド設計パターン#m81...
---[[スロットル パターン>クラウド設計パターン#r5f048d8]]
--[[監視と診断>#mecb66f4]](アーキ・ガイド)
***バックグラウンド ジョブ [#a1ddbf3e]
-トリガ
--イベント ドリブン トリガー
--スケジュール ドリブン トリガー。
-その他
--結果の返送方法
--[[ホスティング環境>#c4803bbc]]
--[[パーティション分割(システム)>#c1a7c7a9]]
--競合(リソース)
--調整、回復性~
タスクの協調動作と補正
---[[パイプとフィルター>クラウド設計パターン#d56122e0]]
---[[Scheduler Agent Supervisor>クラウド設計パターン#d9b6...
---[[補正トランザクション>クラウド設計パターン#d113b16e]]
---冪等性
--スケーリング
-関連のあるパターンとガイダンス
--[[キュー ベースの負荷平準化>クラウド設計パターン#m8158a...
--[[優先順位キュー パターン>クラウド設計パターン#r5f048d8]]
***キャッシュ [#v32fc794]
-注意点
--高可用性の実装、スケーラビリティ・パフォーマンスの向上
--コンカレンシーの管理、最終的な整合性
---データをキャッシュするタイミングを決める
---データを効率的にキャッシュする方法を決める
---非常に動的なデータをキャッシュする
---キャッシュ内のデータの有効期限を管理する
---クライアント側キャッシュ内のデータを無効にする
-[[Redis Cache>https://dotnetdevelopmentinfrastructure.os...
***Content Delivery Network (CDN) [#tdd6c563]
-ルーティングとバージョン管理
-キャッシュ制御
-セキュリティ
-CDN フォールバック
***データのパーティション分割 [#o8cf4cf1]
-パーティションの設計
--水平的パーティション分割 (行方向、シャーディング)
--垂直的パーティション分割(列方向)
--機能的パーティション分割(機能的)
-関連のあるパターンとガイダンス
--[[テーブルのインデックス作成>クラウド設計パターン#q19a4...
--[[マテリアライズド・ビュー>クラウド設計パターン#t9eed99...
--[[シャーディング>クラウド設計パターン#i8ed3766]]
***データのパーティション分割戦略 (サービスごと) [#x7539a...
-Azure SQL Database のパーティション分割
-Azure Table Storage のパーティション分割
-Azure Blob Storage のパーティション分割
-Azure Queue Storage のパーティション分割
-Azure Service Bus のパーティション分割
-Cosmos DB のパーティション分割
-Azure Search のパーティション分割
-Azure Cache for Redis のパーティション分割
-Azure Service Fabric のパーティション分割
-Azure Event Hubs のパーティション分割
***デプロイ スタンプ [#rfa6ef1d]
-データ ストアを含め、アプリケーション コンポーネントの複...
-個々のコピーは "スタンプ" と呼ばれ、"サービス ユニット" ...
-このアプローチにより、
--顧客データを分離でき、
--ソリューションのスケーラビリティが向上し、
--インスタンスを複数のリージョンにデプロイすることが可能...
-自動化された完全に反復可能なデプロイ プロセスを使用する
***監視と診断 [#mecb66f4]
-正常性の監視
-可用性の監視
-パフォーマンスの監視
-セキュリティの監視
-SLA の監視
-ユーザー操作の監査
-利用状況の監視
-問題追跡
-操作のトレース
-リリースのデバッグ
-監視と診断のパイプライン
-監視と診断のデータ ソース
-アプリケーションのインストルメント化
-データの収集と保存
-データの分析と問題の診断
-データの視覚化とアラートの生成
***特定のサービスの再試行ガイダンス [#ga1c9efc]
-Azure サービスの再試行機能~
https://docs.microsoft.com/ja-jp/azure/architecture/best-...
***一時的な障害の処理 [#ea4840f2]
-標準の再試行機構が存在するかどうかを調べる。
-操作を再試行するのが妥当かどうかを判断する。
-適切な再試行回数と間隔を決める。
-アンチパターンを避ける。
-再試行の戦略と実装をテストする。
-再試行ポリシーの構成を管理する。
-一過性の障害と一過性ではない障害を記録、追跡する。
-絶えず失敗する操作に対処する。
**チューニング [#sf92174b]
-テレメトリでメトリックを収集できるようコードをインストル...
-平均値によって、外れ値が解らなくなる可能性があるので、~
90/95/99 パーセンタイルパーセンタイル値を閾値にも監視する。
-一度に1つのボトルネックに取り組む~
(ボトルネックを取り除くと、次の別のボトルネックが明らか...
-エラーと再試行は、パフォーマンスに大きな影響を与える可能...
-並列、分散化できる可能性を探す([[パーティション分割>#c1...
--1 つの操作を包括的にエンドツーエンドで把握するのは困難...
--一貫性のあるビューを取得するにはログとメトリックを 1 か...
--自動スケールは、
---基の問題が解らなくなる可能性がある。
---また、スケールアウト・スケールインの閾値も解らなくなる。
--カスケード エラー
---エラーが連鎖して根本原因とは~
異なるコンポーネントでシグナルが現れる
---上流のエラーが原因で下流で障害が発生する。
***分散トランザクション [#pe656b8c]
https://docs.microsoft.com/ja-jp/azure/architecture/perfo...
***複数のバックエンド サービス [#a97a228f]
https://docs.microsoft.com/ja-jp/azure/architecture/perfo...
***イベントのストリーミング [#zabfc6e8]
https://docs.microsoft.com/ja-jp/azure/architecture/perfo...
***アンチ・パターン [#ncdca084]
-ビジー状態のデータベース
-ビジー状態のフロント エンド
-頻度の高い I/O
-余分なフェッチ
-不適切なインスタンス化
-モノリシック永続化
-キャッシュなし
-同期 I/O
**サービス毎 [#l2f69b36]
***[[Azure IoT>Microsoft Azure IoT#u9e76988]] [#daa49ba8]
*参考 [#t8f6cd32]
**Microsoft Docs [#if55fe9b]
-Azure Architecture Center
--Azure アプリケーション アーキテクチャ ガイド~
https://docs.microsoft.com/ja-jp/azure/architecture/guide/
***アーキテクチャ スタイル [#d27a4c5c]
https://docs.microsoft.com/ja-jp/azure/architecture/guide...
***10 の設計原則 [#scc533d0]
https://docs.microsoft.com/ja-jp/azure/architecture/guide...
***技術選定 [#a6bb1af4]
https://docs.microsoft.com/ja-jp/azure/architecture/guide...
***ベスト・プラクティス [#w3bc7d7e]
https://docs.microsoft.com/ja-jp/azure/architecture/best-...
***チューニング [#p29c3cc5]
https://docs.microsoft.com/ja-jp/azure/architecture/perfo...
**その他 [#j1a18824]
***多言語パーシステンス [#gc2d31ea]
-Scott Leberknight氏、多言語パーシステンスについて語る~
https://www.infoq.com/jp/news/2009/08/leberknight-polyglo...
***HATEOAS [#nccfbb60]
-RESTFul APIsにおいてHATEOASを使用する利点~
https://www.infoq.com/jp/news/2009/04/hateoas-restful-api...
-RailsのAPIにHATEOASを散りばめてみる : RESTの拡張、HATEOA...
https://postd.cc/sprinkle-some-hateoas-on-your-rails-apis/
----
Tags: [[:アーキテクチャ]], [[:クラウド系開発]]
ページ名: