【合格】新卒一年目のSAA-C03体験談

# SAA-C03とは

引用[SAA-CO3試験ガイド](https://d1.awsstatic.com/ja_JP/training-and-certification/docs-sa-assoc/AWS-Certified-Solutions-Architect-Associate_Exam-Guide.pdf)：

>AWS Certified Solutions Architect - Associate (SAA-C03) 試験は、ソリューションアーキテクトの役割を担う個人を対象としています。この試験では、AWS WellArchitected フレームワークに基づいてソリューションを設計する受験者の能力を検証します。

受験資格は特に要らないですが、ターゲット層は「経験年数一年以上のインフラ/クラウドエンジニア」のはずです。もちろん、AWSを使っている/関わってる開発エンジニアやITコンサルタントの人も多く受験するでしょう。

# 受験の背景

日常的にAWS関連の仕事をしており、体系的に学びたいから、受験を決まりました。もちろん会社からの評価も上がるし、報奨金（大事！）も出ますので心置きなく受験に挑めます！

筆者本人に関して：新卒一年目、配属から半年ではあるが、なんだかんだエンジニアリングっぽいことやってた期間が8年もある新人（？）です。もちろん、AWSやWeb開発の今時イケイケ技術に触り始めたのは今年からなのでフレッシュマンに間違いありません（？）。
普段の業務では、主にWebサービスの開発でAWSを使うことが多いです。内訳としてサーバレス/マネージッドのものが多く、EC2やELBなどの定番サービスを業務で使う機会はまだそんなに多くありません。まだAWS歴が浅いので実践内容に偏りがあるのは当たり前ですが、SAA-C03の受験において微妙なところを後ほど話させていただきます。

# タイムライン

2024年　10月中旬～11月上旬　教科書を一通り読む
2024年　11/10　Udemyで模擬問題集購入
2024年　11/10~11/30　ひたすら模擬問題やる、解説を読み込む
2024年　12/1　受験→同日合格

1か月ちょいかかりましたが、教科書を時間かけて読んだ＋基本スキマ時間でしか勉強しなかったので効率よく合格を目指したいならミニマム二十日あれば十分かと。もちろん業務でゴリゴリAWS使っている身なので、完全未経験で目指す場合は余裕をもって準備した方が良いかなと思います。

# 結果

820点…！思ったより全然高かったです。

受験前や受験中に手応えがなくて相当焦りましたが、蓋を開けてみれば全然大丈夫でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3824949/1af157fe-f730-e9fd-8f05-508c5e0ba7b5.png)
（本番三日前のメンヘラツイート）

# 使った資料

## 教科書（翔泳社）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3824949/662ebd5d-eb4b-4e4b-fb65-af1bbcd720f0.png)

[こちら](https://amzn.asia/d/311ZZJF)です。購入した理由として、他の本より模擬問題が多かったからです。

SAA-C03の**合格**において教科書の必要性を結論から言うと、必須ではありません。少なくとも、模擬問題より優先度低いです。

しかし、ひたすら模擬問題を解いていく中に、あるサービスに対する解像度が低くモヤモヤする時はあるはずです。もちろん、実際にそのサービスを使ってみるのは一番ですが、手っ取り早くそのモヤモヤを解消し、サービスへの理解度を向上させるのは教科書です。もちろん、こういったプロセスを通さなくても試験に合格することができますが、**お勉強**として疑問点をまとめて解消した方が健全と言えるでしょう。

もちろん、教科書ならこれ！というのはなく、売れ筋の教科書ならどれもそれなりに分かりやすいと思います。筆者が使った翔泳社の本ですが、若干深堀の質問に対する対応不足を感じながら、サービスに対す解説がとても分かりやすく付随する模擬問題（試験一回分）も結構役に立ちました（特に模擬問題、個人的にUdemyより本番に近い難易度設定だと感じて、終盤のコンディション調整で大変助かった）。


## Udemy日本語模擬試験問題集（6回分390問）

割引なしで結構いい値段しますので、ネットでかなり推されているが購入を躊躇う人も多いでしょう。

結論買ってよかったですが、人によって向き不向きあるなと思います。

:::note info
**良かったところ**
- 思ったよりボリューミーであり、解説もかなり充実（解説が足りないと口コミも見たが、なんと随時更新しているらしく）で二三周しないと完全把握は難しい
- 元々は問題をひたすら解いて、最後に解説が見られるような模擬試験スタイルしかなかったが、筆者が購入したあとすぐに練習モードが導入され、一問回答したらすぐ解説を見られるのでスキマ時間活用できる
- ちゃんと考えさせられる、癖のある問題が出てくる、サービスのキャッチコピーを脳死で答える問題がほぼなく、効率よく苦手分野を炙り出せる
:::

:::note warn
**要注意！**
- （合格を目指す意味で）不必要まで難しくしている問題が多い。筆者の推測が合っているなら、6回のうち1回目が一番簡単で、6回目が一番難しい設定になっているだが、5、6回目の難易度が本番よりかなり上だと感じた
- ↑の続きで、難易度の高い質問にばかり目が行き、基礎が疎かになったら元も子もなくなっちゃうし、こういうことに自分のペースを乱されるのが嫌なら要注意かも
:::

# SAA-C03試験問題のメカニズム

新しいSAAは以前の比べて文字が多いと言われていますが、怖がる必要はまったくありません。なぜなら、すべての問題は、同じ原理で出来ているからです。

要は、**コア要件**に対してサービスか設定の**特性**を当てはまっていくゲームです。

[こちらのサンプル問題](https://d1.awsstatic.com/ja_JP/training-and-certification/docs-sa-assoc/AWS-Certified-Solutions-Architect-Associate_Sample-Questions.pdf)の7問目を例に説明します。

>ある企業は、毎週生放送されるテレビ番組のオンライン投票システムを運用しています。放送中、Auto Scaling グループで実行される Amazon EC2 インスタンスのフロントエンドフリートに、ユーザーから数十万という票が送られてきます。EC2 インスタンスは Amazon RDS データベースに票を書き込みます。しかし、データベースは EC2 インスタンスからのリクエストに迅速に対応することができません。ソリューションアーキテクトは、最も効率的な方法で、ダウンタイムなしに票を処理するソリューションを設計する必要があります。これらの要件を満たすのはどのソリューションですか。 
>> **A** フロントエンドアプリケーションを AWS Lambda に移行する。Amazon API Gateway を使用して、ユーザーリクエストを Lambda 関数にルートする。
>> **B** データベースをマルチ AZ 配置に変換することで、データベースを水平方向にスケールする。プライマリとセカンダリの両方の DB インスタンスに書き込むよう、フロントエンドアプリケーションを設定する。
>>**C** Amazon Simple Queue Service (Amazon SQS) キューに票を送信するよう、フロントエンドアプリケーションを設定する。SQS キューを読み取り、投票情報をデータベースに書き込むよう、ワーカーインスタンスをプロビジョニングする。
>>**D** Amazon EventBridge (Amazon CloudWatch Events) を使用してスケジュールされたイベントを作成し、投票期間中、大規模なメモリ最適化インスタンスでデータベースを再プロビジョニングする。投票が終了したら、サイズの小さいインスタンスを使用するよう、データベースを再プロビジョニングする。

一見文字文字しくて怖い！ってなりますが（実際本番の方がこれ以上文字文字しい）、まず問題からコア要件を抽出しましょう！以下となります：

>最も**効率的**な方法で、EC2からデータベースへ**書き込みのダウンタイム**をなくしたい

これだけです。基本問題文の真ん中から最後まで、いくつかのキーワードを捉えればオッケーです。「高可用性」、「できるだけコストを削減したい」、「オーバーヘッドを最小限に」、「リアルタイムで」などの言葉を見逃さないでください。注意すべきなのは、一個以上のコア要件が存在する問題も多いです。この問題では、効率の要件と性能の要件が存在し、どれも満たせるソリューションが要求されます。

では問題を解いていきましょう。
Aの場合、アプリをLambda（通常、オーバーヘッド削除やコスト削減に当てはまる）に移行するだけでなにも解決できません、パス。
Bの場合、水平スケールリング（通常、高可用性要件に当てはまる）されたDBにも書き込みということですが、DBの性能が変わらないので書き込みのダウンタイムを無くせないです、パス。
Cの場合、直接DBの性能を上げていないですが、メッセージキューでRDSへの書き込み頻度を制御可能な範囲に抑えることができます。つまり、性能要件を満足できますしマネージッドサービスなので効率も良いので、正解の可能性が高いです
Dの場合、ピーク時に性能の高いインスタンスに切り替えて、ピーク後またインスタンスタイプを戻すことで性能要件をクリアしましたが、データベースの再プロビジョニングを頻繁にやるのは効率よいとは言えません。DBの再起動などによるダウンタイムもあります。

なので正解は**C**です。

よく出題されるサービスの特性を頭の中に入れて、コア要件と照らし合わせて早い段階で「これは当てはまらない」「これはありかも」の判断をできれば、長い文面を気にせずすいすいと解けていきます。もちろんこれだけで解答できないのもたくさんありますのでサービスに対する理解度の底上げが本質です。

# 感想

## 試験範囲

SAA-C03の最大の特徴は、やはり出題範囲の広さでしょう。もちろんAWS自身がサービスいっぱい抱えているのは根本な原因ですが、それでも「アソシエイトとは何なんだ」とちょっと思いました。

もちろん、EC2、VPC、Lambda、S3、RDS、SQSなどの定番サービスを掌握することで大体半分くらいの問題を理解できますが、ん？と思ったものをいくつか挙げさせていただきます。

- OUs：組織管理用のサービス。SCPs（サービスコントロールポリシー）を使った組織単位で権限のコントロール関連の質問があったが、どう考えてもアソシエイトレベルに任す仕事じゃない
- EKS：コンテナ技術は普遍になりつつあるが、EKSについて「そんなん知るかーい」ってなるくらいの深堀問題がたまたま出てくる。k8sってのも世の中の大多数のIT企業が当たり前のように使っている技術じゃない（不向きの場合も普通に多い）のでEKSに疎い人も多いでしょう
- 高性能コンピューティング系：EMR、Apache Flink、VPCにおけるHPCの組み方などが該当する。EKSの同様に、世の中の企業みんながみんな使うわけでもないので（やってる企業でも三年目以下で経験できる方が少数派かと）疎い人も当然多いはず
- AD（Active Directory）関連：こちらも同様使ってない企業が多いのでイメージ付きづらいかと。でもその分教科書が結構分かりやすく解説してくれたおかげで助かった

こう見ると、ターゲットであるはずの「経験年数一年以上のインフラ/クラウドエンジニア」とはだいぶ乖離しているように見えますが、筆者個人の推測で言うと普遍に使われるサービスよりAWSが推奨するプラクティス（とそのトレンド）と大きく関係しているんじゃないかなと。
いずれにせよ、知識として持つのは損しないし、いつか想起できれば助かる場面も多々あるでしょう。


## 実務でしか磨かれないアーキテクト

実務で使ったサービスと使ったことないサービスに対す解像度が如実に受験で出たなと今回めっちゃ思いました。Lambda、API GatewayやCloudFrontなど実務で設計から実装まで一通り関わったサービスだと俯瞰的に要件を分析でき、深いところまで切り込めた感じがしましたが、まったく使ったことのないECS、EKSだとやはり受験力でなんとかなった気がします。

現実問題と向き合い、優れたアーキテクチャでビジネス価値を提供することこそ、アーキテクトの仕事です。社会人エンジニアになって間もないですが、日々受けた刺激、それからの成長はやはり学生の頃のそれとは比べ物にならないくらい強烈です。

筆者は多分抽象度高すぎるものに弱いタイプで、目の前の難題に駆られてないとなかなか前に進めない人間です。怠惰の言い訳に聞こえるかもしれませんが、地に足を付かないテーマに対して納得感を感じない出来事が多いのも事実です。なんとなくアーキテクトへの道に進んだ理由を今回の試験に気づかされ、このような言語化が出来た面もあります。その点で言うとSAA-C03受けてよかったです。

# We're Hiring!

VALUESではイケてるアーキテクチャをAWSベースで開発・運用しております！キャリア構成に関わる資格取得なども全力応援してます！

エンジニアとして圧倒的な成長を成し遂げたいメンバーを募集中です。ご興味がある方はぜひご連絡ください！