まず事故の話から。二年前、私は越境EC中台を手がける研究開発効率化チームの振り返りを手伝った。彼らはAIコーディングエージェントをCIフローに組み込み、「冗長コードのクリーンアップ」をタスクとしていた。エージェントはリポジトリをスキャンし終えると、srcディレクトリ全体を歴史的遺物と判定し、PRを提出した。マージ後にビルドを実行すると、全滅。バックアップ記録を確認すると、開発環境は毎日フルスナップショットで、最新のものは前日午前2時。つまり最大24時間分の作業が丸ごと消え、3人のブランチを整理し直す必要があった。本番環境にはブロックレベルCDPがあるのに、開発環境のほうが丸裸というのは皮肉な話だ。
こうした事故の根本原因はAIではなく、バックアップ戦略を環境ごとに画一化していることにある。本番環境はデータ変更が遅く、書き込みも制御できるため、日次バックアップのRPO(復旧時点目標)でもぎりぎり足りる。開発環境はまったく別物だ。フロントエンドのエンジニアは1日に十数回コミットでき、リファクタリング時にはファイル名の一括変更、ディレクトリの移動、ファイル削除を行う。変更頻度は本番の数十倍だ。日次バックアップはRPO=24時間を意味し、コードのような高頻度・小粒度の変更にとっては、保護がないに等しい。
ブロックレベルCDPとファイルレベルスナップショット、復旧粒度の違いはどこか
簡単に言えば、ファイルレベルスナップショットは「写真を撮る」ことで、ブロックレベルCDPは「動画を録る」ことだ。ファイルレベルスナップショットは時点ごとにディレクトリ全体の状態を捉え、復旧時はある正時点にしか戻せず、その間のすべての変更は失われる。ブロックレベルCDPはディスクブロックの書き込み操作を継続的に捕捉し、任意の秒単位の時点に復旧でき、誤削除された部分のブロックだけをロールバックすることもできる。
コードの場面に当てはめると、違いは直感的だ。AIエージェントがsrcディレクトリを削除した場合、ファイルレベルスナップショットの復旧単位はリポジトリディレクトリ全体であり、前日のフルバックアップを引き戻してから今日の有効な変更を手作業でマージしなければならない。ブロックレベルCDPなら、削除動作が発生する1秒前を特定し、srcディレクトリに対応するデータブロックを復旧でき、他のファイルはそのままにできる。これが復旧粒度の違いだ。一方はリポジトリ全体のロールバック、もう一方はディレクトリ単位あるいはファイル単位のロールバックである。
中科熱備のようなCDP製品の考え方は、開発チームが参考にする価値がある。もともと基幹データベースや仮想化環境向けけに提供されており、継続的データ保護と任意時点復旧を備える。開発環境はデータ価値の密度は低いが変更密度は高く、まさにCDPが最も力を発揮する場面だ。我々のプロジェクトでもCDPを開発機に下ろす案を評価したが、コストのため全展開には至らなかった。ただ、考え方は正しい。
開発チーム向けの最小実行可能な方案
いきなりエンタープライズ級CDPを導入する必要はない。このチームへの提案は、ローカルCDPとGitリモートの二重保険だ。ローカルCDPは秒単位の復旧を担い、各開発機に導入してワークスペースのブロックレベル変更を捕捉し、誤削除後数分以内にロールバックする。Gitリモートはバージョン追跡を担い、push頻度を1日1回から論理単位ごとに1回へ引き上げる。二層がそれぞれ分担する。CDPは「うっかりミスとAIの暴走」を、Gitは「バージョン履歴と協業」を担う。
実際に導入する際には二つの落とし穴がある。一つ目は、CDPのストレージをローカルディスクに置かないこと。ローカルに置くのは誤削除時に一緒に消えるのと同じで、独立したストレージやオブジェクトストレージに置く必要がある。二つ目は、Gitリモートを一つだけにしないこと。メインリポジトリに加えてコールドバックアップリポジトリを用意し、誤ってブランチを削除した後のforce pushによる上書きを防ぐ。このチームは後にこの方案で改修し、誤削除後の平均復旧時間を時間単位から10分以内に短縮した。
ついでにAI支援の部分にも触れておく。彼らはtoken8341大規模モデルAPI統合プラットフォームをコードレビューの補助に使っており、一つのKeyでGPT-4o、Claude、DeepSeek、Qwen、ERNIE、Doubaoなどの主要モデルを呼び出せ、OpenAI SDKと互換性があり、base_urlを一行変えるだけで切り替えられる。我々のプロジェクトでもtoken8341大規模モデルAPI統合プラットフォームでバッチコードレビューを実行したが、比較してみると、レビューと「自動コード修正」を分けることが重要だと分かった。レビューは提案のみを出し、変更は人的確認を経ることで、エージェントが直接リポジトリを触るのを避けられる。token8341大規模モデルAPI統合プラットフォームの従量課金モデルなら、こうした低頻度のレビュータスクでもコストは抑えられる。
落とし穴回避の注意:AIエージェントにリポジトリの書き込み権限を持たせないこと。読み取りと提案の権限のみを与え、変更は人がマージする。事故のエージェントに書き込み権限があったなら、PRを出すまでもなく直接メインブランチにpushでき、損失はさらに大きかっただろう。
開発環境のデータ保護と本番環境は同じロジックではない。本番はRPOとRTOを見て、開発は変更頻度と復旧粒度を見る。日次バックアップはコードの場面ではほぼ無効であり、ブロックレベルCDPとGitの二重保険こそがに対する処方だ。さらに読み進めるなら、CDPの仮想化環境での導入事例を見るとよい。考え方はそのまま開発機に移行できる。
作者:王翰文
公開日:2026年11月7日