ストレージ永続化 + コールドバックアップ 実行計画
日付:
2026-04-04
担当: Backend / Platform
対象: ローカル永続化と Google Drive コールドバックアップ
1. 問題定義
- ローカルディスクは長期保持に不向き(容量制約)。
- 実行時は低遅延のローカル I/O が必要だが、運用上は遠隔復旧も必要。
- コールドバックアップ先として Google Drive を採用し、制限を明示的に制御する。
2. 運用原則
- Hot storage と cold storage を分離する。
- Google Drive を実行時ストレージとして mount しない。
- 小ファイルを直同期せず、必ずパッケージ化してから送る。
- オフサイト転送前に暗号化する。
- バックアップ/リストア作業は監査可能かつ状態遷移を決定論的にする。
3. 参照アーキテクチャ
- Hot plane:
- ローカル SQLite/Postgres
- Backup plane:
- snapshot builder(DB dump + 必須設定エクスポート)
- package(
tar.zst/tar.gz) - encryption + dedup(
restic) - remote sync(
rclone crypt-> Google Drive)
- Control plane:
- policy service
- scheduler + retention manager
- restore prepare/commit
- audit/event log
4. 非公開コントロール面
- ローカルサマリー参照
- ポリシー読取 / 更新
- バックアップ job 実行 / 一覧 / 詳細
- restore prepare / commit / cancel
正確な admin ルート名は非公開 operator docs にのみ残します。公開計画では能力グループと audit 要件だけを扱います。
5. MVP データモデル
storage_policiesbackup_jobsbackup_artifactsrestore_jobsstorage_audit_events
6. 既定ポリシー
- RPO:
24h - ローカル保持:
2~3世代 - リモート保持:
30日ローリング - 帯域制限: 既定で有効
- 日次アップロード予算ガード: 有効
- 同時バックアップジョブ: 単一ロック
6.1 実装進捗(2026-04-07)
- ストレージ冷備サービスで以下のポリシーガードを実装済み:
- リモート暗号化必須
- 日次アップロード予算
- 任意帯域制限
- 単一アクティブ backup ロック
- backup/restore ジョブは永続化され、決定論的な状態遷移で管理者 API から参照可能。
- template/profile-pack の submit 経路には冪等リプレイと競合拒否を導入し、バックアップ対象に入る前の重複ノイズを抑制。
7. Drive 制約への対応
- 日次アップロード上限ガード。
- rclone のチャンク/再開転送を利用。
- 平文 DB/PII のアップロード禁止(暗号化必須)。
- パッケージ化 + dedup で API 負荷を抑制。
8. SRE ガードレール
- Backup success-rate SLI。
- Restore-prepare validation success-rate SLI。
- ストレージ圧力ガード:
- 高水位で全量バックアップを停止
- 警告発報 + 重要データのみの縮退運転
- 定期 canary restore 演習。
9. リスクと制御
- リスク: 鍵管理不備で復旧不能
制御: 鍵管理 SOP + リストア演習ゲート。 - リスク: パッケージ時のローカル容量スパイク
制御: staging quota 検証 + 可能な箇所はストリーム処理。 - リスク: バックアップ成功でも復旧不能
制御: リリース前に restore-prepare 検証を必須化。