AWS認定DevOpsエンジニア-プロフェッショナル試験のサンプル問題を解いてみる #awssummit

cloudpackエバンジェリストの吉田真吾@yoshidashingo)です。

6/2,3のAWS Summit Tokyo会場では「AWS認定DevOpsエンジニア-プロフェッショナル」の日本語試験が開始されます。いずれかの日に受験予定なので、情報の整理と勉強がてら情報をまとめます。最後にサンプル問題の自分の回答も載せておきます(間違ってるかもしれないので参考程度に。あるいはツッコミください)

全体的な試験勉強の進め方

1. 試験の概要を確認する

  • 受験料:32,400円

2. 出題分野など勉強範囲を確認する

http://media.amazonwebservices.com/jp/certification/AWS_certified_devops_engineer_professional_blueprint.pdf

  • 全体に目を通すと、「試験準備」欄にAWSトレーニング(研修)とAWSホワイトペーパーが列挙されてます。時間があれば(特に組織的に受験者を増やしたい場合)トレーニングを受講したいですが、独学で進められそうな人はホワイトペーパーを読み込むとよいのではないでしょうか
  • 出題範囲、この部分を押さえるのはかなり重要だと思います。特に分野1の「継続的配信とプロセス自動化」の配点比率が55%もあります。
    • 時間があれば各分野の詳細に記載されている内容がAWSを組み合わせてどう実現できそうか試してみるとよいと思います。
    • たとえば「1.1 アプリケーションライフサイクル管理に関する理解を実証する。 - ローリングデプロイや A/B テストなどのアプリケーションデプロイ管理戦略。」に該当しそうなものといえばEB,CFn,OpsWorks,AutoScaling,UserDataなどでしょう。

3. 腕試ししてみる(サンプル問題)

ということでさっそくサンプル問題から行ってみましょう。

Q1. EC2のバックアップの問題

  • 回答は【C】の「ec2-create-snapshot API」。
  • AとDのEBS作成ではS3に格納されるスナップショットより堅牢性が劣る。
  • BのGlacierは要件にある1時間以内の復旧ができない。

Q2. サービス中断を最小限にしてインスタンスタイプを変更する問題

  • 回答は【D】のCFnのAutoScalingRollingUpdate。
  • Aでは自動的にインスタンスタイプが変わらない。
  • Bだがコンソールから当該操作はできない。
  • Cはサービスが中断してしまう。

Q3. CFnの最適な構成の問題

  • 回答は【B】、テンプレートをネストしてネットワークレイヤー、コンピュートレイヤーなどに分けておくとインフラストラクチャの自動化とバージョン管理がしやすい。
  • Aは単一のテンプレートだと再利用性やバージョン管理の際のメンテナンス性に劣ってしまう。
  • Cは構成管理用のEC2インスタンスで論理パートごとに実行を行い詳細管理をするようだが、CFnで行うより管理が煩雑になってしまう。またロールバックなどの制御も難しくなる。
  • Dはネットワークレイヤーが「インフラストラクチャの自動化とバージョン管理」の範囲からはずれてしまうので不適切。

Q4. スタンダローン型の構成管理ツールを使う問題

  • 回答は【C】、時間があればAでいいが、今回の要件は3分以内ということなのでエージェントのインストールとアプリケーションのデプロイしかできない。つまりインスタンスの設定やアプリケーションフレームワークは済んでいる状態にしておく(AMIに固めておく)必要がある。
  • Aでは間に合わない
  • Bは設定アーティファクト、コードがAMI内に固まってしまうので「設定とアプリケ ーションの動的なデプロイを自動化する」要件からはずれてしまう。
  • Dはポーリング間隔をいくら短くしてもラグがあるため、要件にある3分以内(エージェントインストールとコードデプロイで3分かかる)でデプロイが完了しない。

5. 負荷テストでの一貫したI/Oパフォーマンスの問題

  • 回答は【B】、あらかじめ全セクタをreadすることで指定サイズの容量がプロビジョニングされるノウハウです、やりましょう。
  • Aはテスト時にI/Oブロックサイズをランダムにしても、ストレージのI/O帯域は変わらないので、一貫したI/Oパフォーマンスと関係がない。
  • Cはテストと関連性がない
  • Dはテストと関連性がない
  • Eはスナップショット取得と事前ウォーミングの関連性がない。

6. 履歴データ分析用のデータストアの問題

  • 回答は【B】、データの構造上DynamoDBが最適と思われ、かつ分析環境も最適。
  • Aはデータの格納場所がEBSなのがよくないのと、Data PipelineからKinesisに飛ばすという使い方はできないので不適切。
  • CはGlacierがいつでもアクセスできるデータストアではないので不適切。
  • DはEBSが堅牢でない、KinesisからCWへのIFがないので不適切。

7. GET Bucket APIの呼び出し削減の問題

  • 回答は【C】。CであればS3のイベント通知をトリガーにして、SNSのトピック内に含めたメタデータを使ってDynamoDBのデータ(Amazon S3 オブジェクトメタデータのキャッシュ)を更新できる。S3のイベント通知がトリガーで、トピックの削除タイミングなどでロバストな作りにできそう。
  • AのS3のライフサイクルポリシーでは要件と関係ないので不適切。
  • Bは結局アップロードのたびにどのデータが更新されたかバケット内をなめないといけないので解決にならない。
  • DはSQSのキューサイズを超えるデータを含めることができないので不適切。
  • Eはインスタンスのメモリ上にすべて持たせる形になるので、限界があるし、データの合計量が増えると飛躍的にコストが高くなってしまう。

8. 継続的デリバリーな問題

  • 回答は【B】、Elastic Beanstalkの真髄である。
  • Aは即座のロールバックと関係ない
  • Cも即座のロールバックと関係ない
  • Dは既存環境(旧バージョン)にもトラフィックがルートされ続けるため、このスタックを捨てられなくなってしまい不適切。

9. ログ分析用アプリケーション

  • 回答は【C】、リアルタイムにレポートして対応することが望まれているので、Kinesisにつっこんだデータを処理すればOK、永続化は不要。
  • Aはレポーティング用の検索性に劣ってしまう。
  • Bはリアルタイム性に劣る。
  • Dはリアルタイムにジョブを振り回し続ける構成になってしまい、不適切。費用が高額になってしまう。
  • EはMySQLに書き込んでるならSQLクエリでさらえばよくて、MapReduce処理はこのままではできない。

10. アプリ障害の問題

  • 回答は【C】【E】
  • Aは悪くないが、ウォッチドッグ的インスタンスの障害性に対する考慮がない。
  • Bはインスタンス障害なら大丈夫だが、アプリ障害に反応できない。
  • Dはせっかく疎結合だったアーキテクチャが密になってしまい推奨できない。

4. 腕試ししてみる(模擬試験)

さて、そんなこんなで最後に模擬試験を受けてみましょう。20ドルでKryterionで受験できますが、現在は英語(アカウント)のみへの提供のようです。

  • 上記試験トップページから「模擬試験 (Practice Exam) の受験」を押下して模擬試験を受験しましょう
    • ただし、画面で確認したところ、今回日本語の「DevOps Pro」を受験する日本語のアカウントでは、まだ模擬試験は提供されていません。
    • 英語アカウントを持ってるという方は受けられると思いますので、頑張ってみるといいと思います。