ストレージとデータ転送

Google Cloud でのオブジェクト ストレージ費用の最適化: ロケーションとクラス

#storage

※この投稿は米国時間 2021 年 4 月 14 日に、Google Cloud blog に投稿されたものの抄訳です。

ストレージは、クラウドベースのインフラストラクチャに欠かせないコンポーネントです。データを保存したり取り出したりする場所がないと、データベースは機能せず、コンピュータを動かすこともできず、ネットワークには保持しているデータを置いておく場所がありません。多くのお客様にとって、ストレージはクラウド費用の上位 3 つのうちの 1 つであり、ほとんどの企業のストレージ ニーズは増加の一途をたどっています。お客様が Google にストレージ費用を最適化する方法をお問い合わせされるのも当然のことでしょう。

多くのオンプレミス環境ではファイル ストレージやブロック ストレージが使用されるのに対して、クラウド ストレージ環境の大部分ではオブジェクト ストレージが使用されています。Google Cloud のオブジェクト ストレージである Cloud Storage は、大量のデータを保存するための大容量ストレージに適しています。オブジェクト ストレージには階層構造がありません(非常に大きな値の Key-Value ペア)が、その中に保存されるファイルには、バイナリデータ、テキストデータ、または Apache ParquetAvro などの特殊なデータもあります。

オブジェクト ストレージは 1 GB あたり 1 ペニー以下で利用でき、大容量のデータを保存するのに最も安く、最もスケーラブルなソリューションです。ただし、いくらオブジェクト ストレージの料金が安くても、費用がかさむこともあります。多くのワークロードが実行されており、時間の経過とともにニーズが変化する組織では、新しいアプリケーションまたは新しく移行されたアプリケーションごとにクラウド ストレージのニーズ(および費用)を最適化することが難しい場合があります。

クラウド ストレージの費用を節約するには、さまざまな方法があります。その方法は、データ ライフサイクルのニーズ、取得パターン、ガバナンス要件など、さまざまな要因によって異なります。このブログは、Google Cloud のオブジェクト ストレージ費用を節約する方法を解説するシリーズの初回の投稿です。まず、データを保存する Google Cloud リージョンと、ストレージ クラス オプションの選択という、2 つの最重要検討項目を中心に見ていきます。

適切な構成から始めましょう

最初にバケットを設定するとき、これがオブジェクト ストレージの費用を節約できる最初の機会になります。ストレージの設定は簡単ですが、重要なことをいくつか決めなければなりません。ここで選択するストレージ ロケーションなどは、保存するデータの量が増えるにつれて変更が難しくなり、時間もかかるようになるため、ニーズに合った適切な決定を行うことが重要です。

ロケーション

ストレージ ロケーションの選択は、費用、パフォーマンス、可用性のバランスに影響します。リージョン ストレージの費用が最も安く、デュアルリージョンまたはマルチリージョンで構成すると高くなります。

choosing a location type.jpg

リージョン ストレージはその名のとおり単一のリージョンに限定されているため、通常、可用性が最も低くなります。それでも、データ自体は高可用性が維持されます。単一リージョンのストレージを使用すると、リージョン内の複数のゾーンに重複してデータが保存されます(Google Cloud のリージョンとゾーンの詳細をご確認ください)。Google Cloud のシステムは、ゾーン内の障害を隔離するように設計されています。

デュアルリージョンおよびマルチリージョンのストレージは、リクエストを処理できる複数のリージョン(それぞれに複数のゾーンがある)が存在するため、さらに高い可用性を提供し、万が一リージョン全体が停止してしまってもデータへアクセスできます。

パフォーマンスを考慮する場合、ストレージのロケーション選択は難しい問題です。一般的に、(リージョンまたはデュアルリージョンのロケーションを選択することで)データをリージョンに固定し、リーダーとライターを同じリージョンに配置すると、パフォーマンスが大幅に向上します。たとえば、ワークロードが単一の Google Cloud リージョンでホストされている場合、ネットワーク ホップ数を最小限に抑えるために、オブジェクト ストレージを同じリージョンに配置すべきです。あるいは、読み取りと書き込みに Cloud Storage を使用するオンプレミスのワークロードがある場合は、専用のリージョン相互接続を使用して、全体的な帯域幅の消費を削減し、パフォーマンスを向上させるとよいでしょう。

逆に、マルチリージョン ストレージは通常、Cloud CDN の有無にかかわらず、ヨーロッパや北アメリカなどの地理的に非常に広いエリアにトラフィックを直接提供するために優れたパフォーマンスを発揮します。多くのアプリケーション、特に消費者向けアプリケーションは、クラウド リージョンとエンドユーザーの間の「ラスト ワンマイル」のレイテンシを考慮する必要があります。このような状況では、デュアルリージョンのストレージよりも非常に高い可用性とコスト削減を実現できるため、アーキテクトは、マルチリージョン ストレージにより多くの価値を見出すことができます。

費用に関しては、リージョン ストレージがオプションの中で最も低価格です。デュアルリージョンは、メタデータが共有された 2 つのリージョン バケットであり、付随するロケーションが固定されることと、高いパフォーマンスを発揮することから、最も高価格となっています。マルチリージョンは、データを置く場所を Google が柔軟に選択できることでデータをより経済的に保存できるため、中間の価格帯となっています。概算で、リージョン ストレージで $1 かかるところ、マルチリージョンのストレージの場合は最大 $1.30、任意のクラスのデュアルリージョン ストレージの場合は最大 $2 の費用がかかります。

容量が増えれば合計費用も増えていくため、Cloud Storage バケットのロケーションは戦略的に考えることが重要です。一部のサービスでは、デフォルトで米国内のマルチリージョンにバケットが作成されますが、そのデフォルトの設定をそのまま利用しないことをお勧めします。必要なパフォーマンスと可用性を考慮し、地理冗長と可用性に必要以上にお金をかけないようにするのがよいでしょう。

ストレージ クラス

Cloud Storage バケットのロケーションを選択したら、デフォルトのストレージ クラスを選択する必要があります。Google Cloud には、Standard、Nearline、Coldline、Archive の 4 つのクラスがあります。各クラスは、さまざまなデータ取得プロファイルに対応しており、クラスが指定されていない限り、デフォルトのクラスがすべての書き込みに自動的に適用されます。精度を高めるために、ストレージ クラスをバケット内の個々のオブジェクトごとに決めることができます。オブジェクト レベルでは、オブジェクトを書き換えるか、オブジェクトのライフサイクル管理を使用することで、ストレージ クラスを変更できます(ライフサイクル管理については、このシリーズの今後のブログで詳しく取り上げます)。

ストレージ料金はオンデマンドでの使用に応じて決定されますが、各料金には暗黙の「契約」があり、それを理解することで、ユースケースに最適なクラスを選択できます。「ホット」または「Standard」ストレージの契約の場合、1 GB あたりの月額ストレージ料金は高くなりますが、取得や早期削除による 1 GB あたりの追加料金はありません。「よりコールドな」ストレージ クラスの場合、1 GB あたりの月額ストレージ費用はもっと安くなるかもしれませんが、取得と早期削除の 1 GB あたりの料金を考慮する必要があります。目標は、ほとんどの場合のユースケースにおいて合計費用が最小になるデフォルトのストレージ クラスを選択することです。それには、長期的な視点(または予測)が重要になります。

まず、ドキュメントに記載されているガイドラインを基本として考えましょう。

  • Standard: 定期的なアクセス、保持の最短期間はなし。これは「ホット」データです。

  • Nearline: 月に 1 回未満のアクセス、1 か月を超えて保持。

  • Coldline: 四半期に 1 回未満のアクセス、四半期を超えて保持。

  • Archive: 年に 1 回未満のアクセス、1 年を超えて保持。

guidelines.jpg

では、データアクセスの取得が状況によって異なる場合はどうなるのでしょうか?多くの Cloud Storage ユーザーは 1 年以上(無期限ではないにしても)データを保持するため、早期削除の費用を考慮して分析を複雑にする必要はありません(つまり、この分析では、すべてのデータを 1 年以上保持することを前提としています)。ただし、取得費用については、簡単に予測できず、どれが最適であるか不明瞭である場合、またはより正確に決定したい場合、次の数式を使用することで、2 つのストレージ クラスのうち、どちらのクラスが経済的であるかを決定するアクセス頻度の分岐点を見つけることができます。

数式では、次の項を使用します。

hs = 「よりホットな」クラスの GB 月間ストレージ費用

cs = 「よりコールドな」クラスの GB 月間ストレージ費用

cr = 「よりコールドな」クラスの GB 取得費用

(hs - cs) ÷ cr = 分岐点となる、毎月読み取るデータの割合

例として、us-central1 の Standard ストレージと Nearline Regional ストレージについて考えてみます(2021 年 1 月時点の価格)。

(0.02 GB/月 - 0.01 GB/月) ÷ 0.01 GB = 1.0/月 = 100%/月

つまり、Nearline に保存しているデータ量の最大 100% を月に一度読み取っても、Standard と料金は変わらない可能性があります。ただし、この計算には 2 つの注意点があります。

  • 繰り返しの読み取りもカウントされます。1 か月に 1% のデータを 100 回読み取ると、100% のデータを 1 回だけ読み取るのと同じ計算になります。

  • この計算では、平均オブジェクト サイズが大きいこと(数十 MB 以上)を前提としています。ファイルが非常に小さい場合、オペレーション費用が計算に影響します。

それでも、保存した量の 100% 未満を読み込んでいて、小さなオブジェクトがない場合(詳細は以下を参照)、Nearline Storage を使用するだけで料金を節約できる可能性があります。

すべてのストレージ クラスでのこの傾向を可視化するために、次のグラフに、us-central1(アイオワ)の Regional Storage クラスのストレージと保持費用を示します。これらの傾向はすべてのロケーションで類似していますが、「ベストレート」の変曲点は異なります。

visualization.jpg

繰り返しになりますが、データを 1 年以上保持する予定である場合は、上で示される「ベストレート」の点線に沿ってストレージ クラスを選択すべきです。この場合、月に 1 回だけデータを読み取る際の変曲点は、Archive、Coldline、Nearline でそれぞれ約 10%、60%、100% です。

他の考え方として、データの 10% 未満にアクセスする場合、あるいは月に 1 回またはそれ以下のアクセスである場合は、Archive が最も費用効果の高いオプションとなります。データの 10% から 60% に、月に 1 回だけアクセスする場合は、Coldline が費用を最適化する選択肢です。また、データの 60% から 100% に、月に 1 回だけアクセスすることが予想される場合、Nearline が最も費用の安いストレージ クラスです。データの 100% にアクセスする場合、または月に 1 回以上アクセスする場合は、Standard Storage が最適なオプションです。これは、繰り返し読み取ることが多いデータに頻繁にアクセスする場合に適しています。

まとめ

オブジェクト ストレージはクラウド アプリケーションで重要な役割を果たしており、クラウド ストレージのフットプリントが大きい企業は、オブジェクト ストレージにかかる費用に注意を払う必要があります。Google のオブジェクト ストレージである Cloud Storage は、お客様のストレージ費用を最適化するさまざまな手段を提供しています。

シリーズ最初のこのブログでは、ストレージのロケーションとストレージ クラスという、特に重要な 2 つの手段に関するガイダンスについて記載しました。ストレージ ロケーションとストレージ クラスはバケット作成時に決定され、各オプションにはそれぞれのトレードオフがあります。前述のガイダンスは、ストレージ要件に合った正しい選択を行えるように作成されています。

Cloud Storage とその開始方法の詳細については、入門ガイドをご覧ください。また、取得パターンとライフサイクル管理のためのオブジェクト ストレージ費用の最適化に関する今後のブログ投稿にもご注目ください。

-Cloud ソリューション アーキテクト Dom Zippilli