【Firestore】バックアップファイルのエクスポート用のバケットを作成する方法|Google Cloud Storage(Standard,Nearline,Coldline,Archiveの違いやペナルティ、Region選択の重要性)

firebase-prograshi(プロぐらし)-kv Firebase
記事内に広告が含まれていることがあります。

Firestoreのデータ保護や万が一の障害に備えて、定期的なバックアップ(エクスポート)体制を整えることは非常に重要です。

しかし、いざバックアップ先となるGoogle Cloud Storage(GCS)のバケットを作成しようとすると、「ストレージクラスはどれがいい?」「ロケーションはどう選ぶべき?」と迷ってしまう方も多いのではないでしょうか。

誤った設定のままバケットを作成してしまうと、思わぬデータ転送コスト(違約金やペナルティ)が発生したり、復旧スピードが遅くなったりするリスクがあります。

本記事では、GCSの4つのストレージクラス(Standard、Nearline、Coldline、Archive)の違いや、コスト・速度に直結する「Region選択」の重要性を分かりやすく解説しています。


gcfのバケットには触らない

Cloud Functionsを使っている場合、Gooble Cloudにはデフォルトで以下の2つのバケットが生成されています。

これら2つのバケットは、Cloud Functions(第2世代 / v2)をデプロイ・運用する際に、Google Cloudが自動的に作成して管理しているシステム用のバケットです。

名前に含まれている gcf は「Google Cloud Functions」の略で、souurcesの後の数値は使っているGoogle Cloudプロジェクトの「プロジェクト番号(Project Number)」になります。

具体的にそれぞれが何をしているバケットなのかを解説します。


① gcf-v2-sources-...

Cloud Functionsのソースコードの本体(ZIPファイルなど)です。

関数をデプロイ(firebase deploy --only functions など)した際に、アップロードされたソースコードがここに保存されます。

Cloud Functionsのインスタンス(サーバー)が起動する際、このバケットからコードを読み込んで実行環境を構築します。

ここにあるファイルを削除してしまうと、関数の更新やスケールアップ(自動増設)ができなくなる可能性があります。


② gcf-v2-uploads-...-cloudfunctions.appspot.com

関数を新しくデプロイする際、ローカルからクラウドへコードを転送するための一時的な「置き場」として使われます。

デプロイが完了した後は基本的に空か、古いキャッシュが残るだけになります。

注意点

これらのバケットをFirestoreのバックアップ(エクスポート先)として使い回すのは絶対に避けてください。


長期保管用のバケット作成方法(Managed Buckup用)

「バケット> 作成」をクリックします。


バケット名の指定

バケット名を入力します。何の目的のバケットかわかるようにしておきます。



ロケーションタイプの指定(※Firestoreのリージョンと合わせる)

「ロケーションタイプ」を指定します。

Firestoreのデータベースのリージョンと合わせることで、「ネットワーク通信料金の節約」と「データ転送(エクスポート)の処理スピードの高速化」に対応することができます。

Point

Google Cloud(GCS)の仕組みとして、「同じリージョン内でのデータ移動は無料」というルールがあります。

  • 同じ場所に設定した場合(例:Firestore東京 ➔ GCS東京)
    FirestoreからGCSバケットへデータを書き出す際の通信料金(ネットワークアウトバウンド料金)は 0円(完全無料) です。
  • 違う場所に設定した場合(例:Firestore東京 ➔ GCS米国やアジア複数)
    リージョンをまたいでデータを移動させることになるため、データ転送量に応じたネットワーク料金(1GBあたり約10円〜15円程度)がエクスポートするたびに毎回発生してしまいます。

データ量が数GB〜数十GBと増えていくと、バックアップをとるたびに余計な通信費がチャリンチャリンと引かれてしまうため、場所を合わせるのが一番のコスト対策になります。

このため、まずはFirestoreのデータベースのリージョンを確認します。


リージョンは「asia-northeast1 (東京)」なので、バケットも合わせます。


データの保存方法を指定(StandardかNearlineを選択)

次に、「ストレージクラス(データの保存方法)」を選択します。

結論から言うと、今回のFirestoreのバックアップ目的であれば、選択肢の中にある「Standard(スタンダード)」または「Nearline(ニアライン)」のどちらかを選べば間違いありません。

それぞれの特徴と、どれを選ぶべきかの判断基準を分かりやすく解説します。


5つのストレージクラスの違い

GCS(Cloud Storage)は、「データの出し入れの頻度」に合わせて料金プラン(クラス)を変えられる仕組みになっています。

  • Standard(推奨候補①
    普通のプラン。データの保存料は少し高めですが、データの出し入れ(エクスポート・インポート)のときに追加の手数料が一切かからないのが特徴です。
  • Nearline(推奨候補②)
    「月1回未満」のアクセスを想定したバックアップ用プラン。Standardに比べて毎月の保存料金が約半額になります。ただし、30日以内にデータを読み出したり削除したりすると「早期削除・取り出し手数料」というペナルティ料金が発生します。
  • Coldline / Archive
    「数ヶ月〜1年に1回」しか見ないような超・長期保管用。保存料は激安ですが、いざデータをインポート(復元)しようとすると、高額なデータ取り出し手数料がかかります。今回の通常のバックアップ運用には向きません。
  • Rapid
    AIのトレーニングなど、超高速・超高頻度で読み書きする特殊なプランなので無視して大丈夫です。


「Autoclass」は選ぶべき?

「Autoclass」は、「データの利用頻度をGoogleが自動で感知して、勝手にStandardやNearlineに切り替えてくれる」という便利機能です。

一見良さそうですが、バックアップ専用のバケットのように「普段は全く触らず、障害時にだけデータを読み出す」と使い道が決まっている場合は、自動切り替えの管理費用(手数料)が余計にかかってしまうため、選ばなくて(オフのままで)大丈夫です。

「デフォルトのクラスを設定する」にチェックを入れて進めましょう。

Point

Nearlineは保管料が安い代わりに、30日以上保管しないと追加費用が発生するといったペナルティがあります(詳細は後述)。

Firestoreでスナップショットを記録しておき、有事のときにGCSにエクスポートし使う用途であれば「Standard」が向いています。


データ量が多いワークロード向けにストレージを最適化はオフにする

「階層的な名前空間を有効にする」や「Rapid Cacheを有効にする」は、AI(機械学習)や大規模なデータ分析を行うための特殊な高速化オプションです。

Firestoreのバックアップファイルを置いておく初期設定としては全く必要ない(むしろ有効にすると余計な維持費がかかる)ため、すべてチェックは外した(オフの)状態にします。


結局、どれを選べばいい?(選び方の基準)

迷ったら【Standard】が一番安全

「テストで何回もエクスポートやインポートを繰り返す」「バグが出たらすぐに中身を確認したい」という場合は、Standardが一番おすすめです。

データの出し入れが完全に自由で、いつ消してもペナルティ料金が発生しないため、開発中の試行錯誤で予期せぬ課金が発生するリスクがゼロになります。


コスト最安を目指すなら【Nearline】

「一度バックアップをとったら、基本的には何も起きない限り放置する(数ヶ月に1回見直す程度)」という運用であれば、Nearlineがベストです。

毎月の維持費がStandardの約半分になります。検証のためにエクスポートして、1ヶ月以上そのまま置いておくようなスケジュールバックアップの保管先に最適です。


公開アクセス(禁止にする)

「作成」をクリックして、公開アクセスの設定をします。

今回作成しているバケットは、Firestoreの重要な顧客データやシステムデータを退避させるバックアップ用の保管庫です。

ホームページの画像やブログのアイキャッチ画像のように、一般の人に見せるデータはありません。なので、アクセスは禁止にしておきます。



Nearlineのペナルティ

30日以内の「早期削除料金」(保管期間の縛り)

Nearlineには「最低でも30日間はデータを保存してくださいね」というルールがあります。

もしデータをバケットに保存してから30日未満で削除(または上書き)してしまった場合、残りの日数分の保存料金がペナルティとして請求されます

  • 例:10GBのエクスポートデータを保存し、5日後に不要になって削除した場合データは消えましたが、残りの25日分、あたかもデータを保存し続けたかのような料金(約10円〜15円程度)が「早期削除の日数分」としてきっちり請求されます。

⚠️ 注意:Firestoreのエクスポートは毎回「新規フォルダ」になる

Firestoreから手動やスケジュールでGCSにエクスポートすると、毎回新しく日付のついた別フォルダとしてデータが保存されます。古いバックアップを「数日おきにこまめに削除する」というスクリプトを組んでしまうと、この早期削除ペナルティが大量に発生してしまいます。


データの「取り出し料金」がかかる(データ読み取りの手数料)

Standardプランはデータの読み出し(インポートやダウンロード)が無料ですが、Nearlineはデータを読み出すたびに手数料が発生します。

  • 料金の目安: 1GBあたり 0.01ドル(約1.5円)
  • 例:10GBのデータをFirestoreにインポート(復元)したり、ローカルにダウンロードした場合約15円 / 回 の取り出し手数料が、通常の通信費とは別に加算されます。

障害復旧で「数ヶ月に1回、いざという時に読み出す」だけであれば数十円〜数百円なので大した出費にはなりませんが、テスト環境で「毎日インポートして動作確認する」といった使い方をすると、この手数料が積み重なっていきます。


タイトルとURLをコピーしました