AWS Certified Developer – Associate 試験 (DVA) 試験が改訂されると AWS からのアナウンスがありました。
新しくなった AWS Certified Developer – Associate 試験の登録の受付を開始しました。
https://aws.amazon.com/jp/certification/coming-soon/
また、現行のバージョンとの相違点についての解説ブログが投稿されています。
更新版の AWS Certified Developer – Associate 試験 の登録が開始されました。この試験の最初の受験日は 2023 年 2 月 28 日です。変更点はそれほど多くはなく、トレンド、業界状況、およびクラウドプロフェッショナルの業務慣行の変化を反映しています。
https://aws.amazon.com/jp/blogs/news/updated-aws-certified-developer-associate-registration-now-open/
ただ、解説ブログを読んでもいまいちピンと来なかったので、自分で試験概要を見比べて比較してみました。
参考にしたのは、上記の 2 サイトに加えて、以下の情報です。
受験概要と受験対象者
全体的に書き換えられているのですが、どちらか一方の試験ガイドにしかない表現を整理して、傾向を確認してみます。
DVA-C01 のみ | DVA-C02 のみ |
---|---|
・AWS の責任共有モデルを理解する ・AWS セキュリティのベストプラクティスを利用してコードを記述する | ・アプリケーションコードとデータの保護 |
・サーバーレスアプリケーション用のコードを記述する能力 ・開発プロセスでのコンテナの使用に関する理解 | ・コード書き込みためのクラウドネイティブアプリケーションの基礎的な理解 |
・AWS のサービスの主要な機能を特定する ・AWS のサービスを使用し、やり取りする | ・実用的なアプリケーションの開発能力 ・開発ツールの使用経験 |
(試験範囲外として) ・Amazon ECS の管理 ・コンプライアンスとライセンスの理解 | (試験範囲外として) ・アーキテクチャの設計 ・サーバーとオペレーティングシステムの管理 |
こうやって整理してみると、まず、セキュリティについては「責任共有モデルの理解」や「ベストプラクティスを利用」という文言から「コードとデータの保護」という文言に変わっていました。より開発者視点でのセキュリティに関する言及にはなっていますが、恐らく問われる部分はそれほど変わらないと思われます。
続いて、「サーバーレス」や「コンテナ」というワードが「クラウドネイティブ」というワードにまとめられているように感じました。これは今後、サーバーレスやコンテナに限定せずにクラウド上での開発に必須となるテクノロジーについて出題範囲になることを示唆していそうです。
他には、各 AWS サービスに関するフワッとした知識ではなく、実用的な開発経験やツールの使用経験が明示的に求められるようになっていて、今後はより具体的なコードサンプルをみて回答するような設問が増える可能性があるかもしれません。
また、試験範囲外の項目としては、アーキテクチャの設計については明示的に範囲外となりました。また、コンテナの管理がサーバーや OS の管理に変わっていて、これだけではコンテナの管理が引き続き試験範囲外なのか判断することは難しそうです。ただ、試験対象カテゴリにコンテナ自体はあるので、設問の中にコンテナ系サービスが登場するのは間違いないでしょう。
ということで受験概要と受験対象者については、より具体的な経験者としての知識と経験 が求められるようになると考えることができそうです。
試験形式
特に変更はありません。
試験分野
まずは試験分野についてです。
DVA-C01 | DVA-C02 |
---|---|
3.AWS のサービスによる開発(30%) | 1.AWS のサービスによる開発(32%) |
2.セキュリティ(26%) | 2.セキュリティ(26%) |
1.デプロイ(22%) | 3.デプロイ(24%) |
5.モニタリングとトラブルシューティング(12%) | 4.トラブルシューティングと最適化(18%) |
4.リファクタリング(10%) |
試験分野の順序が変わっているので、DVA-C02 を基準にして整理しました。まず目がいくのは「リファクタリング」の分野がなくなったことでしょう。これは前述のブログでは「現行版 (DVA-C01) の第 4 分野(リファクタリング)は他のドメインとかなり重複していると判断されたため、この分野のコンテンツは DVA-C02 の新しい構造に吸収されました。」と説明がありました。また、順序が変更されたことについても「また、現在の業務慣行をより論理的かつ正確に反映するように分野の順序も変更されました。」とのことです。
前述のブログに記載のないところでいうと、第4分野の割合の増加が最も高いところになっている点に気が付きます。ただしこれは、各分野の出題内容を読み解いてみると、リファクタリングが最適化に名称を変えて組み込まれているようです。
以下、各分野の出題内容を比較してみます。ただ、全体的にフォーマットが変更されて比較がとても難しいので、個人の感覚で無理やり比較しています(なお、新バージョンの試験ガイドの書き方のほうが出題内容が明確で好みです)。
増えた内容 (+)
減った内容 (-)
(他のカテゴリに記載の内容)
第 1 分野: AWS のサービスによる開発
DVA-C01 | DVA-C02 |
---|---|
3.2 機能要件をアプリケーション設計に変換します 3.3 アプリケーション設計をアプリケーションコードに実装します 3.4 API、SDK、AWS CLI を使用して AWS のサービスとやり取りするコードを記述します | 1: AWS でホストされているアプリケーション用のコードの開発 |
・ステートレス化 ・リアルタイム vs バッチ (-) ・同期 vs 非同期 ・リトライ機構 ・スケジュール&ポーリング (-) ・API の作成&テスト ・メッセージングサービス ・AWS CLI, SDK の利用 | ・パターン(マイクロサービス、モノリス、コレオグラフィー、ファンアウト、…)(+) ・冪等性 (+) ・ステートフル vs ステートレス ・密結合 vs 疎結合 (+) ・同期 vs 非同期 ・リトライ機構、DLQ ・Java, C# 等での回復性のあるプログラム (+) ・API の作成&保守 ・単体テストの作成&実行 (+) ・メッセージングサービス ・AWS SDK の利用 ・ストリームデータの処理 (+) |
3.1 サーバーレスアプリケーション用のコードを記述します | 2: AWS Lambda 用のコードの開発 |
・サーバーレスとは (-) ・Lambda の環境変数とパラメータ ・Lambda と他サービスとの連携 | ・イベントソースマッピング、ステートレス、イベント駆動 (+) ・Lambda の環境変数とパラメータ ・Lambda のテストとエラー処理 (+) ・Lambda のチューニング (+) ・Lambda と他サービスとの連携 ・VPC 内 Lambda (+) |
3: アプリケーション開発でのデータストアの使用 | |
(・DynamoDB の概要と CU の計算) (・整合性モデル) (・キャッシュの利用) | ・RDB, 非 RDS, CRUD 操作 (+) ・DynamoDB のキーとインデックス、カーディナリティ、Query vs Scan (+) ・ストレージオプション(EBS, インスタンスストア, EFS, S3) (+) ・整合性オプション ・キャッシュ戦略 |
まず、マイクロサービスアーキテクチャやイベント駆動アーキテクチャに関する一般的な知識について明記されるようになりました。「コレオグラフィーパターンの実現に適した AWS サービスはどれか?」のような設問が増えることが予想されます。また、具体的なプログラミング言語(Java や C#)についても言及があるため、実際のコードを見ながら答えるような設問も増えるかもしれません。このあたりの部分が受験概要のところにあった「より具体的な経験者としての知識や経験」につながってきそうです。
Lambda まわりについては、テストやチューニングについてが明記されるようになって、より詳細な内容を問う設問が増えそうです。また、VPC 内 Lambda や RDB が明記されるようになったことから、例えば Lambda – Aurora のような構成についても目にするようになるかもしれません。
なお、ストリームデータの処理というまったく新しい内容が追加されたように見えますが、DVA-C01 時代でもストリームデータを扱う Amazon Kinesis が試験範囲にあったことから、新規追加というよりは内容拡充と捉えたほうがよさそうです。
ということで第 1 分野については、問われることが明確化され、一般的な知識や Lambda 周りについて特に深く問われることになりそう、というまとめとなります。
第 2 分野: セキュリティ
DVA-C01 | DVA-C02 |
---|---|
2.1 AWS のサービスに対して認証された呼び出しを行います 2.3 アプリケーションの認証と認可を実装します | 1: アプリケーションと AWS のサービスの認証および/または認可の実装 |
・Amazon Cognito の利用 ・IAM ロールの引受 ・最小権限の原則 ・プログラムからのアクセス | ・OIDC, SAML, JWT, OAuth, … (+) ・RBAC, ACL, … (+) ・Amazon Cognito の利用 ・IAM ポリシーの種類 (+) ・IAM ロールの引受 ・最小権限の原則 ・プログラムからのアクセス |
2.2 AWS のサービスを使用して暗号化を実装します | 2: AWS サービスを使用した暗号化の実装 |
・保管中の暗号化 ・転送中の暗号化 ・クライアント側暗号化 vs サーバー側暗号化 | ・保管中の暗号化 ・転送中の暗号化 ・証明書管理 (+) ・キーの種類と管理 (+) ・クライアント側暗号化 vs サーバー側暗号化 |
3: アプリケーションコードでの機密データの管理 | |
・データ分類(PII, PHI) (+) ・環境変数、暗号化 (+) ・シークレット管理 (+) ・機密データのサニタイズ (+) |
セキュリティ分野はかなり内容が拡充された印象です。まず、先程の開発分野と同様の傾向で、セキュリティに関する一般知識でなにが問われるのかが明確になりました。OIDC や SAML といったフェデレーションまわりのプロトコルについては、これまでの試験範囲にもあった Cognito の学習の際について回るので自然と学んでおく必要があったためそれほど問題にはならないかと思いますが、PII や PHI といったデータ分類とそれらをどう扱うかについては追加の学習が必要になるかもしれません。
他にも、証明書、キー、シークレットの管理が範囲であることが明文化されました。関連サービスとしては、ACM や KMS、Secrets Manager あたりが挙げられるでしょうか。これらは SCS 認定資格で特に問われるサービスなので、追加分については SCS の参考書で補うことも必要になるかもしれません。
ということで第 2 分野については、試験範囲が広がっているので SCS の参考書が役に立つかも、というまとめとなります。
第 3 分野: デプロイ
DVA-C01 | DVA-C02 |
---|---|
1.3 AWS にデプロイするアプリケーションのデプロイパッケージを準備します。 | 1: AWS にデプロイするアプリケーションアーティファクトの準備 |
・パッケージ化 ・コンテナ ・リソース設定 | ・パッケージ化、設定ファイル ・Lambda のデプロイ、レイヤ (+) ・バージョン管理システム (+) ・コンテナ ・リソース設定 |
2: 開発環境でのアプリケーションのテスト | |
・コードのテスト (+) ・モックの利用 (+) ・再デプロイによる環境の更新 (+) | |
3: デプロイテストの自動化 | |
(・APIGW のステージ) | ・APIGW のステージ ・Lambda のバージョン&エイリアス (+) ・テストイベント作成 (+) ・複数環境へのデプロイ (+) ・CI/CD パイプライン (+) ・IaC (+) |
1.1 既存の CI/CD パイプライン、プロセス、パターンを使用して、記述されたコードを AWS にデプ ロイします | 4: AWS CI/CD サービスを使用したコードのデプロイ |
・バージョン管理システム ・ラベル&ブランチ ・CodePipeline ・ロールバック | ・バージョン管理システム ・ラベル&ブランチ ・CodePipeline、承認 ・設定ファイル (+) ・アプリケーションのデプロイ (+) ・Lambda のデプロイ (+) ・APIGW ステージ (+) ・デプロイ戦略 (+) ・IaC テンプレート (+) ・ロールバック |
1.2 AWS Elastic Beanstalk を使用してアプリケーションをデプロイします | |
(DVA-C02 では削除) |
デプロイ分野は、Elastic Beanstalk 範囲がカットされて、新たに 2 つの範囲が追加されるという、最も再編成が行われた分野です。全体としては、旧バージョンから引き続き Code 系サービスを用いたパイプラインの構築だけではなく、SAM や CDK といった IaC ツールを用いたデプロイ方法についても多く問われるようになる雰囲気を感じます。
また、バージョン管理システムやブランチ戦略、テスト、複数環境へのデプロイといったように、パイプラインの各ステージについてもより掘り下げられるようになっている印象があります。ただ、他の AWS 認定資格として DOP という DevOps を対象とした資格があることから、そことの差別化のためにそれほど深い内容は問われないことを期待したいです。
加えて、設定ファイルについての項目が独立していることにも目がいきます。これは恐らく複数環境へのデプロイと関連した内容で、環境依存の設定を設定ファイルとして独立させて、Parameter Store や Secrets Manager や AppConfig などから動的に取得させる、というパターンを想定しているものと思われます。これらはどれも試験対象サービス(後述)に新たに追加されたものになるので、要注意です。
ちなみに、分野としての Elastic Beanstalk はなくなりましたが、試験対象サービス(後述)の中には依然として含まれていますので、もしかしたら選択肢のひとつとして Elastic Beanstalk が登場することはあるかもしれません。
ということで第 3 分野については、多くの改編が実施されているので新範囲のサービスを含めた対策が必要、というまとめとなります。
第 4 分野: トラブルシューティングと最適化
DVA-C01 | DVA-C02 |
---|---|
5.2 テストまたは本番環境で見つかった障害の根本原因を分析します | 1: 根本原因分析の支援 |
・ログの分析 ・X-Ray | ・監視システム (+) ・メトリクス、ログ、トレース (+) ・ログへのクエリ (+) ・可視化 (+) ・コード&ログの分析、デバッグ ・HTTP エラー、SDK 例外 (+) ・X-Ray |
5.1 モニタリング可能なコードを記述します | 2: 可観測性のためのコードの計測 |
・カスタムメトリクス ・X-Ray | ・可観測性、モニタリング、ロギング (+) ・カスタムメトリクス ・分散トレース、アノテーション ・通知アラート (+) |
3: AWS のサービスと機能を使用したアプリケーションの最適化 | |
(・キャッシュ) | ・キャッシュ ・同時実行 (+) ・メッセージングサービス、フィルタ (+) ・パフォーマンス測定 (+) |
最後の監視分野も多くの内容が明記されるようになりましたが、どちらかというと、旧バージョンの試験ガイドに書かれていなさすぎた、と捉えるほうが自然かもしれません。
新たに明記されるようになった項目を見てみると、可観測性というキーワードが色濃く現れているように感じます。つまり、メトリクスやログやトレースを集めて終わりではなく、可視化や分析を通して具体的な改善アクションまで実行できるか、という部分です。メトリクスの可視化やログへのクエリは開発者の責務なのかというところには議論の余地があるかもしれませんが、試験範囲と明記されてしまったからには対策するしかありません。
開発者らしい項目としては、一般的な HTTP エラーや SDK の例外についても出題されると明記されるようになりました。そしておそらく、そういったエラーから回復するためのコードや対策についても問題のなかで問われることになるでしょう。
ということで第 4 分野については、問われることが明確になり、特に可観測性まわりについて追加の学習が必要、というまとめとなります。
対象サービス
これらは試験ガイドの付録として掲載されていて、試験ガイド内にも同じ注釈がありますが、試験範囲に関する網羅的なリストではない ことに注意が必要です。
対象カテゴリ
DVA-C01 | DVA-C02 |
---|---|
分析 | 分析 |
アプリケーション統合 | アプリケーション統合 |
インスタンス (仮想マシン) | コンピューティング |
サーバーレス | |
コンテナ | コンテナ |
コストと容量管理 | コストと容量管理 |
データ移動 | データベース |
デベロッパーツール | デベロッパーツール |
マネジメントとガバナンス | マネジメントとガバナンス |
ネットワークとコンテンツ配信 | ネットワークとコンテンツ配信 |
セキュリティ | セキュリティ、アイデンティティ、コンプライアンス |
ストレージ |
「インスタンス」と「サーバーレス」が「コンピューティング」というカテゴリに集約されたように見えます。もともと AWS では仮想マシン・コンテナ・サーバーレスの 3 つをコンピューティングというカテゴリでくくっているので(参考)、であるならば「コンテナ」カテゴリも集約してしまえばよかったと思うのですが、そういうことではないのですかね。受験者としてはコンテナと明記してくれたほうがありがたいですし、なんなら旧バージョンのように「サーバーレス」と明記してくれてたほうがありがたいです。
他には、新バージョンの試験ガイドから表現変更&明記となっているセキュリティとストレージについてですが、もともと DVA-C01 の試験範囲ではあったようです(ガイド中の他の箇所に記載があります)。なので、対象カテゴリが増えたわけではなく、これまで抜け漏れがあった部分が明記されるようになったと解釈したほうがよさそうです。ただ、わざわざ表現変更&明記とするくらいですので、この分野の設問の拡充を予感させます。
ですので結論は、対象カテゴリについては何も変わらない、となるでしょうか。
対象サービス
追加されたサービス (+)
削除されたサービス (-)
分析 | アプリケーション統合 | コンピューティング |
• Amazon Athena (+) • Amazon Kinesis • Amazon OpenSearch Service | • AWS AppSync (+) • Amazon EventBridge • Amazon SNS • Amazon SQS • AWS Step Functions | • Amazon EC2 • AWS Elastic Beanstalk • AWS Lambda • AWS SAM (+) |
コンテナ | データベース | デベロッパーツール |
• AWS Copilot (+) • Amazon ECR • Amazon ECS • Amazon EKS | • Amazon Aurora (+) • Amazon DynamoDB • Amazon ElastiCache • Amazon MemoryDB for Redis (+) • Amazon RDS | • AWS Amplify (+) • AWS Cloud9 (+) • AWS CloudShell (+) • AWS CodeArtifact • AWS CodeBuild • AWS CodeCommit • AWS CodeDeploy • Amazon CodeGuru • AWS CodePipeline • AWS CodeStar • AWS Fault Injection Simulator (-) • AWS X-Ray |
マネジメントとガバナンス | ネットワークとコンテンツ配信 | セキュリティ、アイデンティティ、コンプライアンス |
• AWS AppConfig (+) • AWS CDK (+) • AWS CloudFormation • AWS CloudTrail (+) • Amazon CloudWatch • Amazon CloudWatch Logs (+) • AWS CLI (+) • AWS Systems Manager (+) | • Amazon API Gateway • Amazon CloudFront • Elastic Load Balancing • Amazon Route 53 (+) • Amazon VPC (+) | • AWS Certificate Manager (+) • AWS Certificate Manager Private Certificate Authority (+) • Amazon Cognito • AWS IAM • AWS KMS • AWS Secrets Manager (+) • AWS STS (+) • AWS WAF (+) |
ストレージ | ||
• Amazon EBS (+) • Amazon EFS (+) • Amazon S3 • Amazon S3 Glacier (+) |
DVA-C02 を基準に増減を色分けしてみましたが、かなり対象サービスが増加した 印象です。本当に増加したのか、これまで明記されていなかったものが明記されるようになったかについては定かではありません。ただ、前述した試験分野での改編と照らし合わせて、特に重点的に対策すべき箇所については考察できそうです。
まず第 1 分野(開発)からは、ストレージとしての EBS, EFS、データベースとして Aurora 、キャッシュとして MemoryDB が追加されています。試験概要においてアーキテクチャに関する出題はないと明記されているものの、システムのデータをどこに永続化するかという観点での出題はあるかもしれないということであれば、各ストレージ・データベースサービスの概要については押さえておくべきでしょう。また、前述したように VPC 内 Lambda と VPC 内リソース(例えば Aurora)との組み合わせについても対策しておいて損はなさそうです。他にはこっそり AppSync が追加されていますが、これはマネージド GraphQL のようなサービスだったはずで、GraphQL については記載がないので、メインで対象とされるサービスではないのかもしれません。
続いて第 2 分野(セキュリティ)からは、証明書管理に ACM、シークレット管理に Secrets Manager が追加されています。この 2 つと、キー管理のための KMS については試験分野の項目としてばっちり明記されているので、確実に押さえておきましょう。また、STS は IAM ロールの引受やフェデレーションに関連するサービスで、WAF はアプリケーションファイアウォールを APIGW 等に追加できるサービスなので、これらについては概要くらいは覚えておいたほうがいいかもしれません。
続いて第 3 分野(デプロイ)からは、CLI や SDK といった基本的なツールから、Amplify や CDK や SAM といった発展的なツール、そして Cloud9 や CloudShell といったマネージドな実行環境について幅広く押さえておく必要が出てきました。また、コンテナのデプロイには Copilot も活用できます。旧バージョンの試験ガイドでは CodePipeline や Elastic Beanstalk を中心に言及されていましたが、新バージョンからはユースケースに応じてこれらのツールを使い分けていく力が試されるということかと思います。また、前述したように設定ファイルの管理として AppConfig や SSM Parameter Store や Secrets Manager についても押さえておく必要がありそうです。
さいごに第 4 分野(トラブルシューティング)からは、CW Logs や CloudTrail といったログの収集、そして Athena によるログへのクエリが関係してきそうです。また、Route53 はフェイルオーバーの文脈で登場してくるものと思われるので、ヘルスチェックを利用したルーティングパターンについて確認しておくとよいかもしれません。
対象外サービス
一切変更はなかったので、試験ガイドをそのまま参照してください。そもそも全然触ったことのない AWS サービスばかりですし、名前の響き的に開発者に関係しそうなものはないので、妥当なところなのかなと思います。
まとめ
ぱっと見ただけではどこが差分かわかりにくかったですが、新バージョンでは問われる内容が明確になり、一部のカテゴリについてはより深く問われるようになりそうだ、ということがわかりました。また、新たに追加されるカテゴリもありそうなので、新規に受験 or 認定の更新をする際には、今回ご紹介した差分を自力でキャッチアップするか、DVA-C02 対応版の参考書が登場するまで受験を見合わせたほうがいいかもしれません。
個人的には、見かけよりは大幅に範囲が増えた印象はなく、これまでも試験範囲だったけど明文化されていなかった部分が今回の改訂で明確になった、のような印象を持ちました。ただこれは個人の感想なので、本当に大幅に試験範囲が増えたのかもしれません。いずれにせよ、どういった内容が出るかについて細かい部分まで新たに把握しておけるのはいいことなので、今回の改訂は好意的に捉えていきたいとおもいます(Elastic Beanstalk の規模の縮小は、嬉しい)。