[資格] AZ-204 Azure Developer Associate対策

AZ-204について

Azure Developer Associate試験は、Azureサービスを利用して、要件定義・設計・開発を行うために必要な知識を問われる試験です。

https://learn.microsoft.com/ja-jp/certifications/azure-developer/

試験について

試験情報

試験コード AZ-204
試験名 Developing Solutions for Microsoft Azure
合格ライン 700点
問題数 45問
試験時間 100分

試験問題の構成

試験問題は以下の4つのパートに分かれていて、それぞれ解答を終えると後戻りはできません。

1. シナリオに対する問題

10問

Azureを運用する1つのシナリオが提示されて、それに対する様々な質問に回答する問題

2. 独立した問題

33問

Azureサービスの運用、保守、開発に関する様々な問題

3. ケーススタディ①

1問

あるシナリオに対する対応が適しているか・または可能かをYes/Noで答える問題(対応方法が3パターンある)

4. ケーススタディ②

1問

上に同じ

プログラミング言語

試験問題に使用されるプログラミング言語は以下の二つからどちらかを選択します。

  • C#
  • Python

学習方法

現時点でAZ-204の日本語版の問題集や参考書などは存在しません。

対策方法としては、冒頭の試験についてのページにあるラーニングパスが有効なのでこちらで学習を進めていきます。

なおこのページから練習問題を無料で受けれますが、すべて英語です。英語に抵抗がなければこれも非常に有効だと思います。少しやってみましたが、私には無理でした。

参考書

AZ-204についての参考書ではありませんが、Azure関連書籍はいくつか参考になりそうなものがあるので紹介しておきます。

Azure定番システム設計・実装・運用ガイド 改訂新版
  • App Service、Storageについての基本、操作、ベストプラクティスなど
Azure Functions入門 -サーバー管理を不要にするサーバーレスアプリ開発のすべて-
  • App Functionsの基礎、実装、ストレージの利用、各種トリガー
  • メッセージングサービス
  • Event Grid

対策

App Service

App Serviceプラン価格レベル

  • 共有コンピューティング
    他のAzureユーザーと共有のリソースプールで実行される。スケールアウトはできない。
  • 専用コンピューティング
    Basic、Standard、Premiumのレベルの場合、専用のVMで実行される。価格レベルが高いほど、スケールアウトで使用できるVMインスタンスの数が多い。
  • lsolated
    専用のAzure仮想ネットワーク上でVMインスタンスが実行され、ネットワークの分離を提供する。最大のスケールアウト機能を提供する。
  • 従量課金
    関数アプリにのみ使用できる。ワークロードに応じて関数を動的にスケーリングする。

全般設定

  • アプリを実行するためのソフトウェアスタック
    (プログラミング言語、SDKバージョン)
  • プラットフォームの設定
    (WebSocketプロトコル、Always On、マネージドパイプラインバージョン 、HTTPバージョン、ARR affinity)
  • デバッグ
    リモートデバッグを有効にする。48時間後の自動的に無効になる。
  • 受信クライアント証明書
    アプリケーションへのアクセス制限

App Serviceへのデプロイ

  • 自動デプロイ
    Azure DevOps、GitHub、Bitbacket
  • 手動デプロイ
    Git、CLI、Zipデプロイ、FTP/S

デプロイスロット

スワップされる設定とされない設定
スワップされる スワップされない
一般設定(フレームワークバージョン、32/64ビット、Webソケットなど) 発行エンドポイント
アプリ設定(スロット固有として構成可能) カスタムドメイン名
接続文字列(スロット固有として構成可能) パブリックでない証明書とTLS/SSL設定
ハンドラーマッピング スケールの設定
パブリック証明書 Webジョブスケジューラ
Webジョブコンテンツ IP制限
ハイブリッド接続 常時接続
Virtual Network統合 診断ログの設定
サービスエンドポイント クロスオリジンリソース共有(CORS)
Azure Content Delivery Network

自動スケーリングプロファイル適用条件

  • スケールアウト
    いずれかのルールが満たされた場合にスケールアウトする。
  • スケールイン
    すべてのルールが満たされた場合にスケールアウトする。

Azure Functions

ホスティングプラン

  • 従量課金プラン
    規定のホスティングプランで、自動的にスケールされる。
  • Premiumプラン
    自動的にスケーリングされ、ワーカーを使用してアイドル状態であっても遅延することなく実行できる。
  • 専用プラン
    App Serviceプランで実行する。実行時間がある程度予測可能なシナリオに最適。

関数アプリの構成ファイル(function.json)

  • トリガー
    トリガーは関数アプリが実行される要因、すべての関数アプリには必ず1つのトリガーが存在する。
  • バインド
    バインドは関数アプリとのデータの受け渡し用に使用されるパラメータで、inとoutが存在する。省略可能

Durable Functions(永続関数)

Azure Functions単体の関数アプリでは実現が難しい複雑な処理や、実行時間の長い処理などを、関数チェーンや並列処理を利用して実現する。

アプリケーションのパターン

  • 関数チェーン
    一連の関数を特定の順序で実行する。関数同士で処理したデータの受け渡すことができる。
  • ファンアウト/ファンイン
    複数の関数を並列で実行する。複数の関数で処理された結果に基づいて集計作業などを行う。
  • 非同期HTTP API
    外部クライアントと連携する長い処理時間に対処する。
  • モニター
    ワークフロー内の柔軟な繰り返しプロセスを処理する。特定の条件が満たされるまでポーリングするなどのシナリオに使用できる。
  • 人による操作
    要求と承認が必要なプロセスを処理する。

永続関数の種類

  • オーケストレーター関数
    アクションが実行される方法と、アクセスの実行順序が記述される。1つのオーケストレーションに、アクティビティ関数、サブオーケストレーション、外部イベントの待ち受け、HTTP、タイマーなど様々な種類のアクションを設定できる。
  • アクティビティ関数
    永続関数オーケストレーションの基本単位。オーケストレーター関数に記述されるそれぞれのタスクが、別個のアクティビティ関数となる。
  • エンティティ関数
    エンティティの状態の読み取りと更新のための操作を提供する。
  • クライアント関数
    オーケストレータークライアントバインド、エンティティクライアントバインドを使用してオーケストレーター関数、エンティティ関数に向けてメッセージをエンキューする。

Azure Blob Storage

ストレージアカウントの種類

  • 汎用v2
    パフォーマンスレベル: Standard
    BLOB、ファイル共有、キュー、テーブル用のStandardタイプのストレージアカウント
    Azure Storageサービスの多くのシナリオで推奨される。
  • ブロックBLOB
    パフォーマンスレベル: Premium
    ブロックBLOBと追加BLOB用のPremiumタイプのストレージアカウント
    トランザクションレートが高く、ストレージ待ち時間が短い。
  • ページBLOB
    パフォーマンスレベル: Premium
    ページBLOB用のPremiumタイプのストレージアカウント

ブロックBLOB用のデータアクセス層

  • ホット
    ストレージアカウント内のオブジェクトに頻繁にアクセスされるケースに最適化されている。ストレージコストは最も高く、アクセスコストは最も安い。新しいオブジェクトは規定でホット層に作成される。
  • クール
    アクセスされる頻度が低いデータで、少なくとも30日以上保管されるデータに適している。ホット層にくらべて、ストレージコストは安く、アクセスコストは高い。
  • アーカイブ
    アクセスには数時間の待機時間がかかり、少なくとも180日以上保管されるデータに適している。ストレージコストは最も安く、アクセスコストは最も高い。
    ブロックBLOBにのみ適用できる。

BLOBの種類

  • ブロックBLOB
    テキストとバイナリデータが格納される。
    個別に管理できるデータブロックで構成されている。
  • 追加BLOB
    ブロックBLOBと同様にデータブロックで構成されているが、追加操作用に最適化されている。ログファイルの書き込みなどのシナリオに最適化されている。
  • ページBLOB
    最大8TBほどのランダムアクセスファイルが格納される。Azure仮想マシンのディスクとして機能する。

BLOBサービスを利用するプログラムの開発(C#)

  • BlobServiceClient
    ストレージアカウントレベルでリソースの操作ができる(コンテナーの一覧表示、作成、削除など)。
  • BlobContainerClient
    BlobServiceClientオブジェクトから取得する。コンテナーの作成、削除、コンテナー内のBLOBの一覧表示、アップロード、削除などができる。
  • BlobClient
    BlobServiceClient、またはBlobContainerClientから取得し、特定のBLOBを操作できる。

Azure Cosmos DB

整合性レベル

  • 強固(Strong)
    線形化可能性により、ユーザーが最新のコミット済みの書き込みを読み取ることが常に保証される。
  • 有界整合性制約(Bounded staleness)
    整合性のあるプレフィックスの優先が保証される。
  • セッション(Session)
    単一のクライアントセッション内の読み取りでは、整合性のあるプレフィックス、単調読み取り、単調書き込み、自己書き込みの読み取り、読み取り後の書き込みの優先が保証される。
  • 一貫性のあるプレフィックス
    単一ドキュメントの書き込みとして行われる更新の場合、最終的な整合性が保証される。
  • 最終的な一貫性
    読み取りの順序の保証はない。さらに書き込みがない場合、レプリカが最終的に収束する。スループットは最も早い。

API

  • NoSQL API
    データをドキュメント形式で格納する。構造化照会言語(SQL)構文を使用した項目のクエリがサポートされている。
  • MongoDB API
    データをBSON形式で格納する。
  • PostgreSQL API
    PostgreSQLを任意のスケールで実行する。
  • Apache Cassandra API
    列指向スキーマにデータを格納する。大量のデータを格納するため高度な分散型水平方向スケーリングする。
  • Apache Gremlin API
    グラフクエリを作成できるようになり、データはエッジと頂点として格納される。
  • Table API
    データをキー/値形式で格納する。

要求ユニット(RU)について

Azure Cosmos DBの全データベース操作のコストを表すために使用される測定単位

トリガー

  • プレトリガー
    データベース項目の変更前に実行される。入力パラメータを与えることはできない。作成される項目のプロパティの検証などに使用できる。
  • ポストトリガー
    データベース項目の変更後に実行される。ポストトリガーの実行中に例外が発生すると、トランザクション全体がロールバックされる。

変更フィードプロセッサ

変更フィードを読み取り、イベント処理を複数のコンシューマーに効率的に分散させる。以下のコンポーネントがある。

  • 監視対象コンテナー
    変更フィードの生成元となるデータが含まれている。監視対象コンテナーに対する挿入と更新が、コンテナーの変更フィードに反映される。
  • リースコンテナー
    状態ストレージとして機能し、複数のworker間での変更フィードの処理を調整する。
  • コンピューティングインスタンス
    変更をリッスンする変更フィードプロセッサをホストする。
  • デリゲート
    変更フィードプロセッサによって読み取られる変更の各バッチについて、開発者が行いたいことが定義されている。

Azure Container Registry

サービスレベル

  • Basic
    Azure Container Registryを学習する開発者向け。
  • Standard
    機能自体はBasicと同じだが、含まれるストレージとスループットが拡大されている。
  • Premium
    含まれるストレージ、スループットが最も大きく、大規模なシナリオに対応できる。geoレプリケーションに対応している。

コンテナー再起動ポリシー

  • Always
    常に再起動する。(デフォルト)
  • Never
    再起動しない。
  • OnFailure
    コンテナーで実行されたプロセスが失敗した場合にのみ再起動する。

セキュリティで保護された値

YAMLファイル内で機密情報(アプリケーションキーやパスワード)などを扱う場合は、secureValueプロパティを指定することで安全に扱うことができる。

properties: 
  containers: 
  - name: testcontainer 
    properties: 
      environmentVariables: 
        - name: 'USER' 
          value: 'user' 
        - name: 'PASSWORD' 
          secureValue: 'password' 

Microsoft IDプラットフォーム

サービスプリンシパル

Azure ADによって保護されたリソースにアプリケーションからアクセスするために発行されるシークレット、または証明書。以下の種類がある。

  • アプリケーション
    単一テナント内のアプリケーションインスタンス
  • マネージドID
    マネージドIDを表す目的で使用され、権利やアクセス許可を付与できるが、直接変更したり更新したりすることはできない。
  • レガシー
    アプリの登録前に作成されたアプリ、またはレガシーエクスペリエンスによって作成されたアプリが使用する。

アクセス許可の種類

  • 委任(デリゲート)されたアクセス許可
    サインインしているユーザーに対して、目的のリソースに対するアクセスを委任する。
  • アプリ専用アクセス許可
    サインイン済みユーザーが存在せずに実行されるアプリ(バックグラウンドプロセスやデーモンなど)で使用される。

同意の種類

  • 静的ユーザーの同意
    サインインしているユーザーに対して、目的のリソースに対するアクセスを委任する。
  • アプリ専用アクセス許可
    サインイン済みユーザーが存在せずに実行されるアプリ(バックグラウンドプロセスやデーモンなど)で使用される。

Shared Access Signature(SAS)

ストレージリソースに対して特殊なクエリパラメータ(SASトークン)によってアクセスできるようにする。次の3種類のSASがある。

  • ユーザー委任SAS
    Azure ADの資格情報とSASに指定されたアクセス許可によって保護される。BLOBストレージにのみ適用できる。
  • サービスSAS
    ストレージアカウントキーによって保護される。BLOB、Queue、Table、Filesの、各Azure Storageリソースへ適用できる。
  • アカウントSAS
    ストレージアカウントキーによって保護される。ユーザー委任SAS、サービスSASでできるすべての操作は、アカウントSASでも同じことができる。
  • BLOBストレージにアクセスする際は、最もセキュリティの高いユーザー委任SASが推奨されている。
  • サービスSAS、アカウントSASを使用する場合、SASトークンにアクセスポリシーを関連付けることでセキュリティを高めることができる。

Microsoft Graph

Office 365やAzure ADなどのデータをグラフ形式で扱うことができる。Microsoft Graphは、以下の3つのコンポーネントで構成されている。

  • Microsoft Graph API
    単一のエンドポイントが提供される。REST API、またはSDKによってアクセスできる。
  • Microsoft Graphコネクタ
    Azure外部にあるデータをMicrosoft Graph のサービスとアプリケーションに送信する。
  • Microsoft Graphデータ接続
    AzureデータストアへMicrosoft Graphデータの送信を合理化するためのツールセット

Azure Key Vault

認証

  • マネージドID
    仮想マシンやその他のAzureリソースにIDを割り当てる。
  • サービスプリンシパルと証明書
    サービスプリンシパルとKey Vaultにアクセスできる証明書を使用する。
  • サービスプリンシパルとシークレット
    サービスプリンシパルとシークレットを使用して認証を行う。
  • マネージドIDによる認証の場合、シークレットがアプリケーションで管理せず自動でローテーションされるため、ほとんどのシナリオで推奨されている。その他の認証方法は、開発者によるローテーションが必要なためコストがかかる。

マネージドID

Azure AD認証によって保護されたリソースに接続するときに使用される。マネージドIDには次の2種類がある。

  • システム割り当てマネージドID
    Azureサービスインスタンス上で有効になり、インスタンスが削除されるとAzure IDの資格情報はクリーンアップされる。
  • ユーザー割り当てマネージドID
    関連付けられているAzureリソースから独立して存在している(スタンドアロン)。明示的に削除する必要がある。

トークン

マネージドIDにより発行されるトークンは、サービスプリンシパルに基づいて生成される。

Azure App Configuration

アプリケーション設定と機能フラグを一元的に管理する。

機能管理の基本的な概念

  • 機能フラグ
    ONかOFFかのバイナリ状態の変数
  • 機能マネージャー
    機能フラグのライフサイクルを処理するパッケージ
  • フィルター
    機能フラグの状態を評価するためのルール

API Management

コンポーネント

  • APIゲートウェイ
    API呼び出しを受け取り、適切なバックエンドにルーティングする。
  • 管理プレーン
    API Managementサービス設定をプロビジョニングして構成する。
  • 開発者ポータル
    APIキーを管理する。

ポリシー制御

  • choose
    ブール式の評価結果に基づいて、囲まれたポリシーステートメントを適用する。
  • forward-request
    要求コンテキストで指定されたバックエンドサービスに受信要求が転送する。
  • limit-concurrency
    指定数を超える要求をブロックする。
  • log-to-eventhub
    指定された形式のメッセージをLoggerエンティティによって定義されたイベントハブに送信する。
  • mock-response
    通常のパイプライン実行を中止し、モック応答を呼び出し元に返す。
  • retry
    再試行 condition が false になるか再試行 count に達するまで、実行を再試行を繰り返す。
  • return-response
    パイプラインの実行を中止し、既定またはカスタムの応答を呼び出し元に返す。

Azure Event Grid

イベントのプロパティ

  • topic
    [任意] イベントソースのリソースパス
  • subject
    [必須] 発行元が定義したイベント対象のパス
  • eventType
    [必須] イベントの種類
  • eventTime
    [必須] イベントの発生時刻
  • id
    [必須] イベントの一意な識別子
  • data
    [任意] イベントデータ
  • dataVersion
    [任意] スキーマバージョン
  • metadataVersion
    [任意] メタデータのスキーマバージョン

イベントのアクセス制御

  • Event Gridサブスクリプション閲覧者
    Event Grid のイベントサブスクリプションを読み取ることができる。
  • Event Gridサブスクリプションの共同作成者
    Event Grid のイベントサブスクリプション操作を管理できる。
  • Event Gridの共同作成者
    Event Gridリソースの作成と管理を行うことができる。
  • Event Gridデータ送信者
    Event Gridトピックにイベントを送信できる。

Azure Event Hubs

コンポーネント

  • Event Hubsクライアント
    Event Hubsクライアントライブラリとやりとりする開発者向けのプライマリインターフェイス
  • Event Hubsプロデューサー
    テレメトリデータ、診断情報、ログデータのソースとして機能するクライアント
  • Event Hubsコンシューマー
    Event Hubsから情報を読み取って処理できるようにするクライアント
  • パーティション
    Event Hubsに保持されている順序付けられた一連のイベント
  • コンシューマーグループ
    Event Hubs全体のビュー
  • Eventレシーバー
    Event Hubsからイベント データを読み取るエンティティ
  • スループットユニット
    Event Hubsのスループット容量を制御、購入前の容量の単位

Azure Service Bus

高度な機能

  • メッセージセッション
    先入れ先出し (FIFO) 処理を保証する。
  • トランザクション
    複数の操作を一つの実行スコープにグループ化する。

Azure Cache for Redis

サービスレベル

  • Basic
    開発やテスト用のワークロード、SLAはない
  • Standard
    レプリケートされた2つのVM上で実行される
    運用シナリオで使用する最低ラインのレベルとして推奨されている。
  • Premium
    高パフォーマンス
  • Enterprise
    Redis Enterpriseソフトウェアを搭載
    Premiumレベルよりも高い可用性
  • Enterprise Flash
    Enterpriseよりもコスト効果の高い大規模キャッシュ

値の有効期限について

  • 有効期限は秒、またはミリ秒の制度で設定できる。
  • 有効期限切れの1ミリ秒の精度でパージされる。
  • 期限切れに関する情報は、ディスクに複製され、永続的に保管される。

Azure Content Delivery Network

制限事項

  • 作成できるCDNプロファイルの数
  • CDNプロファイルに作成できるエンドポイントの数
  • エンドポイントにマッピングできるカスタムドメインの数

キャッシュの有効期限

既定のTTL
対象コンテンツ TTL
一般化されたWeb配信の最適化 7日
大きなファイルの最適化 1日
メディア ストリーミングの最適化 1日

コメント

このブログの人気の投稿

docker-compose up で proxyconnect tcp: dial tcp: lookup proxy.example.com: no such host

docker-compose で起動したweb、MySQLに接続できない事象

【PHP】PHP_CodeSnifferを使う(コーディングルールのカスタマイズ)