cloudpackエバンジェリストの 吉田真吾 (@yoshidashingo) です。
6/2,3のAWS Summit Tokyo会場では「AWS認定DevOpsエンジニア-プロフェッショナル」の日本語試験が開始されます。いずれかの日に受験予定なので、情報の整理と勉強がてら情報をまとめます。最後にサンプル問題の自分の回答も載せておきます(間違ってるかもしれないので参考程度に。あるいはツッコミください)
全体的な試験勉強の進め方
1. 試験の概要を確認する
- AWS 認定 DevOps エンジニア – プロフェッショナル
- 事前にDeveloper AssociateあるいはSysOps Associateを取得済みであることが前提条件
- 試験時間は170分間(ほぼ3時間)
- (未確認)問題数はSA Proと同じなら80問(つまり1問あたり平均2分で回答が求められる)
サンプル問題を読むかぎり、問題文が長い。試験時間170分で問題数が(SA Proと同じなら)80問(だったと思う)から、1問あたり2分以内で解く。それ以上かかりそうならいったん飛ばすのを、そうだな20秒以内くらいに判断かな。
— 真吾 (@yoshidashingo) 2015, 6月 1
- 受験料:32,400円
2. 出題分野など勉強範囲を確認する
- 上記試験トップページから「試験ガイドのダウンロード」を押下してガイドをダウンロードしましょう
- 全体に目を通すと、「試験準備」欄にAWSトレーニング(研修)とAWSホワイトペーパーが列挙されてます。時間があれば(特に組織的に受験者を増やしたい場合)トレーニングを受講したいですが、独学で進められそうな人はホワイトペーパーを読み込むとよいのではないでしょうか
- 出題範囲、この部分を押さえるのはかなり重要だと思います。特に分野1の「継続的配信とプロセス自動化」の配点比率が55%もあります。
- 時間があれば各分野の詳細に記載されている内容がAWSを組み合わせてどう実現できそうか試してみるとよいと思います。
- たとえば「1.1 アプリケーションライフサイクル管理に関する理解を実証する。 – ローリングデプロイや A/B テストなどのアプリケーションデプロイ管理戦略。」に該当しそうなものといえばEB,CFn,OpsWorks,AutoScaling,UserDataなどでしょう。
分野1の「継続的配信とプロセス自動化」が55%と最も高い。1-1はアプリケーションライフサイクル管理なので、EB,OpsWorks,CFn,EC2のUser-DataによるBootstrappingなどだろうか
— 真吾 (@yoshidashingo) 2015, 6月 1
3. 腕試ししてみる(サンプル問題)
一つ一つ該当しそうな分野のドキュメントを確認するのもいいけど時間がないので、サンプル問題の確認をして、模擬試験を受けようと思う。(英語だけど…)
— 真吾 (@yoshidashingo) 2015, 6月 1
ということでさっそくサンプル問題から行ってみましょう。
- 上記試験トップページから「サンプル問題のダウンロード」を押下してサンプル問題をダウンロードしましょう。
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,Dは破綻してる。
Q4. スタンダローン型の構成管理ツールを使う問題
- 回答は【C】、時間があればAでいいが、今回の要件は3分以内ということなのでエージェントのインストールとアプリケーションのデプロイしかできない。つまりインスタンスの設定やアプリケーションフレームワークは済んでいる状態にしておく(AMIに固めておく)必要がある。
- Aは間に合わない
- Bは設定値などまで固めてしまうと設定変更がメンテナンスがしにくいのでダメ
- Dは論外。
5. 負荷テストでの一貫したI/Oパフォーマンスの問題
- 回答は【B】、バッドノウハウだけどやりましょう。
- Aはミドルウェアによって一貫しているので、テストで変える意味がない
- Cはテストと関連性がない
- Dはテストと関連性がない
- Eはスナップショット取得と暖機の関連性がない
6. 履歴データ分析用のデータストアの問題
- 回答は【B】、データの構造上DynamoDBが最適と思われ、かつ分析環境も最適。
- Aはデータの格納場所がEBSなのがよくないのと、Data PipelineからKinesisに飛ばすという使い方が不適切(多分できない)
- CはGlacierがいつでもアクセスできるデータストアではない。(あとRedShiftは誤植。正しくはRedshift)
- DはEBSが堅牢でない、(EBS→KinesisはEC2のアプリでやるのかな?)、かつKinesisからCWへのIFがないのでダメ。
7. GET Bucket APIの呼び出し削減の問題
- 回答は【C】、Bと迷うが、CであればS3のイベント通知をトリガーにして、DynamoDBのインデックス(Amazon S3 オブジェクトメタデータのキャッシュ)を更新する。S3のイベント通知がトリガーで、トピックの削除タイミングなどでロバストな作りにできる
- AはS3のライフサイクルポリシーではできない
- Bはアップロード時にキャッシュ更新することで、処理が一度コケてしまうと更新されない情報が発生してしまう。定期的に洗い替えの処理でもすればよさそうだが、そこまでは言及されてない。
- DはSQSのキューサイズを超えるデータを受けられないのでダメ
- Eはインスタンスのメモリ上にすべて持たせる形になるので、データの合計量が増えると飛躍的にコストが高くなってしまう。回答のCであればアクティブに利用される分だけ(に近い)コストになるのでこちらはダメ
8. 継続的デリバリーな問題
- 回答は【B】、Elastic Beanstalkの真髄である。これで私はAWSに目覚めました(関係ないけど)
- Aは即座のロールバックと関係ない
- Cも即座のロールバックと関係ない
- Dは既存環境(旧バージョン)にも十分なワークロードがかかってしまう。この構成だとこのスタックを捨てられない。ありえない。
9. ログ分析用アプリケーション
- 回答は【C】、リアルタイムにレポートして対応することが望まれているので、Kinesisにつっこんだデータを処理すればOK、永続化は不要(別にやってもいいけど)
- Aはレポーティング用の検索性に劣る?(すいません、CW Logs使ったことない)
- Bはリアルタイム性に劣る
- Dはリアルタイムにジョブを振り回し続ける構成になってしまい、不適切。費用が高額になってしまう。
- EはMySQLに書き込んでるならSQLクエリでさらえばよくて、MapReduce処理はこのままではできない。
10. アプリ障害の問題
- 回答は【A】【C】、アプリ障害は独自に検知する方法が必要であることと、ワークロードが増大しても遅延を回避できる。ただしSQSのデキューで重複しないよう配慮が必要。
- Bはインスタンス障害なら大丈夫だが、アプリ障害には反応できない。
- Dはせっかく疎結合だったアーキテクチャが密になってしまい推奨できない。
- Eはアプリの障害とInstanceId ディメンションのメトリクスがInsufficientになることに関連はないので、気づけない
4. 腕試ししてみる(模擬試験)
さて、そんなこんなで最後に模擬試験を受けてみましょう。20ドルでKryterionで受験できますが、現在は英語(アカウント)のみへの提供のようです。
- 上記試験トップページから「模擬試験 (Practice Exam) の受験」を押下して模擬試験を受験しましょう
- ただし、画面で確認したところ、今回日本語の「DevOps Pro」を受験する日本語のアカウントでは、まだ模擬試験は提供されていません。
- 英語アカウントを持ってるという方は受けられると思いますので、頑張ってみるといいと思います。