Open1

【第3話】本番リリースで3回連続失敗した詳細 (draft)

kamadomakamadoma

前話で17億ファイル・170TBのデータ移行は完了した。
あとはDNSを切り替えるだけ……のはずだった。

結果:本番リリースで3回連続失敗
4回目の緊急メンテでようやく成功させた。

この記事は以下のシリーズの一部です
シリーズ一覧を見る


失敗1回目(2020年5月)—— HTTP/2でレガシーシステムが表示不能に

項目 内容
原因 UATはApache(HTTP/1.1)で検証 → 本番Nginx(HTTP/2)
現象 レガシー管理画面が画像をストリームとして解釈できず全画像真っ白
対応 切り替え30分後にDNS戻し → 謝罪連打

失敗2回目(2020年7月)—— F5連打でDB即タヒ

項目 内容
原因 シャーディング廃止 → 画像使用量をリアルタイム集計に変更
トリガー ブログサービストップに使用量表示 → 誰かがF5連打
現象 1秒で数千QPS → DBコネクション枯渇 → 全サービス503
対応 またDNS戻し → 使用量表示を夜間バッチ更新に変更(3回目で採用)

失敗3回目(2020年8月)—— CDNキャッシュゼロでAKS爆発

項目 内容
原因 DNS切り替え直後 → CDNキャッシュゼロ → 全リクエスト直撃
現象 AKS PodがCPU100% → 503連発
対応 手動でレプリカ10→50にスケールアップ → キャッシュ貯まるまで40分耐久

3回失敗して学んだこと

回数 教訓
1 本番と同じプロトコルでUATしないとタヒぬ
2 リアルタイム集計は悪 → バッチに逃げる
3 CDNキャッシュゼロの負荷を甘く見るとタヒぬ

次回、第4話:「緊急メンテ40分間の戦いとDNS切り替え成功」


170TB・17億ファイルの画像移行で3回失敗した2020年の全記録
第3話 完