7月10日、Sergio De Simoneが「How Datadog Used Claude and Cursor for Test-Driven Production Migration」と題した記事を公開した。DatadogがClaudeとCursorを活用してメトリクスパイプラインのストレージバックエンドを本番環境で移行した実践的なプロセスを、うまくいかなかった点も含めてリアルに報告した内容であり、AIを活用した本番移行の事例として注目に値する。
45分かかっていた処理が約1秒に——移行の背景
Datadogのエンジニア Arnold Wakimが自社ブログで公開したのは、AIを使った本番システム移行の「成功談」だけでなく、うまくいかなかった点も含めたリアルな報告だ。
対象となったのは「Stream Router」という、メトリクスパイプラインのルーティングを管理するAPIだ。元々はキーバリュー(KV)モデルで設計された結果整合性システムだったが、ルーティングテーブルの拡大に伴い限界が露呈した。KVデータベースがトランザクションサイズの上限に達し、最も負荷の高い操作では数万件のエントリをプロセス内に引き込んでリレーショナルDB的な処理を行うため、処理に最大45分かかるケースが発生していた。
KVモデルでは、コードがこれらの関係を再構築しなければならなかった。数万件のエントリをPodプロセス内に引き込み、リレーショナルシステムが外部キーで保証するようなロジックをアプリケーション内で処理していた。
解決策は、ドメインエンティティ間の関係を正確に反映した新スキーマへの移行だった。ストレージバックエンドをFoundationDBからPostgreSQLへ切り替え、外部キーによって従来アプリ層で担っていたロジックをDB層に移す設計だ。KVストアはスケーラビリティに優れる一方で、エンティティ間の関係性の管理をアプリケーション側に委ねる構造になるため、今回のようにルーティングテーブルが複雑化した場面ではRDBMSの方が適合しやすい。この判断が移行の根拠となっている。
テスト駆動+AIでコードベース全体をリファクタリング
新スキーマが決まった後、チームはコードベース全体のリファクタリングにClaudeとCursorを投入した。ただし、AIに自律的にコードを生成させたわけではない。
メソッドごとに、旧実装・新スキーマ・失敗するテストをセットで提供した。モデルが最初のパスを生成し、テストがそれの正確さを判定した。
移行を成立させた要素として、Wakimは3点を挙げている。
- 強固なモジュール設計:Stream RouterはAPIインターフェースを変えずにバックエンドをFoundationDB→PostgreSQLに差し替えられた
- 網羅的なテストスイート:AIが生成したすべての変更に対して、明確なpass/fail基準が存在した
- 並行インフラ:新旧2つのStream Routerインスタンスが同一リクエストを並列処理し、フィーチャーフラグでクライアントを切り替えつつ、専用バリデーターサービスがレスポンスの差異を継続監視した
移行は3フェーズで進めた。まずClaudeに各関数の意図を説明させ、次にその文脈をもとに失敗しているテストを修正するプロンプトを組み立て、最後にブルーグリーンデプロイ(新旧2環境を並走させてトラフィックを段階的に切り替えるデプロイ手法)で本番環境に展開しながら新旧を継続比較した。
AIが苦手だったこと
Wakimは正直に限界も記述している。
高レベルなプロンプト(「このファイル全体を移行して」のような指示)の効果は限定的で、メソッド単位に分解した具体的なプロンプトが有効だった。より本質的な問題は、クエリの最適化をAIが自分では発見できなかった点だ。
バッチ処理・
UNNESTの活用・共通テーブル式(CTE)といったニッチな最適化には人間の判断が必要だった。AIが生成したクエリは正しい結果を返すが、不必要に多くのラウンドトリップを発行していた。最適化バージョンは我々が書き、モデルがそのパターンを「見た後」は後続のメソッドで再現できた。だが、そのパターンを自力で発見することはなかった——文献に存在するにもかかわらず。
またトークン消費量も課題となった。テスト出力の全ダンプをそのままAIに渡していたため、コンテキスト量が膨らみがちだったという。
移行の成果
移行後の数字は明確だ。
- 処理時間:最大45分 → 約1秒
- レイテンシ:数百ミリ秒 → 数ミリ秒
- データストレージ量:最大40分の1に削減
- データベースコスト:90%削減
- CPU・メモリ使用量も低下
Wakimはまとめとして、「Claudeを使った移行における最大の成功要因は、テストスイートの品質だった。それが、AIが生成したコードをどこまで信頼できるかを決定した」と述べている。AIにコードを任せる前に、テストで安全網を整備しておくことの重要性を改めて示した事例だ。
詳細はHow Datadog Used Claude and Cursor for Test-Driven Production Migrationを参照していただきたい。