クラウド アプリケーションのベスト プラクティス
これらのベスト プラクティスは、信頼性が高く、スケーラブルで、セキュリティで保護されたアプリケーションをクラウドで構築するのに役立ちます。 効率的で信頼性の高いシステム、メカニズム、アプローチを設計および実装するためのガイドラインとヒントを提供します。 多くの場合、Azure サービスで使用できるコードの例も含まれています。 これらのプラクティスは、ホストが Azure であるか別のクラウド プラットフォームであるかにかかわらず、すべての分散システムに適用できます。
プラクティスのカタログ
次の表は、さまざまなベスト プラクティスを示しています。 「関連する重要な要素やパターン」列には、次のリンクが含まれています。
- そのプラクティスと設計パターンによって対応できるクラウド開発の課題。
- そのプラクティスで重点が置かれている Microsoft Azure Well-Architected Framework の重要な要素。
実習 | まとめ | 関連する重要な要素やパターン |
---|---|---|
API 設計 | 標準プロトコルと合意されたデータ形式を使用して、プラットフォームからの独立性をサポートする Web API を設計します。 修正なしにクライアントで機能を発見できるよう、サービスの進化を促進します。 部分的な応答をサポートし、データのフィルター処理と改ページのための手段を提供することにより、応答時間を改善し、一時的な障害を防止します。 | 設計と実装、パフォーマンス効率、オペレーショナル エクセレンス |
API 実装 | 効率、応答性、スケーラビリティ、可用性が高まるように Web API を実装します。 アクションをべき等にし、コンテンツ ネゴシエーションをサポートし、HTTP 仕様に従います。 例外を処理し、リソースの検出をサポートします。 大規模な要求を処理し、ネットワーク トラフィックを最小限に抑える方法を提供します。 | 設計と実装、オペレーショナル エクセレンス |
自動スケーリング | パフォーマンス要件を満たし、コストを最小限に抑えるために、リソースの割り当てと割り当て解除を動的に行うようにアプリを設計します。 Azure Monitor 自動スケーリングと、多くの Azure コンポーネントで提供されている組み込みの自動スケーリングを活用します。 | パフォーマンス効率、コスト最適化 |
バックグラウンド ジョブ | バッチ ジョブ、処理タスク、ワークフローをバックグラウンド ジョブとして実装します。 Azure プラットフォーム サービスを使用して、これらのタスクをホストします。 イベントまたはスケジュールを使用してタスクをトリガーし、呼び出し元のタスクに結果を返します。 | 設計と実装、オペレーショナル エクセレンス |
キャッシュ | アプリの近くに位置する高速ストレージにデータをコピーすることで、パフォーマンスを向上させます。 頻繁に読み取るものの、変更頻度が低いデータをキャッシュします。 データの有効期限とコンカレンシーを管理します。 キャッシュの設定方法と Azure Cache for Redis サービスの使い方をご確認ください。 | データ管理、パフォーマンス効率 |
コンテンツ配信ネットワーク | コンテンツ配信ネットワーク (CDN) を使用して、Web コンテンツをユーザーに効率的に配信し、Web アプリの負荷を軽減します。 デプロイ、バージョン管理、セキュリティ、回復性の課題を克服します。 | データ管理、パフォーマンス効率 |
データのパーティション分割 | データをパーティション分割して、スケーラビリティ、可用性、パフォーマンスを向上させ、競合とデータ ストレージのコストを削減します。 水平方向、垂直方向、機能的なパーティション分割を効率的に使用します。 | データ管理、パフォーマンス効率、コスト最適化 |
データのパーティション分割戦略 (サービスごと) | Azure SQL Database や、Azure Table Storage や Azure Blob Storage などの Azure Storage サービスで、データをパーティション分割します。 データをシャード化して、負荷分散、待機時間低減、水平スケーリングのサポートを行います。 | データ管理、パフォーマンス効率、コスト最適化 |
ホスト名の保存 | リバース プロキシとそのバックエンド Web アプリケーションとの間で元の HTTP ホスト名を保持することが重要である理由と、最も一般的な Azure サービスにこの推奨事項を実装する方法について説明します。 | 設計と実装、信頼性 |
メッセージ エンコードに関する考慮事項 | 非同期メッセージを使用して、システム コンポーネント間で情報を交換します。 データに最も適したペイロード構造、エンコード形式、シリアル化ライブラリを選択します。 | メッセージング、セキュリティ |
監視と診断 | 監視と診断のパイプラインを使用して、システムの正常性、使用状況、パフォーマンスを追跡します。 監視データを、さまざまな状況に役立つアラート、レポート、トリガーに変換します。 例としては、問題の検出と修正、潜在的な問題の発見、パフォーマンス保証の達成、監査要件の遵守などがあります。 | オペレーショナル エクセレンス |
特定のサービスの再試行ガイダンス | Azure サービスとクライアント SDK で提供されている再試行メカニズムを使用、適応、拡張します。 接続、操作、リソースに関する一時的な問題を管理するための体系的で堅牢なアプローチを開発します。 | 設計と実装、信頼性 |
一時的な障害の処理 | ネットワークまたはリソースが使用不能になることで発生する一時的な障害を処理します。 適切な再試行戦略を策定する際の課題を克服します。 再試行コードのレイヤーの重複や、その他のアンチパターンを回避します。 | 設計と実装、信頼性 |