Introduction
きっかけ
このご時世、円安によって、デジタル赤字は、思いの外大きなものです。
クラウド費用、少しでも削減したいですよね?
私も皆さんと全く同じです。
特に、本番環境以外の運用コストなんて、真っ先に削減したいものです。
そこで、今回は、本番環境からミラー環境へのデータ移行コストを劇的に下げられたという内容の記事です!!
(ミラー環境の解説は本文中にあります。単純に、検証用の環境と解釈してください)
結論
現在の職場では、本番環境のデータ分析基盤からミラー環境へのデータ移行に、dbtを用いております。
dbtとは?(AI解説)
dbt は「データウェアハウス内の変換処理」を標準化するためのツールです。
ポイント
・SQL の SELECT を中心にモデルを定義
・依存関係(DAG)が自動で可視化される
・テスト(unique、not null、関係整合チェック)が組み込める
・テーブル、ビュー、インクリメンタルを簡単に切り替え可能
・ドキュメントが自動生成される
しかしこのデータ移行にData Transfer Service(DTS)を用いることで、日次で約50ドル、年間だと50ドル * 365日で、18250ドルの削減です。最近は円安ですので、1ドルが155円と仮定して、283万円です。
つまり、1年間で、およそ300万円の削減となる見込みです。
↑社内で利用しているコストダッシュボードの抜粋
本日のお品書き
・データ移行の課題
・DTSの破壊力
対象者
・DTSってなんぞや?の人
・1を聞いて10を理解できるエンジニア
・データ移行のコストを削減したい方
・Macユーザーの人
・BigQueryを使っている方
非対象者
・BigQueryマスターの人
・説明下手な筆者を攻撃しようとするエンジニア
・データ移行のコストが最適化されている方
・Windowsユーザーの人
・AWSやSnowflakeを使っている方
自己紹介
Let's Start
今回は、GCPのBigQueryに関する話です。
適宜AIによる単語の解説や注釈を入れてあります。
データ移行の課題
長年データ分析基盤を使っていると、時代の変化の中で、もっと良い選択肢が生まれることもあると思います。
今回のケースはそういった新しい選択肢やベストプラクティスの活用の一つの事例だと思います。
元々サービス側が、データの検証に用いるため、ミラー環境というものをデータ分析基盤チームが準備していました。
ミラー環境とは?(AI解説)
ミラー環境では、本番のデータそのものではなく、本番とほぼ同じ形のデータを参照して作業を行います。
これにより、本番環境を壊すリスクを排除しつつ、実際のデータ構造に沿った検証が可能になります。特に dbt モデルの変更や新しい分析ロジックの検証などは、スキーマの整合性や結合の成立可否を確認するため、本番と同じ構造を持つ環境が不可欠です。ただしミラー環境では、本番と違って自由に負荷をかけることが許されているため、複雑な分析クエリや繰り返しの試行が行いやすくなります。
ミラー環境は、本番環境を守るための防護壁として機能するだけでなく、開発の生産性を高める役割も持っています。開発者や分析担当者は、本番を気にすることなく試行できるため、クエリの改善、モデルのリファクタリング、品質向上のための検証作業に集中できます。また、チーム内で同じデータ構造に基づいて議論や検証を進められるため、再現性のある開発プロセスを維持しやすくなります。
一方で、ミラー環境には設計上の注意点があります。本番と完全に同じものを維持しようとすると、データ量が増え続け、管理やコストの面で負荷が大きくなります。このため、ミラー環境は本番の全量を保持するのではなく、検証作業に必要な範囲に絞ることが一般的です。たとえば期間を限定したり、不必要なカラムを省いたり、必要最小限のデータだけを保持するという運用が行われます。これにより、本番と同等の構造を保ちながら、過剰なデータ保有による弊害を避けることができます。
このようにミラー環境は、本番保護、安全な開発、検証の効率化を同時に実現するための仕組みであり、データ分析基盤を運用する企業にとって欠かせない要素となっています。
またセキュリティやガバナンスの問題で、本番環境から直接全てをコピーして良いわけではなく、個人情報が含まれる場合には、匿名加工などダミーデータに置き換えたりなどの工夫も必要でした。
データが多く、十を超えるデータセットに、それぞれ数十個のテーブルやビューがあります。
全体的には、数百レベルです。
このデータ移行によって、安くない金額がかかっておりました。
是非とも削減したい!!
そんな中、何か良い方法はないかといくつか調べた結果1、DTSを用いると良さそう!ということがわかりました。
なんと、 データセットコピーは無料で行けるのです!
DTSとは?(AI解説)
BigQuery Data Transfer Service(DTS)は、外部サービスやストレージから BigQuery にデータを自動で取り込むためのフルマネージドサービスです。公式ドキュメント:
https://cloud.google.com/bigquery-transfer/docs
ポイント
・Google 広告、YouTube、Cloud Storage、S3 などからデータを定期転送できる
・自前でジョブ管理(Cloud Composer、Cloud Functions、Cloud Run)を作らなくてよい
・スケジュールと接続を設定するだけで動く
・人的コスト(運用)を大幅に削減できる
・ただし転送量分は課金されるため「何でも DTS」は危険
DTSの破壊力
DTSを使うと、費用削減ができそうということがわかったので、実際の実装です。
ここで、わかったのが、物理テーブルの移行は可能ですが、Viewは不可能でした。
そこで、Viewが全てテーブルから作られていることを調査し、移行先のテーブルからviewを生成するように方針変更。
これで、テーブルのみをDTSで移行すれば問題ありません。
DTSはデータセット単位なので、個人情報を含むテーブルがあるデータセットは、既存のdbtを用いてコピーし、個人情報を含まないデータセットは、DTSでコピーすることにしました。
移行対象のデータセットは数十個あり、データセットに紐づくテーブルもたくさんありました。これらのdbtが行っていた処理を全てDTSに移管したことで、大幅なコスト削減に成功しました。
チームで、日次のコストをダッシュボードでチェックしております。
こちらの11月13日あたりの、ガクッと下がっている部分がDTSへ移行したタイミングです。
ぜひ皆さんもDTSで、快適なGCPライフをお送りください!
To be Continued
再会のゆびきり
今後もQiitaやZennで、技術情報を発信しています。
noteには、備忘録を記録しています。
新着情報はX(旧: Twitter)で配信いたします。
フォローをお願いいたします。
Sempleの自由帳
Sempleのアイデア帳
Sempleのドキュメント
Sempleのツイッター
大変だったこと
GCPさっぱりわからないマン
実際に作業していた時は、入社して一月くらいで、新しい職場になれることと、新しいクラウド環境になれることで精一杯でした。
本文では、とても簡単に出来たような書き振りですが、実際は何度もチームの方々へわからないことがわからないを相談してました。
この記事を書いていた頃が、ちょうどDTSへの移行作業をしていた時期ですかね?
GCPとAWSの話
今まで、AWS一筋でエンジニア生活を送ってきましたが、バックエンドエンジニア?からデータエンジニア?へジョブチェンジしたことで、クラウド基盤もGCPへ変わりました。
GCPの良いところは、AWSと違って、タブで複数のプロジェクトを開くことができるところだと思います。
自分のような無限タブ製造機にとっては、AWSの「複数環境のタブを開いた瞬間、全てのタブが、一旦強制ログアウト」は、使い勝手が悪かったです。
参考記事
-
方法を調べたのは、自分ではなくチームの方々です。自分はDTSを使って、修正する部分を担当しました。入社して1ヶ月が経過したあたりで、このプロジェクトにアサインされました。GCPを使うのが初めてだったこともあり、入社当初は、BigQueryの使い方から上長に教えを請いました。当時は、クエリを叩く際に、横で見てもらいました。とても怖かったです。 ↩


