アーキテクトは、機能要件と非機能要件の両方を満たすようにプラットフォーム サービス、機能、コードを統合してワークロードを設計します。 効果的なワークロードを設計するには、これらの要件を理解し、ワークロードの制約の課題に対処するトポロジと手法を選択する必要があります。 クラウド設計パターンは、多くの一般的な課題に対するソリューションを提供します。
システム設計は、確立された設計パターンに大きく依存します。 これらのパターンの組み合わせを使用して、インフラストラクチャ、コード、および分散システムを設計できます。 これらのパターンは、信頼性が高く、安全性が高く、コスト最適化され、運用効率が高く、高パフォーマンスのアプリケーションをクラウドで構築するために不可欠です。
次のクラウド設計パターンはテクノロジに依存しないため、分散システムに適しています。 これらのパターンは、Azure、他のクラウド プラットフォーム、オンプレミスのセットアップ、ハイブリッド環境全体に適用できます。
クラウド設計パターンが設計プロセスを強化する方法
クラウド ワークロードは、 分散コンピューティングの誤りに対して脆弱です。これは、分散システムの動作に関して一般的ですが、正しくない前提です。 これらの誤りの例を次に示します。
- ネットワークは信頼できます。
- 待機時間は 0 です。
- 帯域幅は無限です。
- ネットワークはセキュリティで保護されています。
- トポロジは変更されません。
- 管理者が 1 人います。
- コンポーネントのバージョン管理は簡単です。
- 可観測性の実装は遅れる可能性があります。
このような誤解により、ワークロードの設計に欠陥が生じる可能性があります。 設計パターンは、これらの誤解を排除するのではなく、認識を高め、報酬戦略を提供し、軽減策を提供するのに役立ちます。 各クラウド 設計パターンにはトレードオフがあります。 実装する方法ではなく、特定のパターンを選択する必要がある理由に焦点を当てます。
これらの業界標準の設計パターンを、適切に設計されたワークロード設計の中核となる構成要素として使用する方法を検討してください。 Azure Well-Architected Framework の各設計パターンは、その 1 つ以上の柱を表します。 パターンによっては、他の柱の目標に影響を与えるトレードオフが生じる場合があります。
パターン カタログ
このカタログ内の各パターンでは、対処する問題、パターンの適用に関する考慮事項、および Microsoft Azure のサービスとツールに基づく例について説明します。 一部のパターンには、Azure でのパターンの実装方法を示すコード サンプルまたはスニペットが含まれています。
パターン | まとめ | Well-Architected フレームワークの柱 |
---|---|---|
大使 | コンシューマー サービスまたはアプリケーションの代わりにネットワーク要求を送信するヘルパー サービスを作成します。 | -確実 -安全 |
腐敗防止レイヤー | 最新アプリケーションとレガシ システムの間にファサード、すなわちアダプター レイヤーを実装します。 | - オペレーショナル エクセレンス |
非同期要求-応答 | フロントエンド ホストからバックエンド処理を切り離します。 このパターンは、バックエンド処理を非同期にする必要があるが、フロントエンドが明確でタイムリーな応答を必要とする場合に便利です。 | - パフォーマンス効率 |
フロントエンド用バックエンド | 特定のフロントエンド アプリケーションまたはインターフェイス用に個別のバックエンド サービスを作成します。 | -確実 -安全 - パフォーマンス効率 |
隔壁壁板 | アプリケーションの要素をプールに分離し、1 つの要素が失敗しても、他の要素が引き続き機能できるようにします。 | -確実 -安全 - パフォーマンス効率 |
キャッシュ アサイド | オンデマンドでデータをデータ ストアからキャッシュに読み込みます。 | -確実 - パフォーマンス効率 |
コレオグラフィ | 中央オーケストレーターに応じてではなく、ビジネス操作をいつどのように処理するかを個々のサービスが決定できるようにします。 | - オペレーショナル エクセレンス - パフォーマンス効率 |
サーキットブレーカー | アプリケーションがリモート サービスまたはリソースに接続するときに、修正に時間がかかる可能性がある障害を処理します。 | -確実 - パフォーマンス効率 |
クレームチェック | 大きいメッセージを要求チェックとペイロードに分割して、メッセージ バスに過度な負荷がかかることを防ぎます。 | -確実 -安全 - コストの最適化 - パフォーマンス効率 |
補正トランザクション | 最終的に一貫性のある操作を総合的に形成する一連のステップによって実行された作業を元に戻します。 | -確実 |
競合コンシューマー | 複数の同時コンシューマーが同じメッセージング チャネルで受信したメッセージを処理できるようにします。 | -確実 - コストの最適化 - パフォーマンス効率 |
コンピューティング リソース統合 | 複数のタスクまたは操作を 1 つのコンピューティング単位に統合します。 | - コストの最適化 - オペレーショナル エクセレンス - パフォーマンス効率 |
CQRS | 個別のインターフェイスを使用して、データを更新する操作からデータを読み取る操作を分離します。 | - パフォーマンス効率 |
デプロイ スタンプ | データ ストアなど、アプリケーション コンポーネントの複数の独立したコピーをデプロイします。 | - オペレーショナル エクセレンス - パフォーマンス効率 |
イベント ソーシング | 追加専用ストアを使用して、ドメイン内のデータに対して実行されたアクションを記述する一連のイベントをすべて記録します。 | -確実 - パフォーマンス効率 |
外部構成ストア | アプリケーション展開パッケージから一元化された場所に構成情報を移動します。 | - オペレーショナル エクセレンス |
フェデレーテッドアイデンティティ | 外部の ID プロバイダーに認証を委任します。 | -確実 -安全 - パフォーマンス効率 |
ゲートウェイ集約 | ゲートウェイを使用して、複数の個々の要求を 1 つの要求に集約します。 | -確実 -安全 - オペレーショナル エクセレンス - パフォーマンス効率 |
ゲートウェイ オフロード | 共有または専用のサービス機能の負荷をゲートウェイ プロキシにオフロードします。 | -確実 -安全 - コストの最適化 - オペレーショナル エクセレンス - パフォーマンス効率 |
ゲートウェイ ルーティング | 1 つのエンドポイントを使用して複数のサービスに要求をルーティングします。 | -確実 - オペレーショナル エクセレンス - パフォーマンス効率 |
ジオード | 地理的に分散されたノードにバックエンド サービスをデプロイします。 各ノードは、任意のリージョンからのクライアント要求を処理できます。 | -確実 - パフォーマンス効率 |
ヘルスエンドポイント監視 | 公開されたエンドポイントを通じて外部ツールが定期的にアクセスできる機能チェックをアプリケーションに実装します。 | -確実 - オペレーショナル エクセレンス - パフォーマンス効率 |
インデックス テーブル | クエリが頻繁に参照するデータ ストア内のフィールドに対してインデックスを作成します。 | -確実 - パフォーマンス効率 |
リーダー選挙 | 1 つのインスタンスをリーダーとして選択して、分散アプリケーションのアクションを調整します。 リーダーは、共同作業タスク インスタンスのコレクションを管理します。 | -確実 |
具体化されたビュー | データが必要なクエリ操作に対して適切に書式設定されていない場合、1つ以上のデータストア内のデータに対して事前入力されたビューを生成します。 | - パフォーマンス効率 |
メッセージング ブリッジ | 他の方法では互換性のないメッセージング システム間の通信を可能にする仲介者を構築します。 | - コストの最適化 - オペレーショナル エクセレンス |
パイプとフィルター | 複雑な処理を実行するタスクを、再利用できる一連の個別の要素に分割します。 | -確実 |
優先順位キュー | 優先順位の高い要求がより迅速に処理されるように、サービスに送信される要求に優先順位を付けます。 | -確実 - パフォーマンス効率 |
パブリッシャー/サブスクライバー | 送信側と受信側を結合せずに、アプリケーションが複数のコンシューマーに対して非同期的にイベントをアナウンスできるようにします。 | -確実 -安全 - コストの最適化 - オペレーショナル エクセレンス - パフォーマンス効率 |
検疫 | ワークロードで使用される前に、外部資産がチームが合意した品質レベルを満たしていることを確認します。 | -安全 - オペレーショナル エクセレンス |
キュー ベースの負荷平準化 | タスクとサービスの間にバッファーを作成するキューを使用して、断続的な大きな負荷を滑らかにします。 | -確実 - コストの最適化 - パフォーマンス効率 |
レート制限 | リソースの消費を制御することで、調整エラーを回避または最小限に抑えます。 | -確実 |
再試行 | 失敗した操作を再試行して、予期される一時的なエラーをアプリケーションで処理できるようにします。 | -確実 |
サガ | 分散トランザクション シナリオでマイクロサービス間のデータ整合性を管理します。 | -確実 |
スケジューラーエージェントスーパーバイザー | 分散サービスとリソース間で一連のアクションを調整します。 | -確実 - パフォーマンス効率 |
シーケンシャル コンボイ | 他のメッセージ グループをブロックせずに、関連する一連のメッセージを定義された順序で処理します。 | -確実 |
シャーディング | データ ストアを水平方向のパーティションまたはシャードのセットに分割します。 | -確実 - コストの最適化 |
サイドカー | 分離とカプセル化を提供するために、コンポーネントを別のプロセスまたはコンテナーにデプロイします。 | -安全 - オペレーショナル エクセレンス |
静的コンテンツ ホスティング | クライアントに直接配信するために、クラウドベースのストレージ サービスに静的コンテンツをデプロイします。 | - コストの最適化 |
ストラングラー Fig | 機能の一部を新しいアプリケーションやサービスに徐々に置き換えることで、レガシ システムを段階的に移行します。 | -確実 - コストの最適化 - オペレーショナル エクセレンス |
調整 | アプリケーション、テナント、またはサービスからのリソースの消費を制御します。 | -確実 -安全 - コストの最適化 - パフォーマンス効率 |
バレット キー | トークンまたはキーを使用して、特定のリソースまたはサービスへの制限付き直接アクセスをクライアントに提供します。 | -安全 - コストの最適化 - パフォーマンス効率 |
次のステップ
パターンが最適化を目的とする Well-Architected フレームワークの柱の観点から、設計パターンを確認します。