AWSで提供されているストレージサービスを用途や料金別にまとめます。
ストレージの性能・スペックとは?
ストレージの性能を分類すると読み書き性能や容量などが挙げられます。
- シーケンシャルのRead/Write性能
- ランダムのRead/Write性能
- 容量
- レイテンシー (読み書き要求から実際に読み書きが始まるまでの時間差)
- 耐久性
こうしたスペックの性能が上がるほどコストが高くなるのは想像しやすいと思います。特に容量よりもスピードの方がコストが高いです。
AWS等のクラウドサービスではスペックや用途によってサービスが分かれており、ユーザは適したサービスを選択できるようになっています。
求められる性能は用途によって異なる
ストレージはその用途によって求められる性能が違います。
- システム利用 →頻繁な読み書きが発生し、低レイテンシー・高スピード、高い耐久性(しばしば復旧性)が求められる(最高の要求性能)
- OSやデータベースなど
- 更新頻度の低いデータ・読み出しのみ → 中程度のレイテンシーやスピード、
- 静的ウェブサイトのコンテンツ、時々参照や編集するコンテンツ
- 読み出し頻度の低い保存データ → 大容量、高耐久性
- 古いログファイル、バックアップ・アーカイブデータ
頻繁な読み書きが発生するOSのシステム領域の用途に読み書きが遅いストレージを使えば性能が低下します。また、せいぜい数十GBあれば十分で数TBの大容量ディスクは不要です。
古いバックアップデータなど頻繁に読み書きしないデータには、高速なストレージは不要で、大容量・高耐久性で低コストなストレージが求められます。
サービス別に用途を考える
- EBS.
- 仮想マシン(EC2)にアタッチして利用するストレージ
- EFS
- NFS 標準はEBSよりも高い。性能によりコスト差が大きい
- S3 そんなに早くない、大容量、高耐久性、低コスト
- データ保管
- (S3 Glacier Deep archive) 遅い、大容量、高耐久、超低コスト
- 長期のデータ保管用
- Elastic cache 超速い、高コスト、データ保管用途ではない
EBSとは?仮想マシンの汎用ディスク
EBSはAWSの仮想マシン・EC2のOSを格納するディスクとして利用されているストレージです。PCでいうHDD・SDDのような立ち位置です。
スペックの選択幅が大きく、汎用性が高いですが、高いディスク性能が求められる用途に適しています。
- OSのブート、システムのルートボリューム
- データベース
- アプリケーション
低レイテンシー、高いスループット・IOPSが特徴で性能も複数の選択肢から選べます。
容量あたりの価格は S3よりも高額です。複数のディスクタイプが存在していますが、通常利用する場合はSSDのgp3を利用する場合がほとんどだと思います。
EC2にアタッチして用いるEBSは価格が高いので、OSやDB、ディスク要求が大きいアプリケーションはEBSに載せて、それ以外のデータ保管は安価なS3やEFSを用いるという使い方になると思います。
EBSはパソコンに接続されているHDD・ SSDと同じように扱うことができますが、物理的にインスタンスに接続されているわけではなくネットワーク経由で接続されています。
物理的に接続されているインスタントストア(一部のインスタンスタイプに付属)と比べてパフォーマンスは低いです。
EFSとは?
EFSは複数の仮想マシンにマウント可能なネットワークストレージでNFSとして利用できます。
S3と異なる点
- 標準機能としてファイルシステムにマウントして使える
EBSと異なる点
- 複数の仮想マシンにアタッチ可能
複数のEC2マシンの間でデータをリアルタイムに共有したい時にEFSを互いにマウントすれば同期が可能です。
S3とは?
Simple Storage Service (S3)はデータを保管する用途がメインでHTTP(S)で接続できることからアプリケーションとの連携や静的ウェブサイトホスティングなどにも使える汎用性の高いストレージサービスです。
HTTP経由でアクセスできるため、仮想マシンへのアタッチは不要で単体で機能します。
レイテンシーは大きく、転送コストも高めであること、OSのファイルシステムのような階層で保存されるのではなく、オブジェクトとして保存される(ユニークなオブジェクトキー:データ)ため、システム領域に利用はできません。
レイテンシーや読み書き性能がサービスの性能に影響しにくいような場面で利用することになります。
汎用性とコストのバランスが高いサービスで S3の利用が適していることが多いでしょう 特にHTTP(S)経由でアクセスできるのが大きい
S3にも複数の種類がある
S3にも複数の種類がありますが、読み出し頻度や耐久性を低くしてより安く利用するオプションが複数あるということです。
- 読み出し頻度・耐久性 ↓
- コスト ↓. (やすく借りるオプション)
主に2つのサービスが両極にあり、その間を取ったサービスが複数あると考えて良いです。
- 標準の S3 → 最も高い、通常利用用途
- (間に複数のS3サービス)
- S3 Glacier Deep archive. → 最も安い、長期データ保管用途
S3コスト低減の方法
S3のコストは安価ですが用途により高額になることもあります。
コストをできるだけ抑えるためには以下の点に注意しましょう。
- データ転送(S3からインターネットへの料金) : 1GBあたり保存の4.5倍の料金
- キャッシュサーバ・CloudFrontを挟む(コストは同等だが無料枠1TB有りのため)
- コンテンツを圧縮する
- 保存コスト
- Glacierなどの低コストストレージサービスに切り替える
- ライフサイクルルールで一定期間後に削除・Glacierに移行(ログとか)
- コンテンツを圧縮する
- Glacierなどの低コストストレージサービスに切り替える
S3転送速度の高速化の方法
S3の欠点はIOスループットです。この対策のためにオブジェクトプレフィックスをランダム化してパフォーマンスを向上させる方法が提案されていましたが、現在ではこれは不要だと言われています。