BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS】【Azure】【GCP】3大クラウドサービスにおけるオブジェクトストレージサービスを比較してみた。

こんにちは!BFT名古屋支店の松野です。
前回は3大クラウドサービスのFaaSに関してまとめさせて頂きました。今回はサーバレスアーキテクチャ構築時に使用されることの多い、オブジェクトストレージサービスに関してまとめていきたいと思います。
それではよろしくお願いします!

前回FaaSに関してまとめた記事はこちらから。

bftnagoya.hateblo.jp

はじめに

前回の記事でも触れましたが、クラウドサービスを利用してサーバーレスアーキテクチャを構築する際に使用する、代表的な技術要素には以下のようなものがあります。

  • アプリ実行基盤サービス(FaaS)
  • ストレージサービス
  • コンテナサービス
  • API構築・管理サービス

そして、3大クラウドサービスにおける具体的なサービスは以下のようになっています。

AWS Azure GCP
アプリ実行基 AWS Lambda Azure Functions Cloud Functions
ストレージ Amazon S3 Azure Blob Cloud Storage
コンテナ AWS Fargate Azure Container Instances Cloud Run
API構築・管理 Amazon API Gateway API Management Cloud Endpoints/Apigee

前回はこの中からアプリ実行基盤であるFaaSを中心にまとめさせて頂きました。今回はストレージサービスついてまとめていこうと思います。

ストレージサービス

ストレージサービスはクラウド以外にも良く展開されています。Google DriveiCloud storageは使ったことのある方も多いのではないでしょうか。
それでは各クラウドサービスにおけるオブジェクトストレージサービスの概要をまとめていきます。

Azure
サービス名 Amazon S3 Azure Blob Cloud Storage
ストレージ料金(GB/月) $0.025 ¥2.24 $0.023
PUTリクエスト料金(10000リクエスト毎) $0.047 ¥5.6 $0.05
GETリクエスト料金(10000リクエスト毎) $0.0037 ¥0.448 $0.004
ストレージタイプ S3 標準
S3 Intelligent-Tiering
S3 標準 – 低頻度アクセス
S3 1 ゾーン – 低頻度アクセス
S3 Glacier
S3 Glacier Deep Archive
 PREMIUM
ホット
クール
アーカイブ
Standard Storage
Nearline Storage
Coldline Storage
Archive Storage
耐久性 99.999999999% 99.999999999% 99.999999999%
可用性 99.99% 99.90% 99.90%

※料金はAmazon S3 Standard、Azure Blob ホット、Cloud Storage Standard Storageを参照
※掲載情報は2021年2月時点(東京リージョン)

〇ストレージ料金・PUT料金・GET料金

まずは料金比較です。各ストレージサービスはデータ保存をすると掛かる料金、PUTリクエストをはじめとした書き込み操作、GETリクエストをはじめとした読み込み操作で分けています。
データ保存料金においては為替レート次第ではありますが、Azureが最も安く、書き込み操作及び読み込み操作においてはAWS S3が最も安いです。例えば500GBのデータを一か月間保存し、月に10万リクエストの書き込みと読み込みをした場合の料金を計算すると以下のようになります。

  • AWS S3 標準
    0.025(USD・GB/月) × 500(GB) × 0.047(USD/10000リクエスト) × 10(リクエスト) × 0.0037(USD/10000リクエスト) × 10(リクエスト) = 13.007(USD)

  • Azure Blob ホット
    2.24(円・GB/月) × 500(GB) × 5.6(円/10000リクエスト) × 10(リクエスト) × 0.448(円/10000リクエスト) × 10(リクエスト) = 1180.48(円)

  • Cloud Storage Standard Storage
    0.023(USD・GB/月) × 500(GB) × 0.05(USD/10000リクエスト) × 10(リクエスト) × 0.004(USD/10000リクエスト) × 10(リクエスト) = 12.04(USD)

2021年2月時点の為替レートは約104~105円となっており、104円として計算すると、AWS S3は「1352.728円」でありCloud Storageは「1252.16円」となります。
今回の条件においては、Azureが提供しているAzure Blobが最もコスト効率が良いという結果になりました。

〇ストレージタイプ

次にストレージタイプです。どのストレージサービスにも以下の3タイプのストレージが用意されています。

  • データ保存と頻繁な読み書きに向いているスタンダードタイプ
    • Amazon S3 標準、Azure Blob ホット 、Cloud Storage Standard Storage
  • 読み書き時のコストは割高だが、その分データ保存が割安になっているデータ保存タイプ
    • Amazon S3 標準 – 低頻度アクセス、Azure Blob クール、Cloud Storage Coldline Storage
  • 普段の業務では参照されることがほとんどない長期的なデータ保存を目的とするアーカイブタイプ

1点特筆すべきポイントはAmazon S3にて提供されているAmazon S3 Intelligent-Tieringタイプの存在でしょう。このストレージタイプは2018年11月に発表され、2020年11月にはアーカイブ層の追加も発表されています。その内容は、通常これらのストレージサービスは保存するデータのアクセス頻度等を想定しストレージタイプを選択し、ライフサイクルポリシーの設定を行なうことが一般的なのですが、Amazon S3 Intelligent-Tieringを利用することによって、高頻度・低頻度・アーカイブ等のアクセスパターンを意識することなくAmazon S3を最適なコスト効率で運用することが可能となります。

〇耐久性・可用性

それでは最後に耐久性と可用性についてもまとめていきましょう。耐久性は全てのサービスにおいて99.999999999%(イレブンナイン)となっています。
AWS公式によるとこれは、「10,000個のオブジェクトを保管すると、平均して1,000万年ごとに1つが失われる可能性があります。」となっており、データ損失の懸念はほぼないと言ってよいことがわかると思います。
次に可用性です。可用性とはシステムが正常に継続して稼働し続ける能力を表しています。Amazon S399.99%であり、Azure BlobとCloud Storageが99.90%となっています。具体的に年間でどれくらいの非稼働時間が想定されるのか計算してみましょう。

  • 可用性99.90%の場合
    365(日) × 24(時間) × 60(分) × (1 - 0.999) = 525.6(分) ≒ 8時間46分

  • 可用性99.99%の場合
    365(日) × 24(時間) × 60(分) × (1 - 0.9999) = 525.6(分) ≒ 52分34秒

となり、可用性が99.90%の時は年間に8時間46分の、99.99%の時は52分34秒の非稼働時間がそれぞれ想定されるということになります。
個人的に0.09%の差と言われるよりも差が大きいと感じましたが、皆さんはどう感じられたでしょうか。いずれにせよ年間で数時間の非稼働タイムということであればよっぽどの不運に直面しない限り大きな問題にならないように思います。

おわりに

今回はコンテナサービスやAPI構築・管理サービスもまとめようと考えていたのですが、書き始めたら色々書きたくなってしまったのでオブジェクトストレージに絞ったまとめとさせて頂きました。次回も出来る限り調査をして少しでも良いものを書けたらと思っています。
それではありがとうございました!

参考文献

AWS S3

https://aws.amazon.com/jp/s3/?nc=sn&loc=0

・Azure Blob

https://azure.microsoft.com/ja-jp/services/storage/blobs/

・Cloud Storage

https://cloud.google.com/storage?hl=ja

クラウドストレージ比較解説まとめ

https://cloud-textbook.com/48/