【資格合格】AWS DVA, SOAの振り返り

ちょっと時間が経ってしまいましたが、**AWS Developer Associate**と**SysOps Administrator Associate**に合格したので、備忘録を兼ねて学習方法の振り返りや受験の所感を共有です！

ちなみに合格したのはDVAが2/17、SOAが6/16とそこそこ時間経ってます。
重い腰がようやく上がった(^^;

## 受験背景
昨年AWS SAAを受験し合格しました。

https://qiita.com/nishikor/items/73c4fa0d29d85031bac1

それっきりAWSの学習はやっていなかったのですが、現場で触れるようになる必要が出てきたことをきっかけに勉強しなおそうと言うことで受験を決意

受験時のスペックとしては以下です。
- 普段はJava, SpringやVue.jsを使用したWebアプリケーション開発がメイン（4年くらい）
- AWSの実務経験としてはEC2、S3、Lambdaなどの基本的なサービスに触れているくらい
- 開発のために触れているので、環境の構築や運用面はまだまだ

## DVA, SOA共通

### 勉強方法
1. AWS公式の試験ガイドを確認
1. AWS Black Beltで知らないサービス、曖昧なサービスの勉強
1. 模擬試験→参考書で確認

#### 試験ガイド
まずは、試験ガイドを確認しましょう。ガチでおすすめです。
試験範囲と対象となる知識が載ってます。
不十分なところから取り組んだり、優先順位をつけて取り組んだり、学習計画を立てるのに有効活用します。
「全部わかんな〜い」って言う人は全部頑張ってください
以下はDVAのガイドです。

https://d1.awsstatic.com/ja_JP/training-and-certification/docs-dev-associate/AWS-Certified-Developer-Associate_Exam-Guide.pdf

また、最後の付録に
> 範囲内の AWS のサービスと機能

とあります。
試験合格に向けてにはなりますが、範囲外のサービスの勉強をしないようにも確認しておくべきですね。

#### AWS Black Belt
過去にOnline Seminarで行われた、セッションの閲覧とPDFのダウンロードが可能です。
サービスごとに技術的な概要やハンズオンを用いて学ぶことができます。

https://aws.amazon.com/jp/events/aws-event-resource/archive/?cards.sort-by=item.additionalFields.SortDate&cards.sort-order=desc&awsf.tech-category=*all

#### 模擬試験
模擬試験についてはさまざまな有料のサイトが用意されていると思います。
特定のサービスについては、言及したくないので控えますがどれを選んでも同じかなと言う印象です。
間違えた部分を参考書で繰り返し勉強しなおしたり、マネジメントコンソールで触ってみることを繰り返しました。

## Developer Associate
まずはDVAからの振り返りです

学習期間は12月後半から2月の前半にかけての2ヶ月間です。
1日2時間で大体100時間ほど。人それぞれなので参考程度にしてください。

### 参考書
ポケットスタディの「AWS認定デベロッパーアソシエイト［DVA-C02対応］」を使用しました。
全て見ると言うよりは、模擬試験で間違えた際の逆引き辞書のようなイメージでの使用です。

https://www.shuwasystem.co.jp/book/9784798070698.html

### 詰まったところ
AWSには似たような役割のサービスや、機能が多いです。
サービス機能というよりは役割を覚えることが大変でした。

参考にAWSが公開しているサンプル問題で確認してみます。
https://d1.awsstatic.com/ja_JP/training-and-certification/docs-dev-associate/AWS-Certified-Developer-Associate_Sample-Questions.pdf

> ある企業が、レガシーアプリケーションを Amazon EC2 に移行しようとしています。MySQL データベースに接続するためのユーザー名とパスワードが、アプリケーションのソースコードに直接コーディングされています。
このデータベースは、Amazon RDS for MySQL データベースインスタンスに移行される予定です。この企業は、移行プロセスの一環として、データベース認証情報を格納および自動ローテートするためのセキュアな方法を実装したい、と考えています。
これらの要件を満たすソリューションはどれですか。
A) データベース認証情報をAmazon Machine Image (AMI) の環境変数に保存する。AMI を置き換えて認証情報をローテーションする。
B) データベース認証情報をAWS Systems Manager Parameter Storeに保存する。認証情報を自動的にローテーションするようにParameter Storeを設定する。
C) データベース認証情報を EC2 インスタンスの環境変数に保存する。EC2 インスタンスを再起動して認証情報をローテーションする。
D) データベース認証情報をAWS Secrets Manager に保存する。認証情報を自動的にローテーションするようにSecrets Managerを設定する。

この問題で問われていることは以下です。
- MySQLの接続情報をAWSサービス上に移行したい
- 接続情報は自動ローテートさせたい

実は、選択肢で指定されているサービスや機能全てで接続情報を保持させることはできます。
なので、自動ローテートできるのはどういったサービスなのかを知らなければ解けません。
回答は**D**となります。Secrets Managerが「認証情報などのシークレットを安全に暗号化する」ではなく「ライフサイクルを含めて一元的に管理する」といったことを知らないといけません。
しかも、似たような機能であるParameter Storeが同じ問題文によく出てくるイメージです。

こちらの問題に限らず、似たようなや機能を実現する際の問題に苦労しました
- SQS, SNSどっちがいいんだっけ？
- S3からの通知を行う際にEventBridgeを使う必要あったっけ？

など、似たサービス、似た機能で苦労しました。

## SysOps Administrator
続いて、SOAの振り返りです

学習期間は4月後半から6月の前半にかけての2ヶ月間です。
同じく1日2時間で大体100時間ほど。

試験ガイドは以下です

https://d1.awsstatic.com/ja_JP/training-and-certification/docs-sysops-associate/AWS-Certified-SysOps-Administrator-Associate_Exam-Guide.pdf

### 参考書
ポケットスタディの「AWS認定SysOpsアドミニストレーターアソシエイト」を使用しました。
使用方法はDVAと同じです。

https://www.shuwasystem.co.jp/book/9784798065311.html

### 詰まったところ
- 運用の経験がないため、問われていることのイメージが全く湧いてこない
関連するサービスが多いです。CloudWatchだけ知ってれば〜と甘い考えを持ってましたが、おかげで苦労しました。
- 高可用性を実現するための具体的な手法への理解
CloudFormationによる具体的な方法についても理解に苦労しました。
テンプレートに記載するリソースやパラメーターの意味を覚える必要があります。
また、自動起動させるサービスがリージョン単位かAZ単位かや、命名は被って大丈夫かなどを意識する必要がありました。
- マルチアカウント戦略
AWS Organizationsを使用した運用方法への理解も苦労した点です。
普段AWSを使っていますがOUIを意識することがないので、アイデンティティとアクセス管理が複雑になるかと思います。

マネジメントコンソールを触るだけでは対策できない部分もあるので、
模擬試験の問題を繰り返しといて、イメージをわきやすいようにする必要がありました。

## 所感
今回はきちんと試験ガイドを読んでから学習に臨んだのですが、かなり重要だと思いました。
事前知識が中途半端にある分、わかってることとわかっていないことの線引きを行い、優先度を決めた学習方法が功をそうしたと思います。
また、AWS BLACK BELTでは無料での学習コンテンツを用意してくれているので使わない手はないなと再認識です。
次回は、Data Engineer - Associateを受験しようと思います。
まだ、出来立ての試験で情報量が少ないですがAWS Skill Builderなどを使いながら挑戦していきたいですね

ここまで読んでくださった方ありがとうございました。
少しでも参考になれば(^_^)ノ