Rのつく財団入り口

ITエンジニア関連の様々な話題を書いているはずのブログです。

【AWS】実務2日から突破するAWS認定『DevOpsエンジニア - プロフェッショナル』(DOP)の合格記録

逆に考えるんだ...から始めるAWS認定4冠め突破作戦

 AWS認定のアソシエイトレベルの上のプロフェッショナルレベルの資格、『DevOpsエンジニア - プロフェッショナル』に、2021年10月に合格することができました。
祝ってくれた皆様ありがとうございます。過去の先人の合格エントリにもかなり助けられました。これから挑戦する方と未来の自分向けに情報を残しておこうと思います。

例によって資格の名前が長いので、以下公式の3文字略称を使います。

~入門者向けの基礎コース(Foundational)

~中級者向けのアソシエイト(Associate)3兄弟~

  • 設計の『ソリューションアーキテクト - アソシエイト』(Solutions Architect - Associate: SAA)
  • 開発の『デベロッパー - アソシエイト』(Developer - Associate: DVA)
  • 運用の『SysOps アドミニストレーター - アソシエイト』(SysOps Administrator - Associate: SOA)

~上級者向けのプロフェッショナル(Professional)級~

  • 最難関の『ソリューションアーキテクト - プロフェッショナル』(Solutions Architect - Professional: SAP)
  • 今回獲得した、開発と運用が合体してDevOpsをやる資格『DevOpsエンジニア - プロフェッショナル(DevOps Engineer - Professional: DOP)

~特化した専門知識(Specialty)

  • セキュリティに特化した『セキュリティ - 専門知識』(Security - Specialty: SCS)
  • DBの『データベース - 専門知識』(Database - Specialty: DBS)
  • 機械学習 - 専門知識』(Machine Learning - Specialty: MLS)
  • 『データアナリティクス - 専門知識』(Data Analytics - Specialty: DAS)
  • 特に難しいといわれる『高度なネットワーキング - 専門知識』(Advanced Networking - Specialty: ANS)

f:id:iwasiman:20211017164744p:plain
AWS認定の図

参考:AWS 認定 – AWS クラウドコンピューティング認定プログラム | AWS

f:id:iwasiman:20220324173719p:plain
@iwasimanの受験パスの図

挑戦への経緯

きっかけ

 へーしゃグループはAWSパートナーネットワーク(APN)に入っているのですが、今後もAWS社と戦略的協業を拡大してやっていこうという発表があったり、社内で開発基盤を提供するサービスでもAWS版の提供が始まったり、エンプラ界隈にも雲海がだんだん近づいてきました。キーワードを聞く機会も着実に増えてきましたね。
 オンラインの1on1で普段話さない上位管理職陣と話す機会があったので、ペライチの自己紹介資料で近況を話したりしました。その際将来のために今はまだ実務で使っていなくてもAWS認定取得にも力を入れていることを話したり。IT界の技術の変遷が反映されていて学習する側も面白いことを話したり。最近の仕事が終わったらそろそろAWSを使った案件がやりたいですアッピールをしたりしました。
 その時は高度資格のSAPとDOPはさすがに難しそうなので実務の機会を得てからチャレンジする計画です、というような話をしたのですが、後々で違う考えが浮かんできました。

f:id:iwasiman:20211017174958p:plain
ジョースター卿の名言AAより

 そう...いつ来るかも分からない案件のチャンスをただ待ってから上位資格にチャレンジするより、先に上位資格を取っちゃってから案件のチャンスに繋げてもイイんじゃないか?
これぞUncle Bobもびっくりの、依存性逆転の法則の応用であります。(注:ウソです)

 かくしてアソシエイト級突破以降、パイロットライト構成でか細く燃えるDBの灯のように続いていたAWS認定を追求する微かな想いが、ここで再び燃え上がりました。
 さっそく情報収集を開始すると、どうやらDOPはSAPよりは取りやすいというイイ感じの情報が集まってきます。自分の立場的にもDevOpsエンジニアのほうが近いし、まずはDOPを狙うことに。かくして4回目の作戦を開始するのでした。

f:id:iwasiman:20211017175527j:plain
出典:漫画『ジョジョの奇妙な冒険 Part1 ファントムブラッド』より (よくネットでネタに使われるやつ)

書いている人のスキルセット(笑)

 エンジニア歴ウン年のマネージャーにならないマンであります。Webアプリケーション開発のサーバーサイドは2000年代のエンタープライズ界隈でのJava流行に先んじた頃からかなりガッツリやったり、C#もいくつかの案件でやったり。PHPではLaravelを使ったり自作の軽量フレームワークで社内案件の実運用までやったり。Rubyも基礎は学んだんですが社内にRuby使いが少ないので機会に恵まれないですね。Pythonもブームの頃に学んでLambda関数でちょっと使ったり。そのうちGoやRustも齧ろうかと思っています。
 フロントエンドは基本はだいたい分かるしJavaScriptも再入門済み、TypeScriptも深めたし、Vue.jsは仕事でも使ったしReactは今年深堀りしたりしました。RDBは主要なものはほぼ全て経験があります。
 研究組織と協力した試作からエンタープライズな業務システムまで、小規模からメンバ10人以上の大規模開発まで、社内システムから中には社外向けのザ・SIer的案件まで、ライブラリやツールもいろいろ使ったし社内フレームワークを使ったり自分でも作ったり、部品化やプロジェクト内教育や新人教育の先生をしたり、社内では開発のほぼ一線に立っていろいろやってきました。
 ジャパニィズトラディショナルビッグ以下略から徐々に変わろうとしている弊社グループでは今もエンジニアを引っくるめた呼び方は「システムエンジニア」(SE)なんですが、ほぼソフトウェアエンジニア、ソフトウェアアーキテクトと同等だと考えています。

 資格はAWS認定3冠のほかは情処のシステムアーキテクト、情報処理安全確保支援士、応用や基本などなどなど。昔は全盛期にJavaOracleの資格も取りました。教員免許も所持。TOEICの自己ベストは820点で社内ではまあ高いほうです。
 資格取得数を改めて数えたら全部で24(社内限定のも入れたら28)、これも周囲では資格ホルダーと認知されている方ではあります。所属はクラウド専門の事業部ではないので、既にAWS認定3冠保有は比較的先んじている方です。

 開発プロジェクトのバージョン管理にはGitとSubversion両方使っていますが、この辺のお守りをしたりディレクトリ構成を考えたり、プロジェクト内での部品化やルール決め、フレームワークやツールの使い方の基本方針策定、お手本のサンプルコード実装...などなどなど、プロジェクトの土台を支えるような役割もやってきました。
 弊社界隈ではこのへんの作業に「標準化」というワードをよく使うのですが、この辺りもソフトウェア・アーキテクティングの領域とも言えるし、DevOpsに近いとも言えるかもしれません。「DevOps」の言葉は社内だと啓蒙資料などにはよく出つつもまだまだ現場には浸透していないのですが、自分的には登場したころから本を読んだりしてきました。

 ほか、オンプレでJenkinsを使ってJavaプロジェクトやPHPプロジェクトのビルド自動化をやったことはあります。最近ですとGitLab CI/CDの機能を使って、Java/JavaScript/TypeScriptプロジェクトの自動ビルド環境を試作したりもしました。このへんもDevOpsエンジニアっぽい動きといえるかもしれません。

AWSの実務経験とよく使う興味のあるサービス

 基本は開発屋なので興味のあるサービスはサーバーレスアーキテクチャ周り、API GatewayやLambda関数周りですね。サーバーレスやマイクロサービス周りはアソシエイト級制覇後に深堀りしようと思っていた通り、本を読んだりして深めました。新刊でない本の記事がなぜかはてブでバズったりしました。

 その後は会社で2日間に渡る社内ハッカソンのオンラインイベントがあったので参加、AWSのサーバーレス構成で簡単なアプリを作って発表したりしました。これは広い社内からいろんな先進的な人たちが集まってきて楽しかったですね。社内Onlyの認定制度をひとつパスしてこれで肩書がつきました。

iwasiman.hatenablog.com

 その後もAWSを実務でバリバリ...といきたいところですが、それ以外の構築経験はゼロが続いています。まあリモートワーク(テレワーク)で事業部の様子がなかなか今までのようには分からないのもあり、僕自身も掛け持ちで抱えている既存プロジェクトもあり、中には自分の意に沿わずアサインされてモチベ低めでやっているようなものもあり、大きめの企業は色々あるのよねというところです。
 というわけでDOP資格の想定は経験2年ですが、自分の実務経験は2日です!(開き直り)

f:id:iwasiman:20211020203744p:plain
「逆に考えるんだ」から始めるDevOpsエンジニア - プロフェッショナル突破作戦

やったこと

基本方針の確定

 会社の下期が10月から始まるので、きりよく2021年10月から始めようかと最初は思っていました。調べて準備しているうちに「もう始めちゃいなYo!」というお気持ちになってきたので予定を早め、9月から作戦を開始することにしました。

  • 学習時間はこれまでと同じ週末も含め1日1H~、週7H程度から。(これは実際には1日2Hくらい行けるようになりました)
  • 最初に情報を集め、基本はこれまで通り問題演習を中心に学習を組み立てて、分からないところを次に調べるスタイルでいく
  • プロフェッショナル級は難しいと言われるので期間は2~3か月、年内に行ければいいかとゆるく目標を立てる(実際には約1か月でした)
  • ツールとしてはいつものStudyplus, SimplenoteGoogle Spreadsheetのほかに、今回はなんかイケてるサービスらしい Notion を使ってみる
スタプラで学習記録を可視化する

 これまでも資格の学習、技術書を読んだ時の読書記録に学習管理アプリ、Studyplus(スタプラ)をずっと使ってきているのでもう習慣になっています。記録時にひとことコメントを必ずつけるMyルールでスタプラ上のSNS要素とTwitterに同時放流してきました。けっこう反応があるものでありがとうございます。受験や資格で受かった時用に「達成報告」という機能があるのですが、これも数十人の方がおめでとうしてくれました。

www.studyplus.jp

イベントに……あまり行っていない

 自分的にはコロナ後はすっかりご無沙汰になってしまっているIT系イベント。AWS公式のものやコミュニティのJAWSのイベントなども気になるのですが...まあ行かなくても資格は取れるので、各所のブログの参加記録を見たりするぐらいに留めました。
 そういえば、AWS認定の公式ステッカーをもらってプライベートのマシンに貼る!というのも自分の中では資格取得のモチベーションになっていたのですが、結局ゲットできてないんですよね。あれはどこでもらえるんじゃろう...

ネット上のDOP合格エントリを参考にする

 ググって約20人分、Qiitaで探して約17人分の方を見て回り、はてなブログならお礼に☆をつけてQiitaならいいねストックして蹂躙して回りました。貴重な記録を残してくれた先人の皆さん、ありがとうございました。
 書いている方の来歴(エンジニア歴とAWS歴)、学習期間と学習時間、学習に使った題材、サンプルや模試の点数、本番の点数や時間配分、よく出る分野や受験戦略、その他お役立ち情報...などをポイントとして見て回りました。これも40人分ぐらいが集まるとかなりの価値のある情報になります。脳内の単一S3バケットにログ集積であります。

 AWS認定は入り口のCLF、SAAは日本でも情報が整って最近は受ける人も多いので、「たったこれだけで爆速で受かりました!(ドヤァァァ~)」みたいな感じの記事も中にはあるのですが(笑)、さすがにDOPとなると難易度の高いプロフェッショナル級です。現場の本物のエンジニアによる地に足の着いた記録がほとんどで、落ち着いて拝見することができました。
 まとめると問題文の長さが非人道的とも言われるSAPに比べるとDOPはまだまし、アソシエイトレベルの知識の延長や実務経験で立ち向かえる、という記事が多かったですね。受験パスとして最難関のSAPの後に受験する流れで、比較的楽に突破したという方も多かったです。
 総合してこれなら自分でもいけそうだ、という感触を得て勇気づけられました。

学習時間の確保に立ち向かう

 今はほぼ全面リモートワーク(テレワーク)なので通勤時間もなく、このへんは有効活用しやすかったです。基本は早朝と夜なのですが仕事のスキマ時間を活用したり。学習も後半になってくるとSimplenoteやGoogle Spreadsheetに情報も溜まりネットから見られるようになってきて、机以外の場所でも閲覧できるようになってきました。

 そして一番の難関はAWSのサービスの多さではなく、子育て中に学習の時間を確保することだった...という話をアソシエイト級の合格記録に書いたところ反響があったりして、皆さんもこの辺は同じなのだなあと思ったところです。
 このSAA/DVA/SOA資格を突破した2019-2020年、当時子供が2歳だったのですが今は4歳。家の中であれば親がつきっきりで一緒にいなくても一人で遊んだりテレビを見たりして過ごす時間も増えてきて、さすがにあの頃に比べると楽になってきたなあという感じです。平日でも1日1Hでなく2Hコースで時間を使えたり。休日も意外に時間を使えたり、今回はだいぶ学習期間を短縮できました。

 苦労したのは自宅の居間で子供と一緒にいるときですね。膝の上で遊んだり横に座って子供は部屋のTVを見つつ、こちらはタブレットの別画面を見て復習したりする芸当もします。これで子供が動画配信で劇場版の映画を見て戦士たちを応援したりしてると、やはりそちらに気を取られたりします。
くっやめるんだ子供氏...DevOpsの崇高なる思想で満ちる予定のワイの脳内メモリに...歴代のプリ〇ュア戦士の知識を注入しないでくれ...(関係ない)

www.toei-anim.co.jp

コロナの脅威に立ち向かう

 ここはリモートワーク中ですのでいつも通りで手洗いうがいを励行する程度でした。
 そして最近はAWS認定もオンラインの受験が可能になってきました。

www.pearsonvue.co.jp

しかしこのオンライン受験、ネットワークが有線でないと速度が辛い、マシンスペックや準備が必要、試験官にずっと監視される状態なのでおトイレも行きにくい...などなど、苦労やトラブルも割とあちこちで見聞きします。

 何はともあれ重要な試験なので自分は万難を排し、これまでのように東京は新宿のテストセンターで受けることにしました。

計画変動に立ち向かう

 ちょうど9月の期末だったので仕事でもバタバタしたり、DOP学習をいざ始めた頃に家で屈んだら腰を痛めてしまって整骨院に行ったりハプニングもあったりしたのですが、スケジュールは元からゆるくしてあります。
いつでも受験できるのはベンダー資格の長所ですので、早まっても遅くなってもいいやという感じでゆるく進んでいきました。

モチベーションを保つ工夫をする

 自分的には以下を行いました。

  • 学習管理アプリのStudyplusでDOP学習用のカテゴリを作り、日々の学習結果を放流する
  • Twitterのプロフィールに「@AWS門中」とか書いちゃう
  • さいきん毎月投稿しているじぶんRelease Notes記事で、DOP受験を宣言する

iwasiman.hatenablog.com

  • Google Spreadsheetにまとめた学習データの表を、正答率に応じて色を黄→オレンジ→青→緑に変えたりカラフルにしてやる気を出す
  • 各種ポートフォリオ系サービスや会社のキャリア用社内システムで、受かったらDOPを追記するんだ...と夢想する
  • 受かったらTwitterのプロフィールに「AWS認定4冠」と書いちゃってドヤーーーとするのを夢想する
  • Microsoft ToDoで管理しているタスクリストにDOP受験を追加して、終わったらシュッと気持ちよくチェックして消す様を夢想する
  • 受かったらTwitterやStudyplusで、合格報告をするのを夢想する
  • 受かったらこのはてなブログで、合格エントリを書くことを夢想する(このエントリです)
  • 受かったら概念上のお気持ちで、なんか凄いDevOpsエンジニアになってる姿を夢想する
  • 俺...この資格に受かったら...溜まってる電子書籍のコミックを読むんだ...(※フラグ)
  • 俺...この資格に受かったら...秋の新作アニメをチェックするんだ...(※フラグ)
  • 俺...この資格に受かったら...冷凍庫に取っておいてあるソフトクリーム食べるんだ... ←望みが小さい

f:id:iwasiman:20211017212134p:plain
DevOps Engineer Professional - DevOps on AWS

イケてるサービスな Notion を使ってみる

サンフランシスコ発、かなりの資金調達を得てユニコーン企業となったNotion Labsが提供しているNotion(ノーション)。ちょうど最近日本語化されたというニュースが出ています。

www.watch.impress.co.jp

基本はクラウド上のメモ、タスク、Wikiアプリで有料版だと企業向けのコラボレーションツールとしていろいろできるサービスです。Relation Databaseという機能があって簡単めの一覧検索画面などがコード開発なしで作れてデータベースとしての用途もあるので、NoCode界隈ではノーコードツールの有力株としても認知されています。

 使おうと思ったきっかけは、こちらの id:yokoyantech さんの合格エントリでなんかメチャかっこいい使い方をしているのを見たことでした(笑) SAP+DOP連続合格おめでとうございます!これはすごい!

www.yokoyan.net

 試しにテキストメモを置いたりしてみたのですが、ページ単位で情報を階層構造で持てたり画像やアイコンで装飾できるのが強いですね。自分はプレーンテキストの情報をよくSimplenote経由で複数デバイスで共有しているのですが、Notionだと貼り付けられるテキストの長さ上限がけっこう厳しく、う~んプレーンテキストメインだと自分的には別に全面移行するほどでもないかなという感じでした。
 代わりにスクラップブック的に使うことにして、Exam Readinessや公式模擬試験の画像を貼り付けてテキストも追加、という使い方をやってみました。なんかRelation Databaseの機能を使ってカッコイイ使い方ができるとイケてるエンジニアっぽい感じが醸し出せそうだったのですが、今回は断念であります。

 このNotionもサービスのバックエンドではAWSが使われています。Notionで作ったページに画像を貼り付けてから[Original]をクリックしてオリジナル画像に飛ぶと、URLが思いっきりS3なのが分かります。自分の場合は https://s3.us-west-2.amazonaws.com/ 配下に保存されていました。
 YouTubeでも動画がいろいろあったり、今後も話題になりそうなサービスです。

seleck.cc

学習の流れ

物理本はDVAの本を購入する

 DOP資格を専門に扱った本というのはないのでDVA資格用の最新刊、『ポケットスタディ AWS認定 デベロッパーアソシエイト』を、資格の本なので物理本で買いました。DOPの試験範囲はだいたいDVAとも重なっているのでかなり流用できます。

 Twitterで呟いたら著者の山下光洋さんからも反応頂いたりしました。最近のDVA合格エントリだとこの本で受かった!という声も多いですね。ポケスタサイズながら厚くて中身も充実、リファクタリングの章でベストプラクティスも解説してあったり、DOP受験にも役立ちます。
 僕はリモートワークのデスク環境を整えてからは机の上には余計なものを一切置かないようにしているのですが、この本は例外で目に付くところに常に置いて、時々参照したり復習するようにしました。

iwasiman.hatenablog.com

iwasiman.hatenablog.com

公式のデジタルトレーニングを受ける

 各所の合格エントリでかなりお勧めされているのが以下のExam Readiness。計7Hとなっています。

 眼鏡のシュッとしたお兄さんのAlexさんがコースの概要、ドメイン1~6、ドメインごとに数個のサンプル問題出題とその解説、試験戦略と最後のまとめまでやってくれます。これだけすべて無料で公式から公開してくれているのはありがたいです。
 音声は英語ですが字幕付き、サンプル問題や資料はちゃんと日本語になっています。なおブラウザに表示される日本語の問題とその後の解説資料に表示されるその問題の日本語が微妙に違ったり、多少のローカライゼーションの不自由さはありますが乗り越えられるレベルです。これは学習の最初に必須レベルでおすすめです。

 さすがに講師だけあってシュッとしたお兄さんの英語はかなり聞き取りやすいですね。IAMは「アイアム」と発音していました。あとMySQLが完全に「マイシークォー」でした。中国人の技術者の方もこれか「マイスキュール」が多いので、やはり「まいえすきゅーえる」と発音するのは日本オンリー...?

 AWS認定のアソシエイトレベルを突破してから約1.5年経っているので知識が消えているかな~とも思ったのですが、このExam Readinessをやった頃にはだいたい蘇ってきていました。脳内のS3 Glacierの氷河の奥底から通常のS3に復活完了であります。

公式のクラスルームトレーニングを...やらない

 公式が提供しているのが『DevOps Engineering on AWS』で、3日間で確か20万ぐらいする個人にはお高い教育です。弊社はAWSパートナーネットワーク(APN)なのでもうちょい安く確か17-18万ぐらいで、社内の教育コースでも用意されていました。
 しかし日程が合わないのと今後の開催日程不明、このご時世ではオンライン開催なのでやる意味は薄いかな、そして何より平日に仕事を3日フルで抜けるのは厳しいというのもあり見送りました。各所の合格エントリでも、これは別に受けなくてもよいという記録があります。

 僕はアソシエイト級の学習ではDVA用の『Developing on AWS』はまだコロナの前の2019年にクラスルームで受けました。この時は講師がAWSJの方で、いろんな四方山話を聞けるのが楽しかったですね。

公式Black Beltやホワイトペーパーは...後回し

 普段から業務でバシバシ使っているようなAWS強者の方の合格エントリで見られるのが、上記のExam Readinessの後はBlack Beltをしっかり読み込み、その後は公式サンプル+公式模試+αぐらいでもうシュッと受かってしまうパターン。普段からの蓄積が既にDevOpsなエンジニアとしての実力になっているのでしょうね。
 ペーパードライバー的な自分の場合はそうもいきません。ですのでいつも通り、

まずは問題演習をたくさんやる→討ち死にする→復活、そこから解説やリンク先の公式リソースに飛んで学ぶ

の繰り返しの反復学習で学んでいきました。

f:id:iwasiman:20211017212134p:plain
DevOps Engineer Professional - DevOps on AWS

Udemyの日本語模試講座で学ぶ

 たぶん皆さんやるであろう定番のこれ。日本語の有効な講座はこれしかないですね。ちょうどセール期間が終わっていたので3000円の定価で購入しました。僕が学習したときは評価4.4だったのですが、最近低評価をつける人が来たようで3.1に下がっていました。(これは気にしないほうがよいです)
 このエントリ執筆時点で75問の模試4回分、日本語の解説付きで本番に近い問題でしっかり学ぶことができます。なお自動翻訳も使っているようで、ところどころ日本語が怪しいところはあります。合格エントリでもこの話は割と見かけますね。
低評価レビューでの指摘の声には講師の方から、「本番を想定した意図的なものです」との見事な返しがしてありました。ま~これはAWS認定の名物みたいなもので、このへんの日本語の不自由さは自力で乗り越えられるぐらいでいないとだめでしょう。

 教材の合格ラインは70%。自分は1周目は53%,59%,60%,65%とまだまだ。しかしアソシエイトレベルのDVA/SOAの学習をしたときはもっと酷くて正答4割からスタートだったので、これは知識の蓄積が表れているとポジティブに捉えることにしました。(笑)
 正解と不正解がなぜそうなのかしっかり復習して、他の学習リソースも経た後の2周目では84%,81%,75%,88%と一気に合格ラインを越えました。

タイムマネジメントを意識する

 そしてSAPとDOPの試験時間は170分(2時間50分)と長く、タイムマネジメントが重要になってきます。上のUdemyをやったときに時間を測りながらいろいろ試しました。
 結果、1問2分(計150分になる)なんて高度でマイクロなマネジメントは自分にはムリなので、「20問を約30分」を目安にすることにしました。約半分の40問が1時間、60問が1時間半、80問じゃなくて75問が2時間手前、これなら本番で見直し1時間弱が取れる(はず)という寸法です。Udemy1周目は模試1回を2時間以内に追われるように意識しました。
 他の学習リソースを学ぶ時も、まとまった問題は常に掛かった時間を記録して備えることにしました。

AWS WEB問題集で学習しよう』で学ぶ

aws.koiwaclub.com

 通称小岩、もしくはkoiwaやkoiwaclubで知られる学習プラットフォーム。DOPの合格エントリでもよく登場し、このkoiwaclub内のDOP合格記でも評判が高いです。前から使っていたので今回は有料会員のプロフェッショナルプラン5480円(税込み6028円)に申し込みました。AWS認定プロフェッショナル級のSAP、DOPを学ぶにはベーシックプランでなくこのプロフェッショナルプラン(名前がややこしい)が必要になります。

 会員になると7問1セットの問題がこのエントリ執筆時点でDOPは54セット分、計378問だから模試5回分、じっくり学ぶことができます。7問ごとに正解不正解が分かり、解説も比較的明確で分かりやすいです。反復学習にちょうど良いですね。
 模試の問題の範囲はUdemyと大体同じなのですが、たまに「えっこんな問題も出題範囲なの?」みたいなのもありUdemyより若干広い感じ。結果を記録しつつ学びつつ進んで1周目は全体で正答72%。2周目は最後までいかず7割ぐらいでストップだったのですが、正答83%まで達しました。
 また、掲載されている問題の中からランダムに本番と同じ問題数が出題され、本番と同じ制限時間が設けられるAWS認定本試験モード」というのが便利です。

 終わった後から思い返すと、こちらのkoiwaは反復学習しやすいので、まずkoiwa→仕上げにUdemy の順番のほうが良かったかな?と思っています。

英語版のUdemyでもちょっと学ぶ

 おなじみヒゲのお兄さんStephaneさんが微笑んでいる講座。このハンズオンをしっかりやったという方もよくお見掛けしますね。ハンズオンをすっ飛ばして最後の問題10問を翻訳しながらやったところ、正答7割でした。復習したらGoogle翻訳と自分の翻訳の間違いのせいで1問逃しているのが判明。くっ気づけば8割行けた...

 StephaneさんとAbhishekさんのコンビが微笑んでいる模試講座。10問のWarmup Testと75問のPractice Testが内容です。学習の後半でWarmupの10問の方だけ翻訳しながらやったところ、悩まずほぼ即答できたのですが、正答50%という危険な点数。しっかり復習しました。上のHands On! 講座付属の問題に比べると難しいですね。Practice Testの方は時間切れで行わず。

 上2つは会社が契約しているUdemy for Business(UFB)で無料でやれたので、さらに購入するとしたらこちらか...と思っていたのですが結局購入せず。75問の模試2回が入っています。

 他にも探すとマイナーな講座、評価がやや低い英語の講座もいくつかありますが、Udemyの英語教材でDOPを学ぶならまずはこの計3講座が鉄板でしょうか。

さらに英語のWhizlabsを...やらない

 英語の学習プラットフォームとしてはこちらもおなじみWHIZLABS。合格エントリを見るとここで学んだという方も時折お見掛けします。このブログの以前の合格エントリで支払いはPaypalが必要...と書きましたが、いつの間にかサイト内で直接クレカで支払えるようになっていました。
 こちらは80問のPractice Testが5回分、ほかにもSection Testがいろいろあったりボリュームは豊富です。購入しておいたのですが先に学習の方が仕上がってしまい、翻訳の手間があるのでもういいかということで手つかずでした。

 ちなみに僕はセール中に購入したのですがさらにクーポンチケットを入力したら7.97ドル(880円ぐらい)と、かなりおトクなお値段でした。英語ができる方なら、問題数を考えるとかなりの良コスパですね。

f:id:iwasiman:20211017212134p:plain
DevOps Engineer Professional - DevOps on AWS

公式サンプル

 以前は英語版のみでしたが日本語版のDOPサンプル問題もPDFで公開されています。こちらもやった方が良いと言われますね。学習の後半にやってみて、悩まずほぼ即答で正答7割。その後復習したらうっかりミスしていました。
 このサンプル問題は英語のみだった頃、日本語訳と解説をつけてくれた方の情報リソースがあります。

公式模試

 そして、AWS認定のどの資格でも多くの方が本番前に受けた方が良いと言っているのがAWS認定の公式の模擬試験。UIや手続きに慣れる意味でも必須でしょう。DOP試験ならAWS Certified DevOps Engineer - Professional Practiceと最後にPracticeがつき、試験コードもDOP-C01でなくDOP-P01になっています。

 プロフェッショナルレベルになると制限1時間で20問とボリュームアップ、費用も2000円でなく4000円と上がっています。ちなみに僕は過去の模試無料バウチャーが全部期限切れになっていて税込み4400円払いました。
 学習も仕上がってきた金曜夜にチャレンジ。「えっ何この初見の問題!?」みたいな問題も出たのですが45分で終了。スクショはNotionに保存しました。この結果が好調なら1週間後に本試験...と行きたいところだったのですが、結果は正答60%と何やら危ない数値。ヒヨって本試験は2週間後に延ばして予約しました。

 「DOPの公式模試は本番より難しい」と、多くのDOP合格エントリで共通して述べられています。AWS経験の十分豊富そうなつよつよな戦士の方でも40%とか50%とかの数字が平気で出ています。僕も受けてみて難しく感じました。
 そして模試が悪くてもここで必ず見直すのが大事!とも先人の合格エントリにあります。気を取り直してNotionのスクショを見ながら復習したところ、落ち着いて解けば今までの理解をベースに解ける問題もあったのが判明。そして巧妙なひっかけ問題にやられたのも何問かあったのが判明。やや復活しました。

 その後仕上げのUdemy日本語模試講座の2周目を進めていくと、8割超えで余裕の安全圏。koiwaclubの2周目もおおむね順調に進んでいきます。
 ややリスクもありますがだいぶ仕上がってきた自覚もあり、脳内のS3に保持された今のベストコンディション状態を週末まで維持してやり切って終わりにしよう...!と決断。本試験スケジュールは2回まで変更できるので変更し、公式模試を受けた1週間後の週末に前倒しにして強行突破することにしました。

f:id:iwasiman:20211017212134p:plain
DevOps Engineer Professional - DevOps on AWS

仕上げへ

 多くのDOP合格エントリで皆さんが口々に訴えているのが、とにかく問題文が長い75問を3時間かけてやるのがめっちゃ疲れる、頭脳がはっきりしているときに受けよう、前の日はちゃんと睡眠をとろう、タイムマネジメントして見直し時間を確保しよう...などなどの本試験のハードさ。
 これも万全の態勢で臨みたいところです。リモートワーク(テレワーク)続きだとみんな休暇をとらない傾向があるというのはちょうど会社でも言われているところだったので、前日の金曜は午後半休をとることにしました。
 昼休みになったらもう仕事用のマシンはしまって仕事用のスマホもしまって完全終わり。仕事のことはもうLambda関数を使ったスナップショットに保存して来週のリージョンにコピー、インフラもアプリもDBも全部次週のディザスタリカバリプランで復活させることにして、一旦停止の完全フォーゲットであります。

 代わりにプライベート用のMacを取り出してゆったり仕上げの復習。koiwaclubの「AWS認定本試験モード」(3時間)をやってみたところ、約1時間で完了。正答67問/75問で89%の871点と好成績。これなら手応え十分でしょう。
 ちょっと息抜きすることにして、試験が終わったら見ようと思っていた秋クールのアニメを見たり。気になっていたラノベアニメの『月とライカと吸血姫』が有人宇宙飛行ものでテンション爆上がりでした。主題歌がアリプロで良し! 舞台がどう見てもソ連です本当にありがとうございます! (関係ない)

tsuki-laika-nosferatu.com

 その後はこれまでの学習テキストを見直したりして、本番に臨むことにしました。

f:id:iwasiman:20211017212134p:plain
DevOps Engineer Professional - DevOps on AWS

試験当日:3時間のハードモードを乗り切れ!

テストセンターへ

 以前受けたピアソンVUEの新宿南のテストセンターは統合されたのかいつの間にかなくなってしまっていて、過去の受験履歴も別のテストセンターに置き換わっていました。「新宿西口テストセンター」と「西新宿テストセンター」が別にあったりしてややこしいですね。しかも「西新宿テストセンター」は検索すると2件ヒットして片方はだいたい空という謎の動きをします。
 頭がはっきりしている時間→なら朝一じゃろうということで最初の9:00に予約。朝は平日と同じように5:40に起きて家族が寝ている間に出発して、各駅停車の電車の中で軽く復習したりして久々の新宿へ。新宿にけっこう人はいた気がします。

 この「西新宿テストセンター」は大きなビルの中のワンフロアにあり、フロアも広くてお勧めです。さすがにコロナ対策はしっかりしてありました。朝一番なので中は閑散としています。コロナ警戒や受験手順を見せるあちこちのポスターの中の絵が、お馴染み「いらすとや」に侵食されているのがエンジニア的にはフフッとなりました。
 事前の身体検査は特になく、空いているテストルームへ。マシンは黒のDell系、モニターはPhilips、僕の作業環境と同じたぶん27インチだった気がします。画面が大きいのは良いのですが、テスト画面が最大化されて横いっぱいに表示されるので文字がでかくて横長に伸びていて見辛い。長い問題文が文中で改行されずに左から右へずらーーっと続くので、けっこう読み取るのにエネルギーを使います。

試験本番!

 そして本試験を始めたら1問目がいきなり分からず手こずるのですが、不安な問題はチェックマークをつけながらどんどん先へ。画面右上には「2時間50分00秒」ではなく「170分:00秒」形式で残り時間が常に表示されます。気を取られすぎないようしつつ進行、これまでのトレーニングでやってきたように「20問を約30分」を常に守るようにして進行。けっこう目が疲れるので、20問済んだごとに小休止して目を休めてから復帰することにしました。
 なんじゃこりゃ?というような設問もいくつかありましたが、各種模擬試験類で学んだことと似通った、言いたいことは同じであろう問題もかなり出題されました。
 だんだんいつもどおりの調子が出てきて1時間後、1.5時間後も小休止しながらどんどん進み....75問終わったのが試験開始後1時間53分ごろ。練習していたのでほぼその通り、2時間弱で最後まで行く計画が実行できたことになります。見直し時間確保成功です。

 テストセンターはどこでもそうなのではと思いますが、テストルームがかなり寒いです。10月上旬で外ではシャツ1枚で歩いている人もまだいるぐらいの気候でしたがかなりの温度差。自分は上着のジャケットも着てきたのですがそれでも寒く、チェックした問題を見直し終わった2時間経過後あたりからおトイレに行きたくなってしまいました。
 もうひとつ。3時間の長丁場の試験を受けていると、途中で他の方がテストルームにジョインしてきてそれぞれの試験を受け始めます。自分の後ろを通って隣とかその隣に人が来て説明を受けたりして、ついたてで遮られているしそっちの方は見ないようにするのですが「オッこの人も今日が決戦の本試験なんだな」と内心思ったりします。
そしてしばらくすると皆さん自分の試験が終わってスッとサイレントに退室していくんですね。これが地味に精神的に辛い(笑)。
「この広くて寒い部屋に3時間もずっと残ってるのは自分だけ...」みたいな、夏休みが目の前なのに放課後の教室で居残り補習がなかなか終わらない中高生みたいな気分になってきます。

 2時間を過ぎて疲れてきてもうここで試験終了...という誘惑にかられるのですが、まあ高度なプロフェッショナル試験だしということで、ここから75問分を見直すという苦行(笑)を開始。
といってもそれなりに準備はしてきているし、分からない問題はもう見直しても分からないし、正解だと確証のある問題は見直しても同じなんですよね~(開き直り)。
いちおう見直したけどそこで選択肢を変更した問題は、結局数問だけだったような気がします。最後の方はさすがに疲労が激しく集中力が切れ始め、睡魔で意識が途切れそうになったりしてきました。

 そんなこんなで試験開始後2時間45分ごろ、もう終わりにして楽になってもいいよねパトラッシュ...というお気持ちになって終了をポチり。そこで終了...と見せかけてアンケートが始まります。アンケートの内容もアソシエイトレベルの試験の時とまた変わっていきました。
 そしてやっと本当に終わってテスト画面がしばらく処理中、その後地味に小さく「合格」が表示。目でスクショしてサイレント退出しました。これにてDevOpsエンジニア試験突破。いやはや、3時間はなかなかハードです!

よもやよもやの、合格エビデンスなしの合格

 5営業日以内にメールで来ることになっているので、休日に受けるとその場ではスコアレポートはもらえませんでした。代わりにペーパーをもらって、これは受験した旨が書いてあるだけで合格したかはどこにも書いてないのがミソです。

f:id:iwasiman:20211018232457p:plain
こういうペーパーをもらいました

 ということで、本当に合格したかのエビデンスは自分の記憶の中のスクショしかないという不思議なお気持ちでテストセンターを後に。かなり疲労したので美味しいものでも食べようかとも思ったのですがまあ都心で危ないしということで、軽くマクドナルドで月見バーガーを食べるだけにしました。脳が糖分を欲していたけど月見パイが売り切れだった....!(ションボリ)
 紀伊国屋書店にいったら技術書エリアは模様替えしていて、スッキリしたけど本棚の面積が減って本の量も減ったような気がします。資格の本のエリアにAWS認定の本もあるのを見たりして帰途へ。

 家に帰ったら子供氏が「とと、おめでとう~」とエアなメダルを首に掛けるごっこをしてくれました。冷凍庫にとっておいたソフトクリームが美味かったんだぜ...!

f:id:iwasiman:20211017212134p:plain
DevOps Engineer Professional - DevOps on AWS

試験まとめ

得点の話

 後で届いたスコアレポートを見ると902点。SAAが836点、DVAが845点、SOAが801点だったので何気に最高記録でした。まあさすがに難易度の高いプロフェッショナルレベルということで確実に準備をしてきたし、アソシエイトレベルの知識の積み重ねが効いてきたということでしょうか。
 DOP資格の試験ガイドのPDF資料をよく見ると、実はスコアに影響するのは65問だけで、10問はスコアに影響しないものが混ざっていることが書いてあります。本番で途中時々出てきた気のする謎の問題はこれだったのかなあと思います。

100点~1000点で合格が750点。複数回答式の設問の方が得点が高く設定されていると思いますが気にしないことにして、関係ない10問も計算に入れるとして、実質900点満点/75=12点/1問。54問が648点、55問が660点。単純計算だとこの55問がライン、まあ60問以上正解ぐらいが安全ラインでしょうか。
 スコア902だと66~67問正解だったことになります。これまでの受験から、模試類でコンスタントに8割行けるようになれば本番もだいたい同じぐらい行けるのが感触で分かってきましたが、プロフェッショナル級でも同じなのが今回実証できました。

f:id:iwasiman:20211012070105p:plain
スコアレポートですよ

費用:3.3万(実質1.6万)

 Udemyの日本語模試講座が約3000円+WizLabsが約900円+ポケットスタディの本が約1800円+koiwaclubが約6000円+バウチャーが効かなかった公式模試が4400円+本試験がバウチャーで半額にしても16500円、合計約33,000円弱。このうち本試験は会社で請求できるはずなのでそれを引くと約16,000円でした。
 半額にしても1.5万、まともに払うと3万なのでプロフェッショナルレベルになると受験料がお高いですね。このへんはベンダー資格あるあるでしょうか。今回は会社への請求を忘れないようにしないと...手順がめんどくさくて忘れそう...

f:id:iwasiman:20211017212134p:plain
DevOps Engineer Professional - DevOps on AWS

学習期間と時間:1ヶ月ちょいで80-90H

 2020年9月に開始、受験したのが10月で正確に5週間掛けました。学習時間は9月が58Hで10月が22Hで計80H。実際には調査したりもうちょっと掛けてそうなので誤差として足して、だいたい80-90Hとなりました。アソシエイトレベルを学習した時はだいたい70-80Hぐらいだったので、同等かもうちょっとという感じになります。なお、最難関のソリューションアーキテクト - プロフェッショナル(SAP)だと100H以上掛けたという声も見かけます。
 僕の会社でも各認定の学習時間の目安みたいなのが公開されたりしていました。普段からクラウドをやっている部署を想定した時間なのか、僕が学習にかかった時間はそれらの目安をすべてオーバーして2倍ぐらいまで掛かってました(笑) というわけで時間は、皆さんあまり気にせず自分のペースでやるとよいと思います。

 学習期間は、各所の合格エントリを拝見すると普段からつよつよの方で数週間、それより長いと1~2か月ぐらいのスケジューリングが多いですね。プロフェッショナルレベルでもだいたいこれぐらい掛けているという形になります。

f:id:iwasiman:20211012070005p:plain
DevOps Engineer - Professional 合格証書

 前に述べた通り今回は仕事がフルリモート中で時間の調整がしやすかったこと、子供が成長してくれて前よりは時間が取れるようになったこと、あとは9月に休日が多かったこともあり学習期間は一ヶ月ベースに短縮できました。アプリのStudyplusで集計を見ていて自分でも、おお1ヶ月で58Hとかやれば行けるんだ...と謎の感動をしたりしました。前回は月30-40Hぐらいがやっとでしたからね。1日の使える時間が増えるとその分凝縮できて早く仕上がるというのを実感しました。
 まあこのへんはそれぞれの方の生活をとりまく状況によって様々でしょう。比較的若手エンジニア層の独身一人暮らしの方あたりが、最もアドバンテージを得られるところかな〜と思います。

f:id:iwasiman:20211020203744p:plain
「逆に考えるんだ」から始めるDevOpsエンジニア - プロフェッショナル突破作戦

DevOpsエンジニア - プロフェッショナル試験所感

DOP試験の難易度

 多分皆さん一度は見ているであろう、11冠の方の有名なQiita記事によると以下になっています。

最難関のソリューションアーキテクト- プロフェッショナル(SAP)
 >高度なネットワーキング - 専門知識(ANS)
  >DevOpsエンジニア - プロフェッショナル(DOP)、同位でその他の専門知識

qiita.com

 自分はSAPはまだですが、感覚的にはやはり上の順位かな〜と思います。アソシエイトレベルのSOA試験も問題文が長めになってきますがその延長で長め。選択肢も長めになり、一瞬で解けるものが減っていきます。難しいのになるとどの選択肢も技術的にはいちおう可能だったりして、設問のシチュエーションで求められている要件や観点を元に、もっとも正しい選択をしていく必要があります。

 一方、出てくるAWSサービス群の範囲はSAA/DVA/SOAとだいたい同じのAWSの中核を成すサービス群で、既存サービスをより深く理解していけば対応は可能です。自分も問題演習で完全に初見だったサービスはService Catalogなどわずかでした。(まあService Catalogは公式をよく読めばちゃんと出題範囲に書いてあるんですが!w)

 先人の合格エントリでもDVA/SOAの知識や学習の延長でそのまま行ける、あとは実務経験も役立つ...などなど、最難関のSAPに比べるとだいぶ取りやすいという感想が多いです。僕のように実務経験でだいぶハンデがあるケースでも突破できましたし、きちんと学習して準備すれば合格可能かと思います。やはり体系的に基礎から学んで積み上げるのは大事だなと改めて思いました。

所感:様々なシチュエーションから学ぶDevOps

 SOA試験もこの傾向がありましたが設問のシチュエーションが豊富です。
目の前に何かがあって会社のエライ人とかセキュリティのエライ人とか顧客などから無理難題解決したい課題が降ってきて、効果的な解決方法を考える。DevOpsの開発現場でなるべく人手のかからない自動パイプラインを考える。様々な特徴や制約のあるアプリケーションのダウンタイムなしかつ継続的なデプロイやスケーリングを考える。監視やパッチ当て、セキュリティ対応もなるべく自動化して人間のマニュアル作業を減らす。効果的なディザスタディカバリを考える。
...などなど、AWSを使っていると現実にありそうなシチュエーションが様々に登場します。このへんさすがにAWS認定は実務的な資格でよくできていますね。
 その中で「このサービスこんな使い方があるのか!」「これとこれを組み合わせるとこんな風に解決できるのか!」なんて発見がいろいろあり、学習する側もけっこう楽しかったです。AWSにおけるDevOpsの在り方というのが問題演習を通して分かった気がします。

 なんていうかこうね、タクティカル系のRPGとか異世界転生ものラノベみたいに、手持ちスキルのこれとこれや味方の誰と誰を組み合わせて目の前の敵をこう撃破するみたいな、そういう戦略を立てるのとちょっと似てて面白い訳ですよ...(ゲーム脳乙)

 
 さて出題範囲や比率などはぜんぶ公式に載っていますし問題の直接公開は禁じられていますので、ここでは学習過程の模擬試験類で出てきたものを中心に、気づいたポイントを書き連ねてみます。

f:id:iwasiman:20211017212134p:plain
DevOps Engineer Professional - DevOps on AWS

設問のシチュエーションで求められている観点を押さえる

 この話は公式Exam Readinessでシュッとしたお兄さんが、各サンプル問題のポイントを解説してくれます。この試験戦略の話は必見です。
 各サンプル問題の正解と不正解の解説で、お兄さんの話を聞いていると most simpleあるいはsimply、そしてtechnically correct(最もシンプルでかつ技術的に正しい)、あるいはcost-effective(費用対効果が高い)などのワードが頻出します。これらによって設問の正解は変動することも多く、正しく読み取れるよう訓練する必要があります。

  • 最もシンプルで技術的に正しい、はこれまで通り。サービスの機能を正しく理解する。
  • ありそうだけど実はない機能や存在しないfunnyなサービス、遠回りな方法を避ける。

クラウドの基本特性、高可用性(High Availability: HA)も多くの問題で求められます。

  • RDSのリードレプリカはあくまでスケーリングの話で、高可用性を実現するのはマルチAZ構成。≒でレプリケーションも含まれる。

費用対効果の高い解法も多くの問題で求められます。

  • EC2を余計に立てるとお金がかかってアウト。
  • Elastic Beanstalkならデプロイ後にURLスワップをして一瞬で切り替え可能! そこに追加でRoute53を入れればURLスワップもいらなくなる?→既存の仕組みに別サービスも加えると追加で金が掛かるのでアウト、など。ちなみにCloudFrontは追加してもコストがかさまない扱いで有能です。
  • RDSベースで仕組みが作られているのにそこに追加でDynamoDBを入れるのは、その分の金が掛かるのでアウトなど。
  • Direct Connectを使えばオンプレからの移行も楽に...?→お金と設定時間がかかるので別方法でまずなんとかする
  • Auto Scalingしながら一晩で片付けたいバッチ処理、AMI作成などにはEC2のスポットインスタンスを使うとおトク。

逆に費用対効果を考えなくてよい問題では、そう書いてあるのではなく何も書かれていない事が多いです。

  • 上記の逆など。
  • ディザスタリカバリ系ではケチケチしながら毎晩RDSのスナップショットを取ったりせず、最初からリードレプリカを用意していつでも昇格可能じゃどんと来い障害!とする。

ユーザーに「ダウンタイムなし」でサービスを提供したいというシチュエーションもかなり登場します。

  • ローリングデプロイでEC2の中身を順次新しくしていく、Blue-Greenデプロイでシュッと接続先を切り替える。
  • 逆に従来のIn-Placeデプロイが求められるシチュエーションはほとんどなかったような...
  • CloudFormation/Elastic Beansalk/OpsWorksの3つでデプロイする話は、これでもかというぐらい出ます。

 また長い問題文は厄介ですが、キーワードを把握していれば、「なんかシチュエーションがずらずら書いてあるけど、これってこのサービスで解決できるやつだよね」と、正解が常に1つですぐ導き出せるような設問も中にはあります。

選択肢の不正解を見つける

 アソシエイト級では理解していれば一瞬で選択肢の間違いが判別できたりしましたが、DOPになると4-5つの選択肢がどれもいかにも正解っぽい同じようなことをずらずら長く書いていて、途中が微妙に違ったりしてきます。人力で目でgrepしたり目でdiffを取るのがかなり疲れます(笑)
 これも問題演習を繰り返して正解と不正解がなぜそうなのかを理解していくと、文中に紛れ込んでいる不正解のパターンがだんだん見えてきます。

  • IAM「ロール」であるべきところがIAM「ユーザー」、あるいは逆。
  • 別「リージョン」であるべきところが別「AZ」、あるいは逆。
  • 「別」リージョン/AZであるべきところが「同一」リージョン/AZ。高可用性の観点から逆に「同一」が正しい場合はあまりなさそうです。
  • CoundWatch「イベント」「Logs」「アラーム」。
  • 処理に使うべきサービスが語呂が似ている別のワードに差し替わっている。処理の最後でSNSでチームに通知するべきところ、謎のSQSやSESが突然登場など。
  • 処理のステップに抜けがある。よく読むと実は解析前にログをS3にコピーしていないなど。
  • 処理のステップで余計なことをしている。EC2を無駄にもう1つ立てていてお金掛かるからダメです、など。
  • そのサービスから別のサービスは直接は呼べないのに、間が抜けている。CloudWatchイベント-SNSを挟まずにLambda関数を直で呼んでいるなど。
  • 処理のステップの順番が間違っている。パイプライン処理でコミット「前」やデプロイ「前」に追加処理やチェックを挟みたいのに、よく読むと「後」にやってるなど。

 確証をもって不正解の選択肢を外していくと、問題自体は正解が分からなくても消去法で解けてしまうケースもあります。

処理のタイミングに注意する

 問題文をよく読めば書いてあるのですが、処理タイミングが重要です。

  • マスターブランチへのコミットとか認証情報の入ったまずいコードのコミットとかCloudTrailを流れるログで特定のAPIを即時検知とか、「その時点で」即座に行うべき処理はイベントベースである必要がある。たいていCloudWatchイベントが起点だが、ここで「1時間毎に」や「定期的に」チェックするような選択肢は間違い。
  • 逆に運用系で定期的に行いたい処理もある。こういう時は逆にイベントベースっぽい選択肢が間違い。

 多くの方の合格エントリにあり、そして公式でも確か教えてくれていますが、「クーロン」で定期実行する選択肢は100%間違いと見て大丈夫ですね。クーロンを設定する手間がかかる他には、EC2が必要なのでそのコストが掛かる、単一障害点(SPOF)になりうるというのが理由になっています。

f:id:iwasiman:20211017212134p:plain
DevOps Engineer Professional - DevOps on AWS

不自由な日本語に慣れる

 本番試験でも公式模試でも各種学習リソース、あるいは機械翻訳しているAWS公式ドキュメントでも、日本語がちょっと変なところは相変わらずあります。もうこれはAWS認定の名物みたいなもので、これぐらい自力で乗り越えるしかないでしょう。

  • リージョン(region)が「地域」と訳される。(約束)
  • DevOpsで頻出のDeployがよく「展開」と訳される。まあ合ってるんですが、日本語だと「横展開」とか「社内展開」とか違う意味で使われることもあります。文章の前後の文脈によっては戸惑う時があります。
  • Blue-Greenデプロイ、カナリアデプロイでよく出てくるRoute53の機能が「加重ルーティング」「重み付けルーティング」でブレがある。これ頻出。
  • デプロイの種類でImmutableが「変更不可」デプロイ。そうなんだけどさぁ...と思ったのですが、公式資料でもこう訳されていますね。
  • Elastic Beanstalkでのデプロイで高度なカスタマイズ、container_commandsと英文そのままで見るのと「コンテナコマンド」とカタカナで見るのでは語感がけっこう違う。script と「スクリプト」も。
  • 運用系のサービスではSystems Managerがたまに変な日本語に訳されたりする。
  • cronの「クーロン」が「クローン」になっていてSFみが増して楽しい。

SysOpsアドミニストレーターSOA試験の学習の時も個人的に思ったのですが、運用系サービスはネーミングがそのまんまのことが多いですね。AWS Configとか捻りなしの直球過ぎてもうちょっとなんかないの?「設定」とか「コンフィグ」って会話でいろんなニュアンスで使うでしょ?と思ったりします。
なんかアヤしいと思ったら問題の英語の原文を確認するテクニックはいつでも有効です。

サーバーレス全推し...でもない

 DVA試験ではとにかく時代はサーバーレス!DynamoDBとLambdaでわっしょい! という感じでサーバーレス全推しでしたが、DOP試験ではそうでもなく、普通のEC2構成もサーバーレス構成も両方出てきます。設問のシチュエーションでは構成がもう決まって動いていて、設問で求められる観点で問題を解決することが多いからです。

  • サーバーレスでもBlue-Greenデプロイやカナリアリリースをする状況も出てきます。Lambaのバージョニングを使い、API GatewayのCanaryリリースデプロイを使うやつですね。選択肢にはELBやRoute53が出てきて、ほれほれEC2でAuto Scalingするときと同じようにこっちも使うじゃろ?とチェックを誘ってきたりします。
  • Code3兄弟とCodePipelineを使ったパイプライン処理でもサーバーレスを使ったパターンは出てきます。
スクリプト...は割と出てくる

 アソシエイト級の3資格だと、何かお手製の「スクリプト」でわざわざ手間のかかる仕組みを作るような解法はだいたい間違いという見分け方が有効でしたが、DOPになるとこのワード自体はけっこう登場し正解の場合もあります。
また手動でLambda関数をわざわざ作るのは間違いでサービスの機能で最初から用意されている...というパターンが減り、DOPレベルになると高度な要件の実現のために各サービス間をまたいでLambda関数がかなり活躍します。

  • CloudFormationのテンプレートでソフトがインストールされる前に作成完了になってしまうのを防ぐ際は、CreationPolicy属性で書いてcfn-signalヘルパー「スクリプト」が出てくる。
  • Elastic Beanstalkはcontainer_command内に書くとデプロイ時に追加の「スクリプト」が実行できる。
  • Auto Scalingで増減するEC2インスタンスのライフサイクルフックの中に処理を仕込み、起動時に何かを追加したりSNS通知で外に知らせたり、インスタンスが終了して消える前にログをS3に退避させたり。
  • EC2でインスタンス起動時にツールをインストールしたり外部と通信したりする追加処理は、ユーザーデータの「スクリプト
  • EC2が消えた後に残ってしまうEBSに残ったログをS3に定期的に移動してお掃除するハウスキーピング「スクリプト

まあそもそも「スクリプト」という単語が曖昧でOSコマンドやシェルをいくつか叩く場合もあるし、簡単なプログラムコードの場合もあるし、場合によっては簡単なLambda関数の場合もあるでしょう。高度なDevOpsを実現して自動化・省力化を実現するには、こうしたスクリプト類の細かな工夫も必要になってくるのはオンプレと変わらないのかなと思います。
 見分け方はだいたい今までと同じで、AWSのサービスと機能を正しく使えばより簡単に実現できるのにそれをわざわざスクリプトでやっているような解法が間違い、というパターンが多いです。

サードパーティ製ツールは全禁止...でもない

 こちらもアソシエイト級だと突然出てくる外部ツールはたいてい間違いで、AWS内で完結したサービスで実現できる...という見分け方がありました。DOPになるとさすがに様々な設問シチュエーションがあり、AWS外のツールや技術を示すワードはけっこう出てきます。

  • GitやGitHub (まあそうですね。CodeBuildはこれらとも連携可能)
  • Jenkins (事情がありオンプレ側のこちらでビルド、出来上がったものをAWS側に持ってくるパターンも)
  • 具体名までは出てきませんがコードの静的解析ツール類 (CodePipelineはオンプレ側にあっても接続できる)
  • ログの解析でElasticSearch, Kibana (マネージドサービスVerもあり)
  • EC2にサードパーティ製のツールを追加で入れる
  • サードパーティ製のSaaSからAWSにアクセスを許す (たいていクロスアカウントが出てくる)
何もしない...はほぼ間違い

 Do Nothingは設問では常に間違いの選択肢だ、と公式Exam Readinessのシュッとしたお兄さんが解説してくれています。確かに資格試験の問題でこういう解答は、なんとなく怪しい場合が多いですからね。
 数少ない例外がIAMロールの話。他のサービスからアクセスするためにIAMロールで与えられる一時的なセキュリティ認証情報を定期的に変えたいのだが...→実はAWSが1日に複数回全自動でローテーションしてくれてるよん、なんてパターンもあります。

f:id:iwasiman:20211017212134p:plain
DevOps Engineer Professional - DevOps on AWS

DOP試験に登場する言語やフレームワークやツール

 だから何だという話ですが、設問のシチュエーションで見かけたものを上げてみます。

  • Pythonはやはりあちこちによく出てきます。フレームワークの代表格のDjangoなどの名まではなかったような。ランキングのひとつのTIOBEではついに1位まで上がりましたね。

gigazine.net

  • フロントエンド部分と画像とCSSをS3静的ホスティングに載せ、さらに前面にCloudFrontも置いて世界のどこからでもパフォーマンス良くアクセス...なんて話でJavaScriptもよく出てきます。フレームワークでは伝統があるからかAngularだけはよく出てきて、ReactとVue.jsの名は出てきません。Next.jsとかCSSのライブラリ系など細かい話も出てきません。
  • サーバーサイド(バックエンド)でNode.jsというパターンはあり。これもS3に配置するものに混ぜるひっかけ問題があったりします。
  • RubyRuby on Rails製のアプリケーションをうまくデプロイを自動化したりするシチュエーションもあります。
  • PHPもWeb系言語としてよく登場。Laravelなどのフレームワーク名までは出てきません。
  • C#IISとセットで出てきたり。
  • C言語C++は見かけなかったのですが、定期的にメモリリークしてしまうアプリがあるがこれをAuto Scalingさせながらうまく稼働させたいなんて模試問題があり、これはきっとC製なんだろうなと勝手に想像していました。
  • そして主要言語の中でJavaだけ、「レガシーな」という形容詞のあるアプリケーションで使われることが多く、時代を感じます。
  • RustやScalaなどは見かけませんでした。
  • DOP試験だとGo言語がよく出てきますね。Go製の独立したシステムを手早く載せよう→Dockerの中に封じて独立性を保ったままAWSへ→DockerといえばElastic Beanstalk、あるいはECRへなど。やはりGoはコンテナと結びついて出てくることが多いです。
  • 設問シチュエーションのサービスはだいたいWebとモバイル両方を含んでいる想定なのか、モバイル専用アプリというのはあまりなかったような。React NativeやFlutterは出てきませんでした。
  • WebサーバーではIISやNginx。正解に影響するパターンとしてはApache Tomcatも登場、これは「サーブレットコンテナ」だからJava専用で、Goなど他の言語が設問のシチュエーションになっているなら誤選択...なんてことがあります。
  • オンプレ側のRDBMSではMySQLがよく出てきました。
  • オンプレ側のDevOpsの仕組みや自動ビルドツールでJenkinsはよく出てきますね。
  • CodeBuild, CodeDeploy, CodePipelineを使ったパイプライン処理はDevOpsエンジニアらしく設問にめっちゃ出てくるのですが、各プログラム言語のエコシステム内でのビルドツールやライブラリ管理ツール、コンパイラなどの詳細レベルの名前までは出てきません。「ビルド」と「デプロイ」という言葉で表される抽象レベルまでです。
AWSの進化との差分

AWS認定に登場するAWSサービスの各種スペックは、最新状況と多少差がある場合があります。覚えているところを上げてみます。

  • イベントベースで発生する処理の自動化やサービス同士の連携でDOP試験には頻繁に登場するCloudWatchイベント。2020年から、ここから派生し進化したAmazon EventBridgeというサービスが登場しますがDOP試験ではこの名前は出てきません。完全上位互換らしいですね。
  • CloudWatchの監視間隔はAWS認定ではデフォルトの基本モニタリングが5分、有償になる詳細モニタリングが1分。数秒間隔にする選択肢を選ぶとそんなのできないよと怒られる問題が出たりします。現実では2017年からカスタムメトリクスの高解像度で最短1秒まで可能になっていますね。これはすごい。
  • ログを集めてAmazon Elasticsearch Service で検索、Kibanaで可視化する話もSREっぽい問題で出ます。これは現実ではつい最近、2021/9からAmazon OpenSearch Service、KibanaはOpenSearch Dashboardsに名前が変わっていますね。僕の手元にある『要点整理から攻略するAWS認定セキュリティ - 専門知識』の物理本4刷だともう直ってました。
  • ディザスタリカバリ系のシチュエーション問題で登場する、Oracle RDSはDOP試験の問題ではクロスリージョンレプリカが未サポート。指令を受けてスナップショット作成、別リージョンにコピー、非常時に復元...と3回Lambda関数が仕事をしてバックアップリージョンで神託による復活を見事果たします。しかし現実では2019/11からクロスリージョンレプリカが可能になっています。(この話はUdemyの日本語模試講座、koiwaclubでも解説で述べられています)

dev.classmethod.jp

f:id:iwasiman:20211017212134p:plain
DevOps Engineer Professional - DevOps on AWS

おわりに

 というわけで今回もガンダムではなく量産機から作戦開始、アソシエイト級巡洋艦の上のプロフェッショナル級戦艦も一隻は撃破に成功しました。
 Udemy講座の講師の方々、読んだ商業本や技術同人誌の著者陣の方々、様々な形でインターネット上に有益な情報や貴重な受験情報を発信してくれたAWS勢の先人の方々、面識があってもなくても様々な形で僕が刺激を受けたり勝手に凄いと思っているクラウド勢の先人の方々、TwitterやStudyplusやこっそり会社つながりで応援してくれたりお祝いしてくれた皆様に感謝します。

 AWS認定は互いに範囲が被っているのでひとつ取ったらあまり間をおかずに他もやると効率が良い...という話は割と見かけますし、DOPを獲って僕もそう感じています。
 自分でもDOPが取れる感触がわかったので、難易度はちょい下(らしい)専門知識分野から、自分が仕事でAWSを使ったらまず関係しそうな『セキュリティ - 専門知識』『データベース - 専門知識』の2つはこの流れでついでに狙ってしまおうかな?と考えてセキュリティの方から開始しました。AWS勢にはおなじみの方々による執筆の『要点整理から攻略する〜』シリーズが役に立ちそうです。

 最終的には最難関のSAPも狙いたいところですがこれはもう先ですね。実務のチャンスを得てからか、会社の教育制度を利用してか、来年度以降にゆっくり考えていきたいと思います。SAPの本では2冊め、ポケットスタディDVA本と同じく山下光洋さん作で『AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル』が2022/10/22に新刊で出ています。

 専門知識も取れたらAWS認定5冠、6冠と進めますね。だったらいっそのこと、今なら余裕でイケるはずのクラウドラクティショナー(CLF)資格もさくっと獲っちゃえば認定7冠ですよ....(フヒヒwサーセンwww)
 という感じで、AWS認定フルコンプを目指しちゃう方々の気持ちがだんだん分かる気がしてきました。(自分は目指しませんが!w)

 それではこれからAWS認定『DevOpsエンジニア - プロフェッショナル』資格に挑戦する皆さんに、雲海とDevOpsの神のご加護のありますように......(`・ω・́)ゝビシッ
 

f:id:iwasiman:20211020203744p:plain
ネタっぽいアイキャッチ画像にお付き合いいただきありがとうございました

 
当ブログのAWS認定の合格エントリシリーズは以下を記録しています。

iwasiman.hatenablog.com iwasiman.hatenablog.com iwasiman.hatenablog.com iwasiman.hatenablog.com iwasiman.hatenablog.com

認定対策本のまとめ記事も新刊が出るたび整理しています。

iwasiman.hatenablog.com