【AWS SAA】問題詳しめ解説 part1

## 問題１
ある会社が、オンプレミスとAWS上の複数のEC2インスタンスでファイル共有する方法について検討している。共有ストレージはLinuxインスタンスからNFSを使用してマウント可能なファイルシステムである必要があり、かつ最小ストレージ容量の制限がないことも条件である。同社は、AWS Direct Connectを契約しており、オンプレミスからVPCへDirect Connect回線で接続している。
もっとも適切なAWSストレージは次のうちどれか。

(1) IAMでアクセス権限を設定したAmazon S3
(2) マルチAZ構成にしたAmazon FSx
(3) マルチマウントターゲット設定にしたAmazon EFS
(4) マルチアタッチボリュームに設定したAmazon EBS

<details><summary>回答・解説:bulb:</summary>
回答：（３）
<br>解説：
今回の条件は以下である。

①NFSを使用してマウント可能なファイルシステム
②最小ストレージ容量の制限がないこと

＝＝＝＝条件②＝＝＝＝＝
先に上記の条件に関連するおさらい。
| サービス名 | ストレージ形式 | 容量 | 同時アクセス |プロトコル
|:-:|:-:|:-:|:-:|:-:|
|  S3 |  オブジェクトストレージ |  無制限 |  可能 |HTTPS/HTTP|
|  EBS |  ブロックストレージ |  16TB | 不可 |SCSI/iSCS/FCなど|
| EFS |  ファイルストレージ |  無制限 |  可能 |NFS/SMB/CIFS|
|  FSx |　ファイルストレージ | ６４TB | 可能 |NFS/SMB/CIFS|

条件②よりEBSとFSxが選択肢から消える。

＝＝＝＝条件①＝＝＝＝＝
まずNFSとは（Network File System）で、NFSとはネットワーク上にある複数のコンピュータからストレージを共有することができるプロトコルのことで、主にLinuxを含むUNIX系のサーバーで使用されています。
 S3はNFSプロトコルを使用して直接ファイルシステムとしてマウントできないため、答えは残ったEFS。
 ☝️普通こんなこと知らないよね...

 ■参考資料
 Amazon Elastic File System (EFS) ユーザーガイド「マウントターゲットとセキュリティグループの作成と管理」
https://docs.aws.amazon.com/ja_jp/efs/latest/ug/accessing-fs.html

Amazon Elastic File System (EFS) ユーザーガイド「Amazon EFS の仕組み」：AWS Direct ConnectとAWSが Amazon EFSマネージド VPN で動作する仕組み
https://docs.aws.amazon.com/ja_jp/efs/latest/ug/how-it-works.html#how-it-works-direct-connect

DevelopersIO produced by Classmethod「AWS再入門ブログリレー2022 Amazon EFS編」：Amazon EFSとは
https://dev.classmethod.jp/articles/re-introduction-2022-efs/#toc-2
</details>

## 問題２
あるeコマースプラットフォームでは、大規模プロモーション中に顧客が急増すると、データベースへのアクセス遅延が顕著になり、サイトのパフォーマンスが低下する。このプラットフォームはAmazon RDS for PostgreSQLを利用して顧客の注文情報や商品データを管理しており、リードレプリカを10個まで増やしたにもかかわらず、データベースの読み取り負荷が引き続き主な問題となっている。特に、同一データへの頻繁なアクセスが多く発生していることが、サイトのレスポンス速度に悪影響を及ぼしている。この状況を根本的に改善するために、効率的かつコスト効率のよい解決策が必要である。どのソリューションが適切か。

(1) リードレプリカのスケーリングアップを行う
(2) Amazon Aurora PostgreSQLへの移行とリードレプリカの増設を行う
(3) アプリケーションコードの最適化を行う
(4) アプリケーションとDBの間に、Amazon ElastiCacheを導入する



<details><summary>回答・解説:bulb:</summary>
回答：(４)
<br>解説：
今回の条件は以下である。

①「同一データへの頻繁なアクセスが多く発生していることが、サイトのレスポンス速度に悪影響を及ぼしている」の根本的な解決

 ＝＝＝＝条件①＝＝＝＝
 同一データへの頻繁なアクセスと言えば、、、、キャッシュのはず！
 キャッシュとは、一度読み込んだ内容・情報を一時的に保存しておくことで、次回閲覧する際に素早く読み込めるようにするための方法のこと。
 例えば、いつもみんなが見ているYahooニュースだと、出てくるニュースは毎日違うが、枠組み（赤と白の背景）はいつも同じだから、キャッシュしておけば通信量が少なくて早いというメリットがある。

 ＝＝＝＝他の選択肢がダメな理由＝＝＝＝
(1) リードレプリカのスケーリングアップを行う
→少しは改善するかもしれないけど、根本的な解決にはならなそう...

(2) Amazon Aurora PostgreSQLへの移行とリードレプリカの増設を行う
→Aurora PostgreSQLは、RDS for PostgreSQLよりも高いパフォーマンスを提供し、RDSと同じ数のリードレプリカ（最大15個）を追加できます。しかし、リードレプリカの数には物理的な限界があり、データの同期遅延などの問題が生じる可能性があります。既にリードレプリカを多用して負荷分散を図っている状況では、これ以上の増設は効果が限定的ですので、不適切です。
☝️こんなこと書いてるけどそもそもAuroraってなんだっけ？

(3) アプリケーションコードの最適化を行う
→アプリケーションレベルでのクエリの最適化や不要な読み取りの削減は、データベースの負荷を減らす効果的な方法ですが、これは開発リソースを必要とし、短期間での効果は限られます。したがって、効率的かつコスト効率のよい解決策が求められてる今回の問題では、不適切です。

＝＝＝＝Auroraってなんだっけ？＝＝＝＝
Amazon Auroraとは、Amazon RDS（Relational Database Service）のデータベースエンジンの1つ。
![スクリーンショット 2024-08-14 22.41.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3859277/7b437fa0-ce6e-0752-0b77-3d2c8e4956d2.png)

Auroraの特徴
スループットと拡張性
標準的なMySQLの5倍のスループット・PostgreSQLの3倍のスループットを実現。
また、簡単にスケールアップ・スケールダウンも行うことが出来ます。

ストレージシステムの拡張性
データベースインスタンスごとに最大128TBまで自動的にスケールされ
耐障害性と自己修復機能も兼ね揃えています。

可用性
最大15個のリードレプリカやポイントインタイムリカバリー、
またs3へのバックアップや3つのAZでのレプリなど可用性が高いです

</details>

## 問題３
ある会社は、オンプレミス環境にWindowsファイルサーバーを運用している。ファイルサーバーには約5TBのデータが保存されている。同社は、ファイルサーバーのデータをAWS上に移行したいと考えている。現在、移行対象のファイルはActive Directory (AD) を使用したアクセス権限が設定されており、移行後も権限を引き継ぐ必要がある。なお、同社は高速なインターネット回線を保有している。
要件を満たしてデータを移行できる方法は、次のうちどれか。（2つ選択）
(1) Snowconeデバイスを注文して、ファイルサーバーのデータを保存する。DataSyncを利用して、FSx for Windows File Serverへデータを転送する
(2) Snowballデバイスを注文して、ファイルサーバーのデータを保存する。DataSyncを利用して、FSx for Windows File Serverへデータを転送する
(3) オンプレミスにStorage Gatewayをデプロイする。Storage Gateway ボリュームゲートウェイを利用して、FSx for Windows File Serverへデータを転送する
(4) オンプレミスにDataSyncエージェントをデプロイする。DataSyncを利用して、FSx for Windows File Serverへデータを転送する
(5) S3バケットにマルチパートアップロードを使用してデータを転送する。S3バケットからDataSyncを利用して、FSx for Windows File Serverへデータを転送する

<details><summary>回答・解説:bulb:</summary>
回答：(1)(4)
<br>解説：
今回の条件は以下である。

①オンプレミスのWindowsファイルサーバーからAWSストレージへ5TBのデータ移行
②ADで設定されたアクセス権限を移行後も保持
③高速なインターネット回線を保有

＝＝＝＝まずDataSyncって何これ？＝＝＝＝
DataSyncはオンプレミスのデータセンターや他のクラウド環境とAWSクラウド間でデータを迅速かつ簡単に転送するためのサービスです。数百万ファイルの大規模データセットをコピーすることができます。
ただし、対応しているストレージサービスはAmazon S3、Amazon EFS、Amazon FSxのみ。(ストレージサービス以外は他にもある)
DataSyncで転送されるデータは、ファイルやフォルダのタイムスタンプ、ディレクトリ構造、アクセス権限などのメタデータが保持されます。

＝＝＝＝なるほど、じゃあStorage Gatewayとは何が違う？＝＝＝＝
DataSyncはデータを自動的に移動・移行する必要があるワークロードに適しています。
Storage Gatewayはデータを複製してストレージサービスを統合する際に使用するのに適しています。

＝＝＝＝Snowball系のまとめ情報＝＝＝＝
| サービス | 説明 | ストレージ容量 | デバイスサイズ |
|:-:|:-:|:-:|:-:|
|  Snowcone |  AWSに送り返す（S3） or　DataSyncを使ってオンライン転送 |  8/１４TB |  ２Kg |
|  Snowball Edge Storage |  大規模データの移動 | 80TB  | ２２Kg  |
|  Snowbll Edge Optimized | データの移動かつ、高度な情報処理  |  40TB |  ２２Kg |
|  Snowmobile | 意味わからんくらいでかいデータの移動  |  100PB |  トラックでデータ取りに来る |

＝＝＝＝各選択肢の確認＝＝＝＝
(1) Snowconeデバイスを注文して、ファイルサーバーのデータを保存する。DataSyncを利用して、FSx for Windows File Serverへデータを転送する
→SnowConeはDataSyncを使用して、オンラインでFsxに転送可能

(2) Snowballデバイスを注文して、ファイルサーバーのデータを保存する。DataSyncを利用して、FSx for Windows File Serverへデータを転送する
→SnowballはAWSに送り返して、S3においてもらうしかないから、アクセス情報が消えるからダメ

(3) オンプレミスにStorage Gatewayをデプロイする。Storage Gateway ボリュームゲートウェイを利用して、FSx for Windows File Serverへデータを転送する
→ボリュームゲートウェイはiSCSIプロトコルで接続するため、FSxと通信できない

(4) オンプレミスにDataSyncエージェントをデプロイする。DataSyncを利用して、FSx for Windows File Serverへデータを転送する
→これは上記のDataSyncの説明にあるように問題なし

(5) S3バケットにマルチパートアップロードを使用してデータを転送する。S3バケットからDataSyncを利用して、FSx for Windows File Serverへデータを転送する
→S3バケットにデータを転送する際にファイルのアクセス権限が喪失するからダメ
☝️マルチパートアップロードを使えば、５TBまではアップロード可能らしい。
</details>