無停止DB移行の人的ミスと工数を削減
Googleが実践 DB無停止移行で数カ月の手作業を完全自動化した手法
基幹DB刷新に伴う手作業の二重書き込み実装は、数カ月の工数と人的ミスを招く。Googleはいかにして無停止移行を自動化し、データ整合性を担保したのか。開発を停滞させない実践知を解き明かす。
「基幹データベースの刷新を進めたいが、本番サービスを止めるわけにはいかない」「二重書き込みのコード改修に工数を奪われ、本来の開発が完全に止まっている」。レガシー刷新を担う情シスが直面するこの板挟みに、Googleのファイナンスエンジニアリングチームが実践した自動化の手法が注目を集めている。
ステージング環境での検証段階ではあるが、同社はいかにして30以上のデータアクセスオブジェクト(DAO)をミスなく書き換え、レガシーDBからSpannerへの無停止移行を成し遂げたのか。本記事では、チャット型AIの限界を超え夜間バッチで安全にコードを改修する仕組みと、社内システム刷新に応用できる3原則を解説する。大規模なDB移行を控える情シスは参考にしてほしい。
手作業なら数カ月、30超のDAO改修という壁
米Googleのファイナンスエンジニアリングチームは、レガシーデータ層を同社が開発した分散データベース「Spanner」へ移行するにあたり、Antigravity CLIのヘッドレスモードを活用した自動リファクタリングパイプラインを構築した。同チームのアプリケーションエンジニアであるサチン・マタパティ氏が、Google Cloud公式ブログでその詳細を明らかにした。
財務の正確性が求められる高スループットの本番環境では、単純な切り替えスクリプトによるデータベース移行は困難を極める。過去データの移行と検証が完了するまで、既存のデータストアとSpannerの双方が同一の書き込みを同時に受け付ける「二重書き込み(デュアルライト)」が必要となる。
同チームが設計した移行プロセスは以下の3段階からなる。
- 過去データのバックフィル:参照整合性を保ちながら既存レコードをSpannerへ複製
- 二重書き込みと二重読み込みの実装:移行期間中、全DAOを修正して既存ストアとSpannerへ並行して変更を書き込む
- 自動API検証とパリティ確認:RPCトラフィックを傍受し、両ストアへの書き込みがバイト単位で完全に一致しているかをエンドツーエンドで検証
しかし、この移行を30以上のDAOで適用するには大きな課題があった。各DAOに、複雑なドメインモデルをSpannerのスキーマ列へマッピングする専用クラス「MutationConverter」の作成、二重書き込みの分岐処理やロールバックエラー通知ロジックの実装、テスト用の疑似時刻(FakeTimeSource)を用いた単体テストの整備が必要となるためだ。これらを手作業で行った場合、数カ月ものエンジニア工数が費やされる計算だった。
スキーマ変換のインタフェースを分離
自動化パイプラインで高品質なコードを安定して生成するため、同チームはまずDAOのリファクタリングパターンを標準化した。
DAOのビジネスロジック内にSpannerのテーブル名やカラムの割り当てを直接記述するのではなく、Spannerのスキーマ変換を独立したコンバーター単位に分離した。DAOとSpanner SDKの間に厳密なインタフェース(MutationConverter)を定義することで、AIコーディングエージェントが推論し、確実に出力できる仕様を整えた。
チャット型を廃し、夜間バッチとテスト連動で自動修復
同チームが採用したのは、統合開発環境(IDE)上のチャット型AIではなく、コマンドラインからバックグラウンドで実行できるAntigravity CLIのヘッドレスモード(-p)だった。
対話型インタフェースは実験的なコーディングには適しているものの、コードベース全体にわたる体系的かつ反復的な複数ファイルの変更には向かない。そこで、スクリプト「migration_ui.py」を用いてヘッドレスモードを制御するオーケストレーションを構築した。このアプローチには以下の3つの特徴がある。
- プロンプトのバージョン管理:タイムスタンプのシリアライズやNULL許容値の変換、FakeTimeSourceを用いたテスト注入など、Spanner特有のエッジケースに対応するルールをプロンプトテンプレートとしてコード管理した
- バッチ実行と自動自己修正:スクリプトが対象のDAOを取得してAntigravityに入力し、コンバーター、二重書き込みDAO、単体テストを自動生成する。生成後にビルドテスト(blaze test)を即座に実行し、リンターエラーやテスト失敗が発生した場合は、そのエラーログをAntigravityにフィードバックして自律修正させた
- 夜間の無人実行:退勤時にエンジニアが10個のDAOをキューに登録すれば、翌朝にはテスト検証済みのクリーンなチェンジリストが完成し、人間のレビューを待つだけの状態になった
他社のデータベース移行にも通じる3つの知見
この自動化パイプラインにより、手作業での実装とテストに要していた工数は大幅に削減された。また、全DAOが同一の検証済みパターンに従って生成されるため、ステージング環境のデータ整合性も厳格に維持されたという。エンジニアは定型的なボイラープレートの作成から解放され、データモデリングや性能の最適化に注力できるようになった。
マタパティ氏は、データベース移行を計画するエンジニアに向けて以下の3つの知見を挙げている。
- スキーマ変換を事前に分離する:新しいデータベースSDKの要件をビジネスロジックから切り離した厳密なインタフェースを定義する。AIエージェントは境界が明確な設計パターンで真価を発揮する
- 対話型チャットからヘッドレス自動化へ移行する:3~4ファイルを超える反復的なリファクタリングでは、スクリプトによるヘッドレスワークフローに投資する。プロンプトとテスト検証を自動ビルド工程として扱うことで品質の均一化が図れる
- ビルドシステムを安全柵として機能させる:AIの生成ループをビルドテスト環境(bazel testやgo test)に直接接続する。人間がコードレビューを行う前に、モデル自身にコンパイルエラーやアサーションエラーを解決させる
Copyright © ITmedia, Inc. All Rights Reserved.
TechTarget ニュースプラス
国内のIT業界ニュースを迅速に報道します。企業動向から導入事例、市場トレンドまで幅広く取り上げ、実務に直結する情報をタイムリーに提供する連載です。
関連記事
新着ホワイトペーパー PR
-
製品資料
SNS認証や多要素認証も数分で実装、IDaaS基盤でデジタルビジネスはどう変わる? -
製品レビュー
「電子帳簿保存法対応」実践術:タイムスタンプ付与などの要件の手軽な実現方法 -
事例
「大企業のデジタル化」成功事例集【コクヨ、九州電力、ヨネックスなど21社】 -
製品資料
“顧客管理の課題”を簡単に解決する方法とは? -
製品資料
契約管理の“あるある課題”をノーコード開発で解決するためのポイント
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
2
Oracle巨大ITプロジェクトはなぜつまずいたのか 8年で導入1割、追加で170億ドル
-
3
Microsoft製品でここまで自動化できる 情シスがやめられる手作業10選
-
4
Synologyがエンタープライズ向けユニファイドストレージを投入 その実力は
-
5
「技術屋」で終わらないために 情シスが今取るべき認定資格5選
-
6
自宅のWi-Fiが「遅い」「途切れる」本当の原因は? Dellが推奨する鉄則
-
7
脱VMwareの最適解 NTTデータと日立製作所が示す国産仮想化基盤
-
8
「Windows派」「Linux派」を分ける決定的な違い
-
9
継続利用は4割どまり M365 Copilotが「効く業務」と期待外れの境界
-
10
ISMSの“コンサル丸投げ”が招く数千万円の無駄 NTTドコモビジネスの脱出劇
ホワイトペーパーランキング PR
-
1
AIエージェントで多様な日常業務を効率化するための入門ガイド
-
2
AIが「わざわざ使うツール」になっていない? 業務で自然に使う導線にする秘訣
-
3
5回聞くだけじゃ足りない? トヨタ式「なぜなぜ分析」の正しい実践方法
-
4
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
5
「脱Excel」か「Excel快適化」か? 現場にやさしい業務改善の進め方
-
6
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
7
PostgreSQLの「機能」「性能」「運用」「拡張性」に関する悩みの解消法
-
8
5分で分かる「セキュア大容量ファイル転送サービス」の機能とメリット
-
9
Macの安全神話は崩壊? 最新の脅威動向から見えた攻撃のトレンドと有効な対策
-
10
情報セキュリティ対策早分かりガイド:25の自社診断で弱点と解決策を理解
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー