初めに
この記事は本番環境などでやらかしちゃった人Advent Calendar 2023の13日目の記事です。
年末も近づくにつれていろいろ作業が多くなり、うっかりやらかさないように自戒の念を込めて書きます。
ちょっと前職のビジネスの話にも触れるのでかなり内容はぼかしています。
背景
外注で開発して社内で管理していたシステムがあり、それを先輩の退職がきっかけで引き継ぐことになりました。
このシステムにはレポート機能が存在し、そのレポートに出力される計測値でユーザの料金が変動するといったビジネス特性も持っています。
この値は料金にかかわるので、レポートだけは正確に必ず出さなければならないと引継ぎで教えられました。
コード管理はGitLabで行われていたのですが、本番への適用はサーバーに直接ファイルを手動で置かないといけないという感じで、CI/CDとかはありませんでした。
事の発端
システムを一部改修するとの話がビジネス側から持ち上がり、いつものように外注先に変更内容を伝えて開発してもらい、その変更をサーバーに適用しました。
一応コードのレビューや検証も実施し、システムのコードをアップデートしました。
アップデートされた部分も確認し、よし!という感じで作業を終えました。
レポートが出ない!
二週間後、営業から電話が飛んできました。
「レポートが出力されてないです!」
そんな馬鹿な。と思い確認をすると確かにレポートが出ていません。
毎日確認するようなシステムではないので発見が遅れました。
原因
原因は差し替えたファイルにありました。
ファイルを差し替える際に一応日付を入れてバックアップを取ってあったので差分を確認すると、外注先に依頼していた変更点以外にも変更点が。
先輩がコードに手を加えて、GitLabにアップしてなかったんですね…
しかも超重要なレポートの部分だけ。
確かにビジネスロジック部分だから外注はあれだったのかな…
無邪気にdiff取らないで適用した自分も悪いですが、さすがにこれは…となったのを覚えています。
その後
レポート自体はログ等から生成ができたので、何とかなりました。(かなり大変でしたが。)
何とか利用料の計算の日には間に合ったので安堵したのを覚えています。
反省点&今に活きていること
変更を手動で適用する際には必ずDiffを取ってからやる。
これは当たり前かもしれないですが、変更点がそこしかないかはちゃんと確認すべきでした。
GitLabから自動で本番デプロイが組まれていない時点で本番とGitでの乖離が発生している可能性が高いと今では感じています。
自動でデプロイが組める場合は絶対に組む
今回はあとから引き継いだのでしょうがないのですが、今は新しく何か開発をする際には絶対に自動でデプロイをするようにしています。
まとめ
この事件はコードの管理体制とかいろいろありますが、CI/CDがちゃんと組まれて自動でテストされ、自動でデプロイがされていれば起こらなかった事故だなと思っています。
今年の年末にもリリースがあり、一部手作業でやらなければならない作業が実はあったりするので、この事件を常に頭の片隅に置きながら、良い年明けを迎えたいなと思います。