Microsoft AZ-305: Well-Architected フレームワークと設計原則 — 学習ガイド
こちらの一部です: Microsoft Azure Solutions Architect Expert AZ-305 — 学習ガイド. 検証済みの解答で練習: Microsoft試験ハブ, または時間制限付き模擬試験に挑戦: ExamRoll.io.
概要
Azure Well-Architected Framework (WAF) は、Azure上で信頼性、安全性、コスト効率、オペレーショナルエクセレンス、パフォーマンスに優れたワークロードの設計、構築、運用を導くための一連の規範的な原則です。ソリューションを5つの柱(信頼性、セキュリティ、コストの最適化、オペレーショナルエクセレンス、パフォーマンス効率)に沿って設計することで、アーキテクチャの決定が、ビジネスの優先順位、リスク許容度、データ主権や予算といった制約に基づいて情報に基づいた明確なトレードオフとなることを保証します。スケールに応じた一貫性を実現するには、ランディングゾーン、ポリシーベースのガバナンス、そしてデフォルトとしての自動化が必要です。最新の設計では、迅速な変更と厳格なコンプライアンスの両方に対応するため、分離、イベント駆動型コミュニケーション、そしてCQRS、Strangler Fig、マイクロサービスといったパターンが重視されます。これらはAzureネイティブサービスと統合された可観測性を用いて実装されます。
5つの柱:信頼性、セキュリティ、コスト、オペレーショナルエクセレンス、パフォーマンス
信頼性は、障害発生時や変更中でもワークロードがビジネスSLAを満たし続けることを保証します。可用性ゾーンやリージョンペアにまたがってデプロイし、組み込みのHAを持つマネージドサービスを選択し、回復性パターンを実装することで、障害ドメインと更新ドメインを考慮した設計を行います。カオスエンジニアリングやディザスタリカバリ訓練によって、回復性をテストします。ステートフルなデータには、RPO/RTO機能を備えたサービス(例:Azure SQL DatabaseのActive Geo-ReplicationやCosmos DBのマルチリージョン書き込み)を選択し、自動バックアップとテスト済みのRunbookを組み合わせます。
セキュリティは、ゼロトラストを基本とした多層防御です。Azure RBAC、Privileged Identity Management (PIM)、そしてアクセスレビューを用いて最小権限を強制し、権限の継続的な正常化を図ります。プライベートエンドポイント、NSG、Azure Firewallを使用してネットワークの影響範囲を分離し、Azure Front DoorまたはApplication GatewayにWeb Application Firewall (WAF)を統合します。Defender for Cloudによる継続的な監視、Sentinelでの脅威検出、厳格なID保護(MFA、条件付きアクセス)を通じて、侵害を前提とした対策を講じます。
コストの最適化は、ビジネス価値と総所有コストのバランスを取ります。テレメトリに基づいてコンピューティングと階層を適正なサイズにし、スケーリングを使用して需要に合わせ、非本番環境は停止させます。安定したワークロードには予約や節約プランでコミットし、中断可能なコンピューティングにはスポットVMを活用し、ストレージとデータ保持を階層化し、ワークロードのプロファイルに合致する場合はサーバーレスを優先します。タグ付けと予算を徹底し、Azure Policyを使用してコスト管理を標準化します。
オペレーショナルエクセレンスは、自動化、再現性、学習ループを重視します。Bicep/ARMやTerraformで環境をコードとして扱い、ドリフトの修正を強制し、一貫したCI/CDを実装します。運用のためのインサイトは、構造化ログ、メトリクス、トレース、合成テストから得られ、これらはすべてアラートとSLOダッシュボードに接続され、MTTRを短縮し、プロアクティブな改善に役立てられます。
パフォーマンス効率は、変動する負荷の下でワークロードがスループットとレイテンシーの目標を達成することを保証します。スケールアウトを前提に設計し、積極的にキャッシュを利用し、コンテンツをエッジにプッシュし、アクセスパターンに適したデータパーティションと読み取りレプリカを選択します。現実的な負荷テストで検証し、エビデンスに基づいてチューニングします。
Azureにおける信頼性とパフォーマンスのパターン
回復性パターンは、障害の発生確率と影響を低減させつつ、レイテンシーを予測可能に保ちます。
指数関数的バックオフとジッターを使用したリトライ: Storage、Service Bus、Cosmos DBなどのサービスからの一時的な障害を処理するために、Azure SDKの設定可能なリトライポリシーやPolly (.NET)のようなライブラリを使用します。ジッター付きのバックオフはサンダーリングハード問題を回避します。リトライ回数に上限を設けることで、SLAを保護し、障害を適時に表面化させます。
サーキットブレーカー: 外部APIへの呼び出しなどをブレーカーでラップし、エラー率がしきい値を超えた場合に迅速に失敗(フェイルファスト)させ、回復期間を設けます。Pollyを使用してクライアント層で実装するか、API Managementのポリシー(リトライ、タイムアウト、キャッシュ)を使用してゲートウェイで実装し、連鎖的な障害を回避します。
バルクヘッド: あるノイジーネイバーがシステムリソースを枯渇させないように、リソースをパーティション分割します。スレッドプール、コンテナレプリカ、メッセージ処理パーティションを分離します。プラットフォームレベルでは、境界付けられたコンテキストごとに個別のApp Serviceプラン、AKSノードプール、またはService Busのキュー/トピックを使用して、障害を封じ込めます。
ヘルスエンドポイント監視: サービスにlivenessプローブとreadinessプローブを公開します。Application Gateway/Front Doorのヘルスプローブは、正常なインスタンスにのみトラフィックをルーティングします。AKSでは、KubernetesプローブがPodの再起動とロールアウトのゲーティングを管理します。Application Insightsの可用性テストやカスタムの「/healthz」エンドポイントと組み合わせることで、依存関係の劣化を早期に検出します。
パフォーマンスパターンは回復性を補完します:
キャッシュ戦略: ホットデータやセッションのオフロードにはAzure Cache for Redisを使用します。べき等なGETリクエストに対しては、Azure Front DoorまたはAPI Managementで出力キャッシュを適用します。適切な場合はライトスルーまたはライトビハインドパターンを優先し、キーまたはイベントによって無効化して鮮度を保ちます。データ層では、Cosmos DBの統合キャッシュが読み取り負荷の高いワークロードのRU消費量を削減します。
CDN: Azure Front DoorまたはAzure CDNを使用して、静的アセットと動的コンテンツをユーザーの近くにプッシュし、圧縮、TLS、WAFを有効にします。ルールベースのキャッシュ、オリジンのヘルスチェック、geoフィルタリングを設定して、レイテンシーとコストを最適化します。
読み取りレプリカ: 読み取り負荷の高いワークロードを、Azure SQL Databaseの読み取り可能なセカンダリ(Active Geo-Replication)やHyperscaleの指名レプリカでスケールします。分析やレポート作成にはAzure Database for PostgreSQL/MySQLの読み取りレプリカを使用します。Cosmos DBでは、ビジネスニーズに合わせて整合性モデル(例:セッション、整合性プレフィックス)を設定し、マルチリージョン読み取りを有効にします。
自動スケーリングパターン: Virtual Machine Scale Sets、App Serviceの自動スケーリングルール、イベント駆動型スケールのためのAKS HPA/KEDA、Functionsの従量課金/Premiumプランを使用して水平スケーリングを実装します。データについては、Cosmos DBのRU/s自動スケーリングやEvent Hubsの自動インフレートを使用して、バースト性のあるトラフィックを処理します。オシレーションを避けるため、スケールのしきい値とクールダウン期間は必ず検証します。
オペレーショナルエクセレンス、コスト最適化、およびセキュリティ設計原則
Infrastructure as code: Bicep/ARMまたはTerraformモジュールで標準化し、Gitでバージョン管理し、デプロイ前テストとpolicy-as-codeで検証します。再利用のためにテンプレートスペックまたはTerraformレジストリを使用します。環境ごとにパラメータ化し、一貫したタグ、リソースロック、診断設定を強制します。Azure DevOpsまたはGitHub Actionsと統合し、ステージングされたデプロイメントと承認を使用して、制御されたプロモーションを行います。
Deployment automation: App Service、AKS(Deployment戦略によるプログレッシブロールアウト)、および加重ルーティングのためのTraffic Manager/Front Doorでサポートされる、デプロイメントスロット、ブルーグリーン、カナリア戦略を優先します。移行パイプラインと後方互換性のあるコントラクトを使用して、データベーススキーマの変更を自動化します。ヘルスプローブとビジネスKPIを使用してロールアウトをゲートします。
Observability: OpenTelemetryでアプリケーションをインストルメント化し、分散トレーシング、メトリック、依存関係マップのためにApplication Insightsにエクスポートします。プラットフォームメトリックのためにAzure Monitorを有効にし、Log Analyticsワークスペースをデプロイし、SLOとキャパシティのためにWorkbooksとダッシュボードを作成します。動的しきい値でアラートルールを定義し、ITSMと統合し、監査とフォレンジックのためにActivity Logsと診断ログを一元的に保存します。
Right-sizing and cost controls: Azure Advisor、Azure Monitorの使用状況メトリック、Application Insightsプロファイリングを使用して、無駄(アイドルコア、過剰にプロビジョニングされたvCore、過剰に割り当てられたRU/s)を特定します。安定したワークロード(VM、SQL、Synapse)にReservations/Savings Plansを、Storageに予約容量を、Cosmos DBにコミットメント層を適用します。チェックポイント機能を持つビルドエージェント、バッチ、MLトレーニングにはSpot VMを選択します。アーキテクチャのトレードオフのバランスを取ります。マネージドPaaSは、単位コストが高くなる代わりに運用コストを削減し信頼性を向上させることができます。キャッシングは、キャッシュ無効化の複雑さを犠牲にして、データエグレスとRUコストを削減します。マルチリージョンHAは支出を増加させますが、RTO/RPOによって要求される場合があります。
セキュリティ原則の実践:
- 多層防御: IDからデータまでのコントロールを階層化します。Private Linkを使用してトラフィックをパブリックインターネットから分離し、マイクロセグメンテーションのためにNSGとASGを、TLSインスペクションのためにAzure Firewall Premiumを、エッジでWAFを使用します。Defender for Cloudの推奨事項とジャストインタイムVMアクセスを有効にします。
- 最小権限: 管理グループ/サブスクリプション/リソースグループレベルにスコープされた、きめ細かいRBACを実装します。シークレットよりもマネージドIDを優先します。Azure Policyと、グループ、エンタープライズアプリ、特権ロールに対するアクセスレビューを使用して、大規模なガバナンスを行います。
- 侵害を想定: MFAと条件付きアクセスを要求し、Sentinelで監視し、個別のランディングゾーンとサブスクリプションでワークロードを分離します。Key VaultのプラットフォームキーまたはCMKで保存データを暗号化します。規制当局が要求する場合は二重暗号化を使用します。期限付きのストレージアクセスにはSASを使用し、ポリシーによってキーをローテーションします。
- データ分類: Microsoft Purviewでデータをカタログ化し、機密性をラベル付けし、DLPを強制します。暗号化、リテンション、アクセスをデータ分類層に合わせます。PIIへのアクセスをログに記録し、該当する場合にはDynamic Data MaskingやAlways Encryptedなどの機能でプライバシー要件をサポートします。
Azureランディングゾーンと最新のアーキテクチャパターン
Azureランディングゾーンは、フレームワークを大規模に運用可能にします。管理グループ階層(ルート → プラットフォーム → 事業単位)を構成し、Azure Policy、RBAC、および予算のスコープを定めます。プラットフォームランディングゾーンは、ID(Azure AD)、接続性(Azure Firewall、DDoS、DNSを備えたハブ)、管理(Log Analytics、Automation、Update Management)、セキュリティ(Defender for Cloud)といった共有サービスを提供します。アプリケーションランディングゾーンはワークロードをホストし、環境やコンプライアンスの境界によってセグメント化され、タグ付け、診断、許可されるリソースタイプを強制する継承されたポリシーが適用されます。Cloud Adoption Framework (CAF) のエンタープライズスケール設計、またはTerraform/Bicepベースのランディングゾーンアクセラレーターを採用することで、迅速かつ一貫性のあるブートストラップが可能です。
Azure上のマイクロサービスは、分離されたチームと独立してデプロイ可能なサービスを重視します:
- サービスディスカバリ:AKSでは、クラスター内解決のためにKubernetes DNS/CoreDNSを使用します。Daprサイドカーで強化し、名前ベースのディスカバリとリトライを実現します。Service Fabricは、ステートフルサービス向けに組み込みのネーミングおよびヘルス管理機能を提供します。
- APIゲートウェイパターン:Azure API Managementを使用して、ルーティング、バージョニング、認証(OAuth 2.0/JWT検証)、クォータ、キャッシングを一元化します。その前面にAzure Front Doorを配置し、グローバルエニーキャスト、SSLオフロード、WAFを実現します。リージョンごとにルーティングし、カナリアリリースを安全に実行します。
- イベント駆動型コミュニケーション:順序付けられたトランザクションコマンドにはセッション付きのAzure Service Busを、高スループットのテレメトリにはEvent Hubsを、リアクティブなプッシュスタイルのイベントサブスクリプションにはEvent Gridを選択します。少なくとも1回の配信(at-least-once delivery)、べき等なハンドラー、ポイズンメッセージ処理、およびDLQを考慮して設計します。
CQRSとイベントソーシングは、パフォーマンスと複雑性の分離のために、書き込みモデルと読み取りモデルを分離します。追記専用のイベントをイベントストア(Cosmos DB、Azure SQL、または下流ストレージを介したコンパクション付きのEvent Hubs)に永続化し、リプレイして状態を再構築し、Azure SQL Database、Cosmos DBコンテナー、Azure Cognitive Searchなどのクエリに最適化された読み取りモデルに射影(project)します。Cosmos DBの変更フィードは、この射影の要です。Azure FunctionsやAzure Stream Analyticsが変更を処理し、ほぼリアルタイムで読み取りストアを更新できます。Event Hubsは大量のイベントストリームをバッファリングし、コンシューマーは独立してスケールします。明確なSLAとユーザーエクスペリエンスパターン(例:コマンドの確認応答とそれに続く読み取りモデルの収束)を用いて、結果整合性を採用します。
ストラングラーFigパターンは、段階的なモダナイゼーションを可能にします。モノリスの前にAzure API Managementを配置し、特定のエンドポイントを新しいマイクロサービスにルーティングし、残りはレガシーバックエンドに継続させます。ポリシーを使用して、ヘッダーベースのルーティング、レスポンス変換、認証を行います。変更データキャプチャ(例:Azure Data FactoryまたはデータベースCDCからEvent Hubsへ)でデータを同期し、Cosmos DB + 変更フィードで新しい読み取りモデルを構築し、モノリスの機能を段階的に廃止します。機能フラグ、Front Doorでのカナリアルーティング、および動作を比較するための包括的な可観測性によってリスクを管理します。
実践的な問題シナリオ
スターバックスは、現在単一リージョンのVMでホストされているグローバルな注文プラットフォームをモダナイズしています。リージョンをまたいだ信頼性の向上、モバイルクライアントのレイテンシー削減、最小権限とゼロトラストの強制、そしてビジネスを中断しない段階的な移行が求められています。
- エンタープライズランディングゾーンの確立
- プラットフォームおよびアプリケーションランディングゾーンを持つ管理グループ階層を作成します。タグ付け、診断、許可されるSKU、プライベートエンドポイントに対してAzure Policyを適用します。ID、接続性(Azure Firewall Premium、Private DNSを備えたハブ)、管理(中央のLog Analytics)のために、CAFエンタープライズスケールリファレンスを選択します。 理由:ランディングゾーンは、一貫したセキュリティ、ネットワーキング、ガバナンスのベースラインを強制するため、ワークロードは設計によってコントロールを継承します。
- モノリスの前面にエッジとAPIファサードを配置
- Azure Front Door (Standard/Premium) をWAFと共にデプロイし、グローバルなエニーキャストエントリ、TLS終端、DDoS保護を提供します。APIゲートウェイとしてAzure API Managementを配置し、Front Doorと統合してクライアントを認証(OAuth 2.0)し、コンシューマーグループごとにレート制限を適用し、リクエスト/レスポンスを変換します。 理由:Front Doorはレイテンシーを削減し、エッジで保護します。API ManagementはAPIゲートウェイパターンを実装し、ストラングラーFigアプローチとテナント固有のスロットリングを可能にします。
- ストラングラーFig移行の実装
- API Managementのポリシーを使用して、選択したエンドポイント(例:メニュー、店舗検索)を2つのリージョンで実行されている新しいマイクロサービスにルーティングします。他のすべてのルートは、内部ロードバランサーの背後にあるレガシーモノリスに向けられます。 理由:段階的なルーティングは、一斉切り替えを避け、チームが独立して機能を移行できるようにします。
- 回復力とパフォーマンスに優れたパターンでマイクロサービスを構築
- AKSでは、イベント駆動のオートスケーリングのためにKEDAを使用してHPAを有効にします。サービス間のサービスディスカバリ、指数バックオフ付きリトライ、サーキットブレーキングにDaprを使用します。ホットリードとセッションオフロードのためにAzure Cache for Redisを統合します。 理由:AKSとDaprは、プラットフォームに依存しない回復力とサービスディスカバリを提供します。キャッシングは読み取りレイテンシーとバックエンドの負荷を削減します。
- イベント駆動型コミュニケーションとCQRSの採用
- ドメインイベントをAzure Event Hubsに発行します。注文は、顧客または店舗でパーティショニングしてCosmos DBに永続化します。Cosmos DBの変更フィードをAzure Functionsと共に使用して、Azure SQL Database(レポート用)およびAzure Cognitive Search(店舗在庫検索用)の読み取りモデルに射影します。 理由:Event Hubsは、高スループットでプロデューサーとコンシューマーを分離します。変更フィードは、書き込みパフォーマンスに影響を与えることなく、CQRSのためのほぼリアルタイムのマテリアライズドビューを可能にします。
- セキュリティとIDの強化
- データサービスにはプライベートエンドポイントを、セグメンテーションにはNSG/ASGを、出力制御にはAzure Firewallを強制します。すべてのワークロードにマネージドIDを使用し、特権ロールにはPIMを、API Managementの製品サブスクリプションにはアクセスレビューを使用します。運用スタッフには条件付きアクセスとMFAを有効にします。 理由:多層防御と最小権限は、影響範囲と認証情報のリスクを削減します。アクセスレビューは、権限の衛生状態を維持します。
- 信頼性と可観測性のための設計
- 各リージョンでアベイラビリティゾーンをまたいでデプロイし、アクティブ-アクティブのFront DoorルーティングとAPI Managementのマルチリージョン構成とします。Front DoorとAKSプローブによるヘルスエンドポイント監視を有効にし、新しいサービスにはカナリアリリースを構成します。OpenTelemetryでApplication Insightsにインストルメント化し、Log Analyticsにログを一元化し、アラート付きのSLOダッシュボードを作成します。ステートフルストアのバックアップ/DRを実装し、カオス実験を実行します。 理由:ゾーンおよびリージョンの冗長性、ヘルスに基づいたルーティング、包括的な可観測性は、SLAを維持し、迅速なインシデント対応を可能にします。
- 継続的なコスト最適化
- テレメトリに基づいてAKSノードプールとApp Serviceプランを適正なサイズにし、安定したコンピューティングには予約/Savings Plansを適用し、重要でないバッチ処理にはSpot VMを使用します。Cosmos DBの自動スケーリングを有効にし、コミットメントレベルを評価します。予算/タグを強制し、Azure Advisorの推奨事項を毎月レビューします。 理由:体系的なコストガバナンスは、無駄とユニットコストを最小限に抑えながら、パフォーマンスを維持します。
← 移行とモダナイゼーション · すべてのドメイン
これらの問題を練習する → · ExamRoll.ioで時間制限付き練習 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
試験に合格する →