【要約】半導体ダッシュボードを1時間おきに自動デプロイするCIを組んだら、2日分のデータを4回巻き戻していたのは自分だった [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、自動更新CIの運用中に、手動デプロイとの競合や環境差異による問題に直面した。
- ・CIが更新した最新データを、ローカルの古い状態で上書きする「デプロイの逆走」が発生した。
- ・
requirements.txtの記載漏れにより、CI環境でlxmlが不足し、データが空になる事象が起きた。 - ・サイト全体のQAが、無関係なページの不備によって自動デプロイを停止させた。
// Approach
開発者は、発生した問題に対し、運用フローの変更、環境定義の厳格化、および検証範囲の最適化を行った。
- ・デプロイ前に
git fetchを行い、差分を確認する習慣を導入した。 - ・
requirements.txtを「実行環境の宣言」として厳格に管理した。 - ・QAの対象を、変更した特定のページのみに限定するスコープの絞り込みを実施した。
// Result
開発者は、一連の対策を通じて、自動デプロイの信頼性と運用コストのバランスを改善した。
- ・Gitの競合による、最大2日分のデータ巻き戻しリスクを排除した。
- ・CI環境におけるライブラリ不足による、サイレントなデータ欠落を防止した。
- ・無関係なエラーによる、自動デプロイの不要な停止を抑制した。
Senior Engineer Insight
> 「ローカルで動く」はCIでの動作を保証しない。これは環境の不一致による典型的な失敗である。また、自動化と手動操作が混在する環境では、状態の競合を設計段階で考慮すべきだ。CIが書き換えるリソースに対し、人間が古い状態で上書きするリスクは、分散システムにおける整合性の問題そのものである。