from 30

30歳からwebエンジニアになったけど、思ったよりも苦しいので、その苦闘の記録をば

AWS Certified DevOps Engineer Professionalに合格しました

結果

AWS Certified DevOps Engineer Professionalに合格しました。 899点(合格点750点 / 満点1000点 )とでした。 今まで受けた他の認定も含めて最高点でした。

全ての問題を時終わるのに2時間35分。 見直し時間は25分ほどでした。

実務との関連

1. CI/CDパイプライン

普段から仕事ではCI/CDを使っています。ほとんどはボスが作ってくれますが、 私自身が作ることもしばしばでしたので CodePipelineを使用したデプロイについては 問題ない感じでした。

2. CDK

普段はCDKをつかってAWSリソースについて記述していますが、
CDKとはいえ当然クロススタックな参照等は使いますので、
そう言う意味ではCloudFormationについてはある程度いけました。

3. 実務では経験が薄かった部分

  1. SystemsManager
  2. Elastic Beanstalk
  3. ECS
  4. CodeDeploy
  5. AutoScaling

試験対策

1. 概要

試験の公式のドキュメントを見るのが一番ではありますが、個人としては、以下の様なポイントで意識してました。 1. 様々なアプリケーションのデプロイ方法を学ぶ 2. AMIとかDockerImageの変更の反映の仕方を学ぶ 3. セキュリティイベントをどうやって発生させるかを学ぶ

2. まずはデプロイ

基本的にはcloud formationをつかったデプロイが多いと思います。 あとは、Elastic Beanstalkとか、OpsWorksとかも軽くblackbelt読んで概要を学んでおきます。 それらを継続的にデプロイできる様にCode Deployの使用方法を学びます。

基本がわかったら、あとは以下の様なちょっとかわった要件への対応方法を学びます。

  • パイプラインの中に手動承認アクションを入れる
  • CodeCommitのブランチに準じたCode Pipelineを準備する
  • オンプレのセキュリティチェックでコードをスキャンするステージを用意する

... などです。

いずれも模試や問題を解けばだいたいのパターンを掴めると思います。

3. 変更の反映

リソースの変更をどのように既存スタックに反映させるかも重要です。

  • AMIを変更したので稼働中のAutoScaling内のEC2に反映する
  • Docker Imageの変更を既存のタスクに反映する

などのシナリオです。

そのときにキャパシティの低下を許容するか、ダウンタイムを許容するかなどの要件を丁寧に問題文から読み解いて対応できる方法を考えます。

4. セキュリティイベントの発生

けっこう頻出だなと思ったのが以下の様なセキュリティイベントの検知と自動修復と言うパターンです

  • 暗号化されていないElastic Block Storage
  • IAMのアクセスキーの漏洩
  • 低稼働なインスタンスの自動停止

...などです。

Config, Cloud Trail, Trusted Advisorなどでどのようにそういったセキュリティ項目を検知できるか、 検知したらどうやってイベントを発行できるかを整理しておくといいなと思いました。

5. ハイブリッド環境の運用

AWSとオンプレとのハイブリッドな環境の一元管理という文脈もけっこう出てきます。 大体以下の様なシナリオかなと思います。

  • SSMエージェントを入れてSSMで一元管理
  • CodeDeployのエージェントを入れてデプロイメントグループを設定してデプロイ
  • CloudWatchエージェントをいれてログ吐き出し -> S3に集めてAthenaでアドホックに分析

などなど。

その他

前日に受けた模試では55%でしたので合格が危ぶまれたのですが、蓋をあけてみれば余裕の合格でした。
いちおう、Webエンジニアというロールで働いているので結構見覚えのある事項も多く比較的簡単に合格できました。 しかし、なぜこんなにもElasticBeasntalkってこのへんの試験で推されているのだろうか。。。 毎回謎である。

この調子で年内あと3つくらいスペシャリティ(セキュリティ、アレクサ、高度なネットワーク)とれたらこんなにうれしいことはないなぁ。