はじめに
本番環境でやらかしちゃった人 Advent Calendar 2019 が面白かったので書いてみた
なにが起きたか
EC2からECSに移行した際、ローカルに出力していたファイルが消滅した
一言で書くと初歩的すぎる。
対応
ファイル出力バッチ、定期実行するように機能を追加した。
時系列
- 前任者が主担当となるシステムを、プロトタイピング方式で開発し、EC2上に構築した。
→この際の運用作業で、手動でファイルをローカルに出力していた。 - 自分が着任。
- 前任者が部署移動のため引継ぎを行う。
→ 引継ぎ作業を予定していたところ、クリティカルな不具合が発覚し、修正を優先度をあげて対応した。結果、十分なヒアリング期間を設けることができなかった。 - 自分がEC2からECSに移行するプロジェクトを担当。
→ 別プロジェクトで成功経験より、引き継いだプロジェクトにも適用する。 - リリース後に問題がなかったため終了報告。一般ユーザの利用にも影響がなかった。
しかし、月次定期運用の管理機能でエラーがでるとの連絡があり、調査の結果判明。
何をすれば防げたか
ファイルの出力先の意識
やることは出力先をローカルからS3に変更するだけ。
コンテナの特性上、ローカルに出力したファイルが消えることは明白なので、早いタイミングで実装しておくべきだった。
調査をしっかり
類似構成で移行できたからといって、慢心しない。
システム単位でファイル出力の有無などを確認する。
アーキテクチャの特徴の把握
ECS + fargate 構成のため、EC2サーバ上の既存ファイル転送による復旧作業できなかった。
ECS + EC2構成なら被害が減ったかも。
運用作業の認識不足
ファイル再出力機能やバッチがなかった。
月次運用業務についてのヒアリングができていれば気が付けた可能性がある。
管理画面での月次運用のデグレテストができていれば防げた。
また、DDD的な取り組みができていれば防げたかも。
引継ぎしてほしい内容を分かりやすくつたえる。
「引継ぎしてください」というオープンクエスチョンだと、「ありません」という返答がかえっきてしまうことがある。経験が浅いと特に。
「運用手順や再実行手順など、自動化されていないような作業に焦点をあてて、引継ぎしてください」といっておくとわかりやすかったのかなとおもう。
まとめ
コンテナを使うときは、出力するファイルを別途設定しようね!
アーキテクチャや運用作業をちゃんと理解しようね!