Microsoft AZ-104: Azure App Service と PaaS コンピューティング — 学習ガイド
こちらの一部です: Microsoft Azure Administrator Associate AZ-104 — 学習ガイド. 検証済みの解答で練習: Microsoft試験ハブ, または時間制限付き模擬試験に挑戦: ExamRoll.io.
概要
AzureのPaaSコンピュートポートフォリオは、フルマネージドのWeb/アプリホスティング、サーバーレス関数、ワークフロー自動化、オンデマンドコンテナ、そしてコンテナオーケストレーションを統合しています。管理者として成功するには、各サービスの境界、ネットワーク接続と認証の方法、そして信頼性の高いデプロイとスケーリングの方法を理解することが重要です。このセクションでは、App Service(プラン、デプロイメントスロット、ネットワーク、組み込み認証)、Azure FunctionsとLogic Apps(プラン、トリガー、コネクタ)、Azure Container InstancesとAKS(スケジューリング、スケーリング、運用ツール)、そして分離されたApp Service Environmentについて説明します。
App ServiceとFunctionsのコンピューティング基盤
App Serviceプランは、専用プランで実行されるWeb Apps、API Apps、およびFunction Appsのコンピューティングリソースプールを決定します。価格レベルごとに、異なる機能とスケーリングモデルがあります。
- Free (F1) と Shared (D1) は、クォータがありSLAのない共有インフラストラクチャで実行されます。これらは実験にのみ適しています。デプロイメントスロット、VNet統合、自動スケールなどの機能は利用できません。
- Basic (B) は、小規模な専用VMを割り当て、手動でのスケールアウトが可能です。自動スケールとデプロイメントスロットはありません。
- Standard (S) では、自動スケール、複数インスタンス、日次バックアップ、デプロイメントスロットが導入されます。ステージングが必要な本番ワークロードの出発点となります。
- Premium (Pv2/Pv3) は、CPU/メモリ、I/Oパフォーマンス、機能制限(インスタンス数、スロット数の増加)を向上させ、Private Endpoint統合やゾーン冗長性などの高度なネットワーク機能を追加します。
- Isolated/Isolated v2 は、厳格な分離とコンプライアンスのために、仮想ネットワーク内のシングルテナントの専用コンピューティングであるApp Service Environment内で実行されます。
スケーリングは、スケールアップ(価格レベル/VMサイズの変更)とスケールアウト(インスタンス数の変更)に分かれます。自動スケールにはStandard以上が必要で、Azure Monitorのルール(CPU、App Serviceメトリック経由のメモリ、またはカスタムメトリック)によって駆動されます。スケール操作はApp Serviceプランごとに行われ、プラン内のすべてのアプリに影響します。
デプロイメントスロットは、同じプラン内に本番アプリのインスタンスを提供し、変更をステージングします。スロットはStandard以上で存在し、Standardはサポート数が少なく、Premium/Isolatedはより多くサポートします。スワップは、スロット設定(スロットに固定されるアプリ設定と接続文字列)を尊重しながら、スロットのコンテンツと構成を交換することで、ゼロダウンタイムの昇格をオーケストレーションします。プレビュー付きスワップは、ターゲットスロットをウォームアップし、完了前にヘルス状態を評価します。運用環境でのテストでは、本番トラフィックの一定割合を1つ以上のスロットにルーティングします。ルーティングは、テストのランプアップ中にセッションアフィニティを維持するためにクライアントごとに固定(スティッキー)されます。
App Serviceのネットワークは、制御されたアウトバウンドおよびインバウンド接続を提供します。
- リージョンVNet統合は、アウトバウンドトラフィックを同じリージョン内の仮想ネットワークの委任されたサブネットにルーティングします。これにより、プライベートエンドポイント、VPN/ExpressRoute経由のオンプレミス、およびサービスエンドポイントへの送信が可能になります。パブリックなインバウンドの動作は変更しません。
- Private Endpointは、アプリのフロントエンドをプライベートIPにマッピングすることで、VNet内にアプリをプライベートに公開します。ASE以外でプライベートのみのイングレスを強制するには、アクセス制限と組み合わせます。
- Hybrid Connectionsは、Azure Relayを介して、アプリからオンプレミスまたは他のネットワーク上の特定のホスト:ポートエンドポイントへのアウトバウンドTCP接続を提供します。受信ファイアウォールの変更は不要です。これは汎用的なVNetトンネルではなく、UDPはサポートしていません。
- アクセス制限は、クライアントIP、サービスタグ、および仮想ネットワークトラフィック(Private EndpointsまたはマルチテナントVNetルール経由)に対して、順序付けられた許可/拒否ルールを評価します。コンプライアンスを満たすために、特定の範囲、VNet、またはフロントエンドにロックダウンします。
組み込みの認証/承認(「Easy Auth」)は、ホストされた認証ハンドラーをアプリのフロントに配置し、コードの変更なしにトークンの検証をオフロードします。サポートされているプロバイダーには、Microsoft Entra ID (Azure AD)、Microsoft Account、Google、Facebook、Twitter、および汎用のOpenID Connectが含まれます。すべてのリクエストに対してログインを強制したり、アプリにパススルーしたり、許可されたオーディエンスを設定したり、特定のテナントに制限したりできます。オプションのトークンストアは、プロバイダートークンをキャッシュし、/.auth/meエンドポイントとリクエストヘッダーを介してクレームを公開します。システム割り当てマネージドIDと組み合わせることで、下流のAzureサービスを安全に呼び出すことができます。
Azure Functionsは、3つのホスティングモデルでイベント駆動型のコンピューティングを提供します。
- Consumptionプランはサーバーレスで、実行ごと、GB秒ごとの課金と、自動的なスケールアウトおよびスケールトゥゼロが特徴です。コールドスタートがあり、歴史的に一部のトリガーではVNet統合がありませんでした。新しい機能はより広範ですが、ネットワークに敏感なワークロードはサポート状況を確認する必要があります。
- Premiumプランは、事前にウォームアップされたインスタンスでコールドスタートを排除し、VNet統合とPrivate Endpointsをサポートし、最小/最大インスタンス制御でイベントに基づいてスケーリングします。
- Dedicatedプラン(App Serviceプラン)は、App ServiceプランのキャパシティでFunctionsを実行します。コストは使用量に関係なく予約されたインスタンスに対して発生し、プランレベルでオプションの自動スケールが可能です。 Functionsのトリガーには、HTTP、タイマー、ストレージ(キュー/ブロブ/テーブル)、Service Bus、Event Hubs、Event Grid、Cosmos DBなどがあり、入力/出力バインディングを使用してサービスを宣言的に接続します。Durable Functionsは、オーケストレーター関数とアクティビティ関数を使用するコードファーストモデルでステートフルなオーケストレーションを追加し、ファンアウト/ファンイン、非同期HTTP、ヒューマンインタラクション、Sagaなどのパターンを可能にします。状態はストレージプロバイダー(Azure Storageが一般的)に永続化され、回復力のある再実行可能なワークフローを保証します。
コストとスケーリングの動作は、App ServiceプランモデルとConsumptionモデルで大きく異なります。App Serviceプランは、常時稼働インスタンスのサイズと数に対して課金され、プランのルールに従ってスケーリングします。FunctionsのConsumptionモデルは、実行時間とメモリに対してのみ課金され、同時実行数に基づいた自動スケールとスケールトゥゼロが特徴です。Premiumはこれらの中間に位置し、予約されたウォームキャパシティとバーストスケーリングを組み合わせています。
コンテナとKubernetes
Azure Container Instances (ACI) は、VMやオーケストレーターを管理することなく、オンデマンドで秒単位課金のコンテナを提供します。デプロイの単位はコンテナグループです。これは、同じホストにスケジュールされ、IP、ポート、ボリューム、ライフサイクルを共有する1つ以上のコンテナで構成されます。コンテナごとにCPU/メモリを定義し、ポートを公開し、Azure Files、シークレット、emptyDirなどのボリュームをマウントします。環境変数は、プレーンテキストまたはセキュア(ログやメタデータから除外)に設定できます。再起動ポリシーはライフサイクルを制御します。Always(長時間実行されるサービスのデフォルト)、OnFailure(ゼロ以外の終了コードで再試行すべきジョブ用)、Never(再起動なしで終了状態を検査したい実行完了タスク用)があります。ネットワークは、パブリックIP、委任されたサブネットへのVNetインジェクションによるプライベートIP、およびパブリックエンドポイント用のDNS名ラベルをサポートします。
Azure Kubernetes Service (AKS) は、Virtual Machine Scale Setsとしてプロビジョニングされるノードプールを備えた、マネージドKubernetesコントロールプレーンです。ノードプールは、システムワークロード(kube-systemコンポーネント)とユーザーワークロードを区別し、複数のVMサイズをサポートし、LinuxとWindowsを実行できます(Windowsには少なくとも1つのLinuxシステムプールが必要です)。プールには、スケジューリングを制御するためにテイント(taint)を付与できます。アップグレードはプールごとにオーケストレーションされ、maxPods、可用性ゾーン、エフェメラルOSディスクはプール作成時に構成されます。クラスターオートスケーラーはKubernetesスケジューリングと統合され、保留中のポッドがスケジュールできない場合や、ノードが十分に利用されていない場合に、最小/最大数の範囲内でノード数を変更します。これはPod Disruption Budgetを尊重し、安全な場合にのみスケールダウンします。Horizontal Pod Autoscalerはこれを補完し、メトリクスに基づいてDeployment内のレプリカをスケーリングします。
クラスター管理のためのkubectlの基本:
az aks get-credentialsで接続し、kubeconfigをマージしてコンテキストを選択します。- リソースの検査:
kubectl get nodes/pods/deployments -o wide。詳細とイベントはkubectl describeで確認します。 - 診断と対話:
kubectl logsでstdout/stderrを確認し、kubectl exec -itでインタラクティブなトラブルシューティングを行います。 - 望ましい状態の適用:
kubectl apply -f manifests.yml。名前空間を使用してリソースのスコープを限定します。名前空間を切り替えるにはkubectl config set-contextを使用します。
ネットワークプラグイン(Azure CNIまたはkubenet)、ID(マネージドIDかサービスプリンシパルか)、およびRBAC/Entra ID統合は、ポッドのIP割り当て、クラスターの認証、および認可を決定します。クラスターIDが、ロードバランサー、マネージドディスク、およびノードリソースグループに対する権限を持つことを確認してください。
統合、ネットワーク、セキュリティ
Logic Appsは、何百ものSaaSやAzureサービスへのコネクタを備えたマネージドワークフローエンジンを提供します。ワークフローは、実行を開始するトリガーと、ステップを実行するアクションで構成されます。トリガーには、HTTPリクエスト、繰り返し(Recurrence)、Service Busメッセージ、Event Gridイベント、ストレージイベント、および多くのSaaSイベント(例:Dynamics 365でレコードが作成されたとき)が含まれます。アクションには、制御構造(条件、ループ、スイッチ)、データ操作(作成、JSONの解析、変数)、およびコネクタ操作(メール送信、メッセージのエンキュー、API呼び出し)が含まれます。Azureサービスとの統合は緊密です:
- Service BusとEvent Gridは、疎結合アーキテクチャのための信頼性の高いメッセージングとイベント処理を提供します。
- Functionsは、カスタムコードステップ(同期的なHTTPまたはキューを介した非同期)のために呼び出すことができます。
- マネージドIDは、シークレットなしでKey Vault、Storage、SQL、およびその他のAzureリソースへのアクセスを保護します。 Logic Apps Consumption(マルチテナント)は、アクションの実行ごとおよびコネクタの使用量ごとに課金されます。Logic Apps Standard(シングルテナント)は、App ServiceプランまたはPremiumプランのFunctionsランタイム上で動作し、ローカル開発、VNet統合、プライベートエンドポイント、およびより高いスループットをサポートします。ConsumptionプランのIntegration Service Environment (ISE)は、マネージドコネクタが必要な場合にVNet分離を提供します。
App Service Environment (ASE) は、App ServiceのIsolatedプランを実装します。仮想ネットワーク内にデプロイされるASEは、ネットワーク制御を備えたシングルテナントの専用コンピューティングおよびストレージスタンプを提供します。外部ASEはパブリックなイングレスエンドポイントを公開します。内部ロードバランサー(ILB)ASEは、厳密にプライベートなアクセスのためにプライベートVIPのみを公開します。ASE内のアプリは、Isolated/Isolated v2価格プランを使用します。環境のスタンプ料金とインスタンスごとのワーカーコストの両方を支払います。ASEは、コンプライアンス、ネットワーク分離、またはスケールの要件がマルチテナントのApp Serviceの能力を超える場合に選択されます。ASE v3では、デプロイとネットワークが簡素化されましたが、VNetを境界とする、専用でプライベートにアドレス指定可能なApp Serviceという中核的な価値提案は変わりません。
これらのサービス全体でのアクセスガバナンスは、リソースアクションに対するAzure RBAC、サービス間の認証に対するマネージドID、およびIDプレーンでの条件付きアクセスに依存します。App Serviceへのイングレス制御には、必要に応じて、プライベートエンドポイントまたはILB ASEを、アクセス制限やWAFが有効なフロントエンド(例:Application GatewayやAzure Front Door)と組み合わせます。エグレス制御には、データサービス用のNSG、ルートテーブル、およびプライベートエンドポイントとともにVNet統合を使用します。
デプロイとスケーリングの運用
App Serviceへの信頼性の高いリリースでは、デプロイメントスロットを使用して、スワップ前に正常性を検証し、キャッシュをウォームアップします。環境ごとに異なる構成(接続文字列、機能フラグなど)は「スロット設定」としてマークし、スワップ中に移動しないようにします。プレビュー付きスワップを使用して、ヘルスプローブやアプリケーション固有のウォームアップエンドポイントを実行します。正常でない場合は、スワップを中止します。カナリアリリース中は、トラフィックルーティングを有効にして、少量の固定的な割合のトラフィックをステージングスロットに誘導し、徐々に増やしていきます。スロット固有のアプリ設定により、ベータ機能を安全に切り替えることができます。
App Serviceプランのオートスケールは、プランリソース上でプロファイル(時間ベースの最小/最大/デフォルト)とルール(スケールステップとクールダウン期間を持つメトリックのしきい値)を使用して構成されます。より正確なスケーリングのために、CPUとカスタムメトリック(キューの長さなど)を組み合わせます。Functionsの場合、従量課金プラン(Consumption)は自動的にスケールします。同時実行性を監視し、トリガーごとの動作(Service Busのバッチサイズやプリフェッチなど)をhost.jsonで構成します。Premiumプランは、事前ウォーミングされたインスタンスとバーストインスタンスをスケールします。最小インスタンス数をレイテンシの目標に合わせます。
コンテナでは、ACIの再起動ポリシーは意図を反映する必要があります。バッチジョブは無限ループを避けるためにNeverまたはOnFailureに設定し、サービスはAlwaysを使用します。構成には環境変数、シークレットにはAzure Key Vaultを使用し、マネージドIDとスタートアップコードを介して注入するか、必要に応じてシークレットをボリュームとしてマウントします。AKSでは、ノードプールごとに適切な最小/最大境界値を設定してクラスターオートスケーラーを有効にし、重要なDeploymentに対してHPAを構成します。ヘッドルーム(余裕)を予算に含め、Pod Disruption Budgetsを設定して、アップグレードやスケールイン中の可用性を保護します。クラスターやプールのアップグレードを広範囲に展開する前に、カナリアノードプールでアップグレードを検証します。
実践的な問題シナリオ
Fabrikam社は、顧客ポータルとバックグラウンド処理サービスを運用しています。同社はPaaSへのモダナイゼーション、データストアへのプライベートネットワークアクセスの強制、ブルーグリーンデプロイメントのサポート、そしてVMを管理することなく夜間のコンテナ化されたETLを実行する必要があります。
- デプロイメントスロットを備えたApp Service Premiumでポータルをホストする
- より高いパフォーマンスと多くのスロットのためにPremium v3でApp Serviceプランを作成し、ステージングスロットを持つWeb Appをデプロイします。
- 環境固有の値に対してスロット設定を構成し、プレビュー付きスワップとヘルスチェックを有効にします。
- 理由:Premiumは、オートスケール、より多くのスロット、Private Endpointのサポート、および本番トラフィックに適したSLAを提供します。スロットは、安全なブルーグリーンリリースとカナリアルーティングを提供します。
- プライベートイングレスと制御されたエグレスを強制する
- Web Appに対してPrivate Endpointを有効にし、パブリックネットワークを拒否するアクセス制限を設定します。
- プライベートデータストアやExpressRoute経由のオンプレミスへのアウトバウンドアクセスのために、委任されたサブネットへのリージョンVNet統合を構成します。
- 理由:Private Endpointとアクセス制限の組み合わせにより、プライベートのみのアクセスが保証されます。VNet統合は、VNetの境界を経由してエグレスをルーティングし、一貫したファイアウォールポリシーを適用します。
- Azure Functions Premiumでバックグラウンド処理を実装する
- PremiumプランでFunction Appをデプロイし、システム割り当てマネージドIDを使用します。キュー駆動のワークロードにはService BusとStorageトリガーを利用します。
- コールドスタートをなくすために最小限の事前ウォーミングインスタンスを設定し、同じVNetと統合します。
- 理由:Premium Functionsは、バースト的なワークロードに対してサーバーレスのスケーリングを維持しつつ、低レイテンシとVNetの要件を満たします。
- Logic Apps Standardでサービス横断的なワークフローをオーケストレーションする
- 顧客のオンボーディングを調整するワークフローを構築します。Service Busメッセージでトリガーし、Function Appを呼び出し、Storageに書き込み、Microsoft 365コネクタ経由で通知します。
- Key VaultとStorageへのアクセスにマネージドIDを使用し、同じApp ServiceプランにデプロイしてVNet統合とプライベートエンドポイントを活用します。
- 理由:Logic Appsは、回復力のある視覚的なオーケストレーションとネイティブコネクタを提供します。StandardはVNet統合とシングルテナントのパフォーマンスを提供します。
- 夜間ETLをAzure Container Instancesで実行する
- ETLコンテナを含むコンテナグループを定義し、中間データ用にAzure Files共有をマウントし、安全な環境変数を設定し、restartPolicy: Neverを使用します。
- データベースへのプライベートアクセスのために、グループをVNetの委任されたサブネットにアタッチします。
- 理由:ACIは、クラスターのオーバーヘッドなしに秒単位のジョブ指向コンピューティングを提供し、データの局所性とセキュリティのためにVNetと統合します。
- AKSでコンテナ化されたマイクロサービスの準備をする
- 小さなLinuxシステムノードプールと予想される負荷に合わせたユーザーノードプールを持つAKSクラスターを作成し、クラスターオートスケーラー(最小/最大境界)を有効にし、ポッドレベルのIPのためにEntra IDとAzure CNIと統合します。
- kubectlを使用してカナリアマイクロサービスをデプロイし、CPUとカスタムメトリックに基づいてHPAを設定します。
- 理由:AKSは、サービスが増加した際にエンタープライズグレードのオーケストレーションを提供します。オートスケーラーとHPAはキャパシティを需要に合わせ、kubectlは標準的な運用管理を提供します。
← Azure ストレージ · すべてのドメイン · Azure データベースとデータサービス →
これらの問題を練習する → · 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.
試験に合格する →