桐生あんずです

日常やプログラミングについて書いています。

AWS 認定 ソリューションアーキテクト - アソシエイト(SAA-C02) 試験に合格したので振り返る

9/23にAWS認定ソリューションアーキテクト - アソシエイト(SAA-C02) 試験を受けて無事合格することができました。

www.credly.com

合格までにやったことなどをこのエントリにまとめようと思います。

受けた人間(筆者)のレベル

  • 新卒2年目のWebエンジニア
  • AWS のメジャーなサービス( VPC , EC2 , ALB , S3 , ECS , RDS 等)は業務・趣味で一通り触っている状態
    • ただし個人開発のサービスを EC2 + ALB + Aurora 等の構成で用意する、S3 で静的サイトの構築や画像ファイル保存の仕組みを用意する程度
  • サービスの設定( EC2 のインスタンスのプランや S3 のライフサイクルチェック等)についてはあまり詳しくない。高可用性・耐障害性を考慮したインフラ構築に対する理解も社内の中ではまだまだ浅い側だと感じる
  • 現在の業務では ECS のインフラ構築に関わっており、Kinesis や S3 を利用したログ基盤を構築するタスクも控えているため、改めて AWS について網羅的に学ぼうと思い受験することを決めた

勉強期間

  • 8/20 ~ 9/23

試験当日までの流れ

試験日の1ヶ月前

試験日のちょうど1ヶ月前あたりに SAAを受けようと思い立ち、以下の教本を購入しました。著者の一人である佐々木拓郎さんが出した書籍を何冊か持っていてどれも読みやすい本だったので信頼感があったのが購入理由の一つです。

1ヶ月前~10日前

試験日の10日前まではひたすらこの本の練習問題や模擬問題を繰り返したり、出てくるサービスについての解説を何度も読み返すことで元々知っていたサービスについての知識を深めたり、あまり使ったことのなかったサービスについて覚えることをしていました。

以下のような無料で SAA の練習問題を解けるサイトもあったので問題の雰囲気についてはそれを利用して覚えるなどしましたが、市販の問題集を買った方が解説もちゃんと載っていて効率的に理解を深められるかもしれないと今思ったりしています。受験を決める前に SAA の問題の雰囲気についてやってみるのはありかもしれません。同じ用途として、 iOS で無料でダウンロードできる問題集のアプリを触ることもしていました。

aws-exam.net

10日前~3日前

10日前ぐらいになると試験日が近づいてきた実感があり、もうちょっといろんなパターンの模擬問題を解くべきでは?と思い始めて以下の本を買って付属されていた模擬問題や試験に頻繁に出てくるサービスについて理解を深めるようにしました。

3日前~前日

上記の本で知識を深めたり無料アプリで模擬問題を解くことを続けていたのですが、この勉強法だけでは足りないのでは?と思いフォロワーのid:aknyonaka さんのAWS 認定 ソリューションアーキテクト – アソシエイト(SAA-C02)に合格した話の記事で紹介されていたAWS Certified Solutions Architect Associate Exam - Whizlabsを購入してとにかく問題を解くことにしました。

英語のサイトですがこれが一番役に立ちました。本番に近い問題が多く用意されていた印象です。ブラウザの翻訳機能を駆使しながら利用しました。支払いにはPayPalやStripeのオンライン決済サービスを利用する必要があります。

紹介されている通り、英語のサイトではありますがブラウザの翻訳機能を使えば割と意味が通じるので普通に解けます。便利。また、本番のように答えを見ずに一気に解く形式ではなく、1回の試験分である60問を解き進めつつ今解いてる問題の答えが気になったらすぐに確認してまた次の問題にいく形式で勉強できるのが個人的にありがたかったです。

できるだけ本番の状況に慣れるべきだとは思うんですが、答えを見ずに60問解き続けるのって結構体力を使うのと精神力も求められる感覚がありあまり連続でやりたくなかったので、上記のようなやり方で気軽に勉強できるのが大変助かりました。この追い込みをしたことで今回の試験に受かることができたような気がしています。

当日

試験は15時スタートの予定にしていたので、比較的時間があり今まで読んできた本のおさらいをずっと続けて試験に臨みました。 一通り問題を解いたところ、完全にわかった問題の数が44個、多分そうだけどもしかしたら間違ってる問題が8個、正直わからない問題が8個ぐらいな状況で「ギリギリ受かるかもしれないけど怖すぎる……」と心臓をバクバクにさせながら試験終了のボタンをクリックしたところ、合格のメッセージが表示されて一安心しました。

数日後に正式に合格報告がきて点数を開示したところ、724点(合格基準点は720点)で超絶ギリギリだったことを知りました。ひえ〜。まぁ受かってて良かったということで……。

学んだこと

改めて見返すと、10日前まではスロースペースで知識を溜める勉強を続けていて、その後は試験日まで一気に駆け抜けた感じがあります。その勉強期間の中でちょうど連休も挟んでいたのがちょうど良かったですね。

試験勉強をやってみたことで、メジャーなサービスに関しては基本的な知識があったところから応用的な知識を付けることができた感覚があります。今までは知らなかったはずのサービスや用語に関しても、社内チャットでそれらの話題を見かけたときに「(あれは試験で出てきた話のやつでは!)」と思えるぐらいの理解度を持つぐらいにはなりました。ただし、実際に自分で構築・運用を任された場合は、改めて学び直すことや運用上考慮すべきことなどがまだまだあるのでは、という程度の状態です。

受験の動機になった「現在の業務では ECS のインフラ構築に関わっており、Kinesis や S3 を利用したログ基盤を構築するタスクも控えているため、改めて AWS について網羅的に学ぼう」についてですが、 Kinesis や Glue といった ETL ツールについての理解が深まったり、 ECS に関しては EKS の話も出てきて ECS とどう使い分けをするのかを軽く知ることができ、確かに今まで知らなかったことを網羅的に学ぶのは達成できたと思います。

ただし、同じことの繰り返しになってしまいますが実際に構築となると手を動かしながら調べて進めていく必要がありそうです。

ECS でサービスを構築するためには、もちろん ECS の仕組みについて理解が必要ですが以下のような知識についても最低限必要だと認識しています( CI/CD の仕組みの用意、アプリケーション側の理解や、一から構築するには VPC や Route53 , RDS の話もありますが、全て書こうとすると長いので一旦そこらへんは省略して書いています:pray:)。

  • Docker コンテナのイメージを管理する ECR
  • タスクロールとタスク実行ロールを定義するIAMロール
  • リクエストを受けるための ALB と TG
    • ALBに設定するサブネットとセキュリティグループ
  • サービスの状況に合わせてタスクの増減を調整する AutoScaling
  • Blue/Green デプロイメントを設定する場合は CodeDeploy の連携
  • 旧サービスから移行する必要がある場合は Route53 の加重ルーティングを利用して引き受けるリクエストの割合を置き換えていく
  • CloudFormation で AWS のリソースをコードで管理する(個人的には terraform 派です)
  • コンテナのログを管理するための CloudWatch Logs のロググループ作成

こうやって羅列してみると SAA の試験範囲に出てくるサービスばかりなんですよね。しかし、実際に構築をするためにリソースを作っていくとなると運用上考えるべきことが大量に出てくるので試験で学んだことだけでは対応できない感じがしています。

ただし、試験に出てきたサービスを健全に運用するための高可用性・耐障害性・セキュリティ面、コスト面に対しての考え方はどのような形のインフラ構築でも必ず役立つと思いました。

まとめ

情報処理系の試験を受けることの意義を考え出すとキリがないとは思うのですが、今の自分のスキルレベルで SAA の試験を受けてみたのは良い力試しだったと思います。

この学習体験で AWS への距離感がさらに縮まったので、Lambda + API Gateway で趣味コードを運用してみることに近々チャレンジしたいです。業務の方でも、今携わっているインフラ関係のタスクの遂行はもちろんですが、もし障害が発生した時に今回学んだ高可用性・耐障害性の考え方を思い出して実際にどう立て直すべきかを一人でも考えられる力を身につけていけるよう頑張りたい所存です。