AWS-SAA受験を通じてAWSを体系的に知ったらもっとAWSが楽しくなった

バックエンドを担当しているエンジニアの [@tmsato](https://qiita.com/tmsato) です。
この記事は フォトクリエイト [Advent Calendar 2019](https://qiita.com/advent-calendar/2019/photocreate) の 14日目です。

## 概要
今年の3月に転職しAWS全般が全くわからなかったのにAWSを人に聞きながら使っていくうちに楽しくなってきて資格を取ったらもっと楽しくなったよ、というお話です。
資格を取ったならなんでもわかると思われがちですが、使ったことのないサービスは正直全然わかりません。
ただAWSを体系的に学べるのでキャッチアップは早くなるし、ある程度AWSについて分かっている前提で人と話せるのでコミュニケーションが楽になります。
これからAWSを始める方や、認定試験にご興味のある方の一助になれればと思います。
試験については[こちらの公式ページ](https://aws.amazon.com/jp/certification/certified-solutions-architect-associate/)でご確認ください。

## 入社時のスキルレベル
AWS初心者でもエンジニア歴長いんでしょ？いえいえ、そんなことはありません。
インフラ知識も全くなく現在進行形で勉強中です。

- AWS: EC2(オンデマンドのみ)を触ったことがある程度
- PHP: 1年3ヶ月ほど
- Ruby: 独学で半年ほど

## 受験動機
入社してしばらくして会社から、仕事で活かせるものなら部内で資格取得に関する費用の支援をしてもらえるしAWS認定試験受けてみたら？という申し出がありました。
なんて素晴らしい会社なんだと思い、受けます！と答えたものの入社してAWSとGoという未知の環境に一杯一杯で資格についてはすっかり忘れていました。
8月末に入社してすぐ参画したプロジェクトが無事リリースされ、この頃にはすっかりマネージドサービスの便利さ・管理のしやすさ(つまりAWS)に魅了されていました。
けれどサービスが多すぎて使ったもの以外社内で使用しているものさえまだよくわかっていない。
サービス全体がわかっていないから他のサービスが全然わからないという結論になり、**体系的に学びたい**と思った時に認定試験を思い出し勉強し始めました。
ちなみにプロジェクトで利用していたAWSは以下です。

- AWS Step Functions
- AWS Lambda
- Amazon DynamoDB
- Amazon Aurora
- Amazon S3
- AWS CloudFormation など

## 勉強方法・試験までの流れ
試験までは以下のような流れで勉強しました。
1~5の期間は大体1ヶ月(時間だと80時間ほど)でしたので、**実務半年・試験対策1ヶ月でギリギリ合格**できました。

1. 参考書+実際にAWSを使って概要の把握(参考書2周 + 模擬問題満点取れるまで繰り返し)
2. わからないサービスはBlackBeltで確認(それでもわからない場合はホワイトペーパーで確認)
3. ベストプラクティスや設計原則の理解のため[Well-Architectedフレームワーク](https://aws.amazon.com/jp/architecture/well-architected/)を読む
4. 模擬試験で本試験対策
5. 本試験

### 参考書
[徹底攻略 AWS認定 ソリューションアーキテクト – アソシエイト教科書](https://www.amazon.co.jp/徹底攻略-AWS認定-ソリューションアーキテクト-–-アソシエイト教科書/dp/4295005495)

試験範囲内のサービスの概要を知るために役立ちました。
セキュリティグループとネットワークACL、EBSとインスタンスストアなど **似ているサービスや機能がわかりやすく比較表になっていたり** 、模擬問題でとても **試験問題をイメージ** できました。
コツとしては無料枠の範囲内で問題ないので **実際にAWSを使いながら読む** のが良いかと思います。
試験の問題は実際に運用した時に発生する問題のような具体的なものが多いため、サービスの概要を把握しただけだとイメージできず合格のハードルがかなり上がると考えるからです。(私は無理です。)
それと参考書では一度も出なかったサービスが本試験で出たりするので **参考書はあくまで概要の把握に留めるのが良い** と思います。

### AWS Well-Architected フレームワーク
かなりのボリュームがありますが **AWSの思想や設計原則、ベストプラクティスなど本試験での核にあたる内容が記述** されてます。
正直本試験関係なく読んでいただきたい内容ですが、時間に余裕がなければベストプラクティスだけでも目を通して欲しいです。

### Black Belt
参考書を読んでも **よくわからないサービスをBlackBeltで理解を深める** ことがとても大事です。
ちょっとボリュームがあるものが多いですが、スライドで読むことができるのでかなりわかりやすいです。
私はDynamoDBとELBはBlackBeltを読んでようやく腑に落ちました。

### AWS模擬試験
模擬問題はあまり世に出回っておらず仮にあったとしても本試験のような問題ではないことが多く、 **本試験のイメージを掴む** という意味でも是非受けて欲しいです。
ただし有料(2000円+税)です。
ここである程度点数が取れたら自信にも繋がります。

### クラストレーニング
[Architecting on AWS](https://aws.amazon.com/jp/training/course-descriptions/architect/)

会社がクラウド化を進めていることもあり、全員ではないですが社員のスキルアップのためクラストレーニングを受講することができました。
今回はたまたまですがInputに対して寛容的な体制であることは私がフォトクリエイトを好きな理由の1つです。
こちらは設計原則やサービスについて学び、あるケースに対してグループに別れてディスカッションしながらサービス設計したことが印象的で、自分にはない視点での設計などとても勉強になりましたのでもし機会があれば受講してみてください。

## 利用しているAWSの一部を紹介
フォトクリエイトではこんな感じでAWSを使っているよ、という紹介です。
載せているものは利用しているものの一部です。
使ってみたいAWSに関してすでに社内で利用している場合は実際に確認もできるし触ったことのある人に聞くこともできるので、社内で利用しているAWSが多いというのはそれだけで実務的な設計やサービスの利用方法を学べ、何より楽しくなります。

### オンプレDBサーバー(PostgreSQL)をAmazon Auroraへ移行
- Amazon Aurora など

### ゼッケン認識の自動化
- Amazon API Gateway
- AWS Lambda
- Amazon DynamoDB
- Amazon SQS
- AWS Batch など

※ 詳しくは[マラソン大会のゼッケン認識を自動化したら手作業が半分になった話](https://qiita.com/kasai/items/54744efe9d71064aec40)を参考にしてみて下さい

### サイトリニューアル
- Amazon EC2
- AWS Fargate
- Amazon ECS
- AWS CodePipeline
- Amazon S3
- Amazon ElastiCache
- AWS Systems Manager など

### 分析基盤構築
- Amazon Kinesis
- AWS Lambda
- Amazon S3
- AWS Glue
- Amazon Athena など


## 実際に受験してみて
受験してみてと言いますか勉強してみて思ったのは、AWSに慣れたということでしょうか。
今まで使ったことのない何かを調べるときは誰かが書いた記事を探して実際に動かして〜のような方法をとっていたのですが、AWSはアップデートが早い上新しいサービスもどんどん追加されていくので情報が古いことも多くよく涙目になっていました。
しかし公式ドキュメントとBlackBeltを読めば大体の理解ができることを学びロールやネットワーク周りの基礎知識もついたので、つまづくポイントが狭くなった(まだ全然つまづきます)と実感できるようになりました。
そしてこれは何事にも共通していることですが、実際に使うサービスだけではなくサービス全体を理解していると作るのが楽しくなります！

## まとめ
受験されるかされないかとは別にAWSについてこれから学びたい方は、資格の勉強から入っても良いと思います。
また今回私が受験したソリューションアーキテクト-アソシエイト-以外にもいくつか種類がありますので必要な知識がつきそうだなと思う資格の勉強をしていただければと思います。

## 最後に
フォトクリエイトでは共にサービスを作っていくエンジニアを探しています。
新しいことにチャレンジができる環境であり、新しい技術も採用されることが多いです。
ご興味を持っていただけた方は、人事部門の担当者 [twitter: @tetsunosuke](https://twitter.com/tetsunosuke) までご連絡ください。