はじめに
をパクってにインスパイアされ、過去の経験を元に記事を起こしたいと思います。
システムリリースは異常な精神状態下で行う作業である
私はシステムリリース作業を何度も経験しましたが、あの精神状態はあまり味わいたくないです。
複数人いると多少の心強さは感じますが、データセンターで一人での作業は心臓がはち切れそうでした。
どんなに周到に準備した手順書ですら、機能しない時もしばしば体験しました。
体験をもとに私が考えるシステムリリースのベストプラクティスを紹介します。
リリース手順書
システムコマンドは必ずコピペする
これは重要です。先にも述べた通り、異常な精神状態なので自分の指先すら信用してはならないのです。
私のターゲットはほとんどがLinuxでしたので、
テキストファイルにコマンドを記録しておき、順番に実行すれば作業が完了できるように手順書を用意してました。
現在ならマークダウンに記述するのも良いと思います。
正常系だけでなく異常系も記述する
しっかりリリース手順書をテストしていても、なぜだか上手くいかない場合がありました。
(お客さんが勝手にプロダクション環境をいじっている場合もありました。)
このような場合に備え、調査する時間も作業時間にできるだけ含めるようにしていました。
それに加え、リリースを断念する判断基準も明確にしておくのも重要です。
例えば、
「1時間調査しても原因が特定できない場合、リリースを断念する」
というように記述し、事前にお客さんと合意形成をしておく必要があります。
Batchは可能な限り分割する
これは設計に関わることですが、大きなBatchを1本用意するよりも、小分けにしておいた方が良いです。
Batch処理の終盤でランタイムエラーなどで処理が中断しても、途中の処理から再開でき、リカバリー時間が短縮できる為です。
データセンター内作業は要注意、書籍や文献等を十分用意する
最近データセンターには行っていませんので分かりませんが、私の時代は携帯の電波が届きませんでした。
(PHSは使えるところもありました)
リリース作業時に障害が発生すると、インターネットのリソースに頼りたくなりますが、データセンター内ではそうは行きませんでした。
Linuxであればコマンドのリファレンス等を準備しておりました。
それでも不十分
いくら周到に準備しても、やはりリリース作業中の障害は発生しますので、
普段から訓練しておくことを強くお勧めします。
おわりに
最近は大規模なシステムリリース作業に関わることは無くなりました。
今思い返しても、リリースできなかったことはないと記憶してます。
システムリリース作業に関わる方のご参考になればと思い、この記事を書きました。
以上