Operations
監視 → 検知 → 自動復旧。人手を介さない運用設計。
SLA目標と達成手段
99.9%
システム稼働率
Cloudflare 100+ エッジ
200ms
API応答(P95)
Edge Computing
99.99%
アップロード成功率
リトライ + 分割
1h
MTTR(障害復旧)
自動復旧 + アラート
監視スタック
| 種類 | ツール | 監視対象 |
|---|---|---|
| エラートラッキング | Sentry | 例外、未処理エラー、スタックトレース |
| パフォーマンス | Sentry Performance | API応答時間、トランザクション |
| アクセス解析 | Cloudflare Analytics | リクエスト数、帯域、エッジキャッシュ率 |
| アップタイム | BetterStack (UptimeRobot) | エンドポイント死活監視 |
| ログ | Cloudflare Logpush → R2 | 全HTTPリクエストログ |
アラートフロー
異常検知 → Slack通知 → 自動復旧試行 → 失敗時PagerDuty
Slack通知
即座にチャンネルへ通知
- エラー率閾値超過
- API応答時間劣化
- アップロード失敗率上昇
自動復旧
人手を介さず復旧
- Workers自動再デプロイ
- キャッシュパージ
- コネクションリセット
エスカレーション
自動復旧失敗時
- PagerDuty電話通知
- インシデント記録
- ポストモーテム作成
自動復旧シナリオ
| 障害パターン | 検知方法 | 自動対応 | 復旧時間 |
|---|---|---|---|
| Workers障害 | ヘルスチェック失敗 | 前バージョン自動ロールバック | < 1分 |
| エッジキャッシュ汚染 | エラー率急上昇 | キャッシュパージ | < 30秒 |
| R2アクセス障害 | アップロード失敗率 | リトライ + フォールバック | 自動継続 |
| Firestore接続障害 | タイムアウト増加 | コネクションプールリセット | < 10秒 |
| DDoS攻撃 | リクエスト急増 | Cloudflare自動緩和 | 即時 |
CI/CDパイプライン
git push main
↓
GitHub Actions
├── Type Check (tsc)
├── Lint (ESLint)
├── Test (Vitest)
└── Build
↓
Wrangler Deploy (Preview)
↓
E2E Test (Playwright)
↓
Production Deploy (on success)デプロイ戦略
Gradual Rollout(段階的展開)
Preview環境での事前確認
1クリックロールバック
ゼロダウンタイムデプロイ
デプロイ時間
CI実行時間〜 3分
デプロイ時間〜 30秒
グローバル伝播〜 5秒
バックアップ・DR
| データ種別 | バックアップ | 保持期間 | RPO |
|---|---|---|---|
| Firestore(PII) | 日次自動バックアップ | 30日 | 24時間 |
| D1(業務データ) | 日次エクスポート | 30日 | 24時間 |
| R2(画像) | オブジェクト複製 | 無期限 | 0(同期) |
| ログ | Logpush → R2 | 90日 | リアルタイム |
運用ダッシュボード
リアルタイム可視化
Cloudflare
トラフィック・キャッシュ・WAF
Sentry
エラー・パフォーマンス
Firebase Console
認証・Firestore
Slack
アラート集約