クラウド アプリケーションのベスト プラクティス
これらのベスト プラクティスは、信頼性が高く、スケーラブルで、セキュリティで保護されたアプリケーションをクラウドに構築するのに役立ちます。 これらは、効率的で堅牢なシステム、メカニズム、およびアプローチを設計および実装するためのガイドラインとヒントを提供します。 多くは、Azure サービスで使用できるコード例も含まれています。 このプラクティスは、ホストが Azure か別のクラウド プラットフォームかにかかわらず、すべての分散システムに適用されます。
プラクティスのカタログ
次の表に、さまざまなベスト プラクティスを示します。 関連する柱 列には、プラクティスが重点を置いている Microsoft Azure Well-Architected フレームワーク の柱が含まれています。
練習 | 概要 | 関連する柱 |
---|---|---|
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 が提供する再試行メカニズムを使用、調整、拡張します。 接続、操作、リソースに関する一時的な問題を管理するための体系的で堅牢なアプローチを開発します。 | 信頼性 |
一時的な障害処理 | 使用できないネットワークまたはリソースによって発生する一時的な障害を処理します。 適切な再試行戦略を開発するときに、課題を克服します。 再試行コードとその他のアンチパターンのレイヤーを複製しないようにします。 | 信頼性 |