ストレージ戦略を選択して実装する

Last reviewed 2023-07-17 UTC

Google Cloud アーキテクチャ フレームワークのこのドキュメントでは、ストレージに基づいてシステムをデプロイするためのベスト プラクティスについて説明します。ストレージ戦略を選択する方法と、ストレージ、アクセス パターン、ワークロードを管理する方法について取り上げます。

データ交換を促進し、データのバックアップと保存を安全に行うには、ワークロード、1 秒あたりの入出力オペレーション(IOPS)、レイテンシ、取得頻度、場所、容量、形式(ブロック、ファイル、オブジェクト)に基づいてストレージ プランを選択する必要があります。

Cloud Storage は、次のような信頼性の高い安全なオブジェクト ストレージ サービスを提供します。

Google Cloud では、IOPS はプロビジョニングされた保存容量に応じてスケールします。Persistent Disk などのストレージ タイプはゾーン ストレージまたはリージョン ストレージであるため、手動でのレプリケーションとバックアップが必要になります。反対にオブジェクト ストレージは可用性が高く、1 つのリージョンやマルチ リージョン全体で、自動でデータを複製します。

ストレージの種類

このセクションでは、システムをサポートするストレージ タイプを選択するためのベスト プラクティスについて説明します。

高性能ストレージ ニーズのオプションを評価する

高性能ストレージを必要とするコンピューティング アプリケーション向けの永続ディスクもしくはローカル SSD(ソリッド ステート ドライブ)を評価します。Cloud Storage は、バージョニング可能なイミュータブル オブジェクト ストレージ サービスです。Cloud Storage を Cloud CDN とともに使用すると、特に頻繁にアクセスされる静的オブジェクトについてコストを最適化できます。

Filestore は、高性能の共有スペースを必要とするマルチライト アプリケーションをサポートします。Filestore は、ネットワーク ファイル システム(NFS)のマウントを介した POSIX のようなファイル操作を必要とするレガシー アプリケーションと最新のアプリケーションもサポートします。

Cloud Storage は、データレイクの作成やアーカイブ要件への対処などのユースケースをサポートします。特に保持ポリシーを構成する際は、アクセスコストと検索コストによる Cloud Storage クラスの選択に基づいてトレードオフを決定します。詳細については、クラウド ワークロードに最適なストレージ戦略の設計をご覧ください。

どのストレージ オプションでも、デフォルトでは保存時と転送時に Google が管理する鍵を使用してデータが暗号化されます。Persistent Disk や Cloud Storage などのストレージ タイプの場合、独自の鍵を指定することも、Cloud Key Management Service(Cloud KMS)を使用して鍵を管理することもできます。このような鍵を本番環境データで使用する前に、鍵の処理方法を確立してください。

Google Cloud サービスでストレージ デザインをサポートする

ストレージ設計をサポートする Google Cloud サービスについては、次の表をご覧ください。

Google Cloud サービス Description
Cloud Storage 世界中のどこからでも、いつでもデータを保存、取得でき、データの量に制限はありません。Cloud Storage は、ウェブサイト コンテンツの配信や、アーカイブおよび障害復旧を目的としたデータの保存、直接ダウンロードによるユーザーへの大規模なデータ オブジェクトの配布など、複数のシナリオで利用できます。

詳しくは以下をご覧ください。
Persistent Disk Google Cloud 向けの高性能なブロック ストレージPersistent Disk は、Compute Engine または Google Kubernetes Engine で実行されているインスタンスに接続可能な SSD ストレージとハードディスク ドライブ(HDD)ストレージを提供します。
  • リージョン ディスクを使用すると、同じリージョン内の 2 つのゾーン間で耐久性の高いデータ ストレージとデータ レプリケーションを実現できます。より高い IOPS と低レイテンシが必要なケースに対しては、Google Cloud は Cloud Filestore を提供します。
  • ローカル SSD は、仮想マシンのインスタンスをホストするサーバーに物理的に接続されます。一時的なディスク容量としてローカル SSD を使用できます。
Filestore データ用のファイル システム インターフェースと共有ファイル システムを必要とするアプリケーション向けのマネージド ファイル ストレージ サービスです。Filestore を使用することにより、Compute Engine や GKE のインスタンスでマネージド ネットワーク接続ストレージ(NAS)をシームレスに活用できるようになります。
Cloud Storage for Firebase 写真や動画のようなユーザー作成コンテンツを保存し配信する必要のあるアプリ デベロッパー向けに構築されています。すべてのファイルは Cloud Storage バケットに保存されているので、Firebase と Google Cloud の両方からアクセスが可能です。

ストレージ戦略を選択する

アプリケーションの要件に合ったストレージ戦略を選択するには、次の表をご覧ください。

ユースケース 推奨事項
最小限のコストで大規模にデータを格納する必要があり、アクセス パフォーマンスが問題にならない。 Cloud Storage
即時ストレージを必要とするコンピューティング アプリケーションを実行している。

詳細については、Persistent Disk とローカル SSD のパフォーマンスの最適化をご覧ください。
Persistent Disk またはローカル SSD
共有スペースに対する読み取りと書き込みのアクセス権が必要な高パフォーマンス ワークロードを実行している。 Filestore
ハイ パフォーマンス コンピューティング(HPC)またはハイ スループット コンピューティング(HTC)のユースケース。 クラウド上でのクラスタを利用した大規模なテクニカル コンピューティング実行

ストレージ アクセスのニーズに基づいてアクティブ ストレージまたはアーカイブ ストレージを選択する

ストレージ クラスは、すべてのオブジェクトで使用されるメタデータです。可用性が高く、高頻度で提供されるデータの場合は、Standard Storage クラスを使用します。アクセス頻度が低く、やや可用性が低くてもよいデータには、Nearline Storage クラス、Coldline Storage クラス、Archive Storage クラスを使用します。ストレージ クラスを選択する際の費用に関する考慮事項については、Cloud Storage の料金をご覧ください。

Cloud Storage についてストレージの場所とデータ保護に関するニーズを評価する

リージョンに配置された Cloud Storage バケットの場合、バケット内に含まれるデータはリージョン内のゾーン間で自動的に複製されます。ゾーン間でのデータ レプリケーションは、リージョン内でゾーン障害が発生した場合にデータを保護します。

Cloud Storage にはリージョン間で冗長なロケーションも用意されています。つまり、データは地理的に離れた複数のデータセンターに複製されます。詳細については、バケットのロケーションをご覧ください。

Cloud CDN を使用して静的オブジェクトの配信を向上させる

オブジェクトの取得コストを最適化し、アクセス レイテンシを最小にするには、Cloud CDN を使用します。Cloud CDN は、Cloud Load Balancing の外部アプリケーション ロードバランサを使用して、ルーティングとヘルスチェックを行い、エニーキャスト IP アドレスをサポートします。詳細については、クラウド バケットを使用して Cloud CDN を設定するをご覧ください。

ストレージ アクセス パターンとワークロード タイプ

このセクションでは、システムをサポートするストレージ アクセス パターンとワークロード タイプを選択する際のベスト プラクティスについて説明します。

Persistent Disk を使用して高性能ストレージへのアクセスをサポートする

データ アクセスパターンは、システム パフォーマンスをどのようにデザインするかによって変わります。Cloud Storage はスケーラブルなストレージを提供しますが、大量のデータに高いスループットでアクセスする必要のある重い計算ワークロードを実行する場合は、理想的な選択ではありません。高性能ストレージ アクセスには、Persistent Disk を使用します。

リトライ ロジックの実装時に指数バックオフを使用する

5XX、408、429 エラーを処理するために、リトライ ロジックの実装時に指数バックオフを使用します。各 Cloud Storage バケットには、初期 I/O キャパシティが設定されています。詳細については、リクエスト レートとアクセス配信のガイドラインをご覧ください。リトライ要求の段階的な立ち上げを計画する。

ストレージ管理

このセクションでは、システムをサポートするためのストレージ管理のベスト プラクティスについて説明します。

すべてのバケットに固有の名前を設定する

すべてのバケット名を Cloud Storage 名前空間内で一意にします。バケット名には機密情報を含めないでください。推測しにくいバケット名とオブジェクト名を選択してください。詳細については、バケットの命名ガイドラインオブジェクトの命名ガイドラインをご覧ください。

Cloud Storage バケットを非公開の状態に保持する

ビジネス上の理由がない限り、Cloud Storage バケットに匿名アクセスまたは一般アクセスができないようにしてください。詳細については、アクセス制御の概要をご覧ください。

ランダムなオブジェクト名を割り当てて、負荷を均等に分散する

ランダムなオブジェクト名を割り当てて、パフォーマンスを改善し、ホットスポットを回避します。可能であれば、オブジェクトの接頭辞をランダムにします。詳細については、命名規則を使って負荷をキーの範囲に均等に分散するをご覧ください。

公開アクセス防止を使用する

組織、フォルダ、プロジェクト、バケットレベルのアクセスを防止するには、公開アクセスの防止を使用します。詳しくは、公開アクセスの防止の使用をご覧ください。

次のステップ

Google Cloud データベース サービスと、次のようなベスト プラクティスについて確認します。

アーキテクチャ フレームワークの他のカテゴリ(信頼性、オペレーショナル エクセレンス、セキュリティ、プライバシー、コンプライアンスなど)を確認します。