作業時にバックアップを行う意味って?
仕事柄、新規システムへの入れ替えに伴ってお客さんの環境で作業を行う機会がちょくちょくあります。
そんな我々の作業の命綱とも言えるのが作業時のバックアップなのですが、 システムを利用するお客さん目線でのバックアップとは少し違う捉え方となります。
若手の作業の補助というか教育をしていて、意味を勘違いしていたようなので改めてここにもメモしておきます。
作業時バックアップの目的
作業前や作業中の「ある時点の状態と同等の環境として利用可能な状態」にいつでも戻せるようにするためのデータやファイル一式をどこかに保全すること。
短期的にはVMやストレージのスナップショットもギリギリ許容。 いざとなったらほかのマシンに持っていっても短時間で再構築できるレベルだと最高です。
最初の方でも書きましたが、何かトラブルが発生した際に、元の状態と同じ環境に見えるものに戻すための命綱を作るのが目的です。
命綱があるからと言って万一の場合に全く無傷というのは稀ですが、少なくとも致命傷は避けられます。生還してこそ次があると心得るのがプロというものではないでしょうか。
誰のためのバックアップか
命綱ですから、当然ながら作業者である自分を守るためのものです。 決して会社やお客さんのためじゃありません。これが通常のバックアップとの違いです。
実際はめぐりめぐって会社やお客さんを助けることになりますが、 「作業時にバックアップなんて要らん」とお客さんの明確な言質が取れない限り、 何があろうとバックアップはしてください。
趣旨をきちんと説明すれば、まともなお客さんなら要らんなんて言わないはず。というより、バックアップ作業の入っていない作業計画なんぞを出してくる業者なんて、私なら使いません。
とはいうものの、コマンドレベルできっちり出してくるような無駄なのも付き合うのがめんどくさいのでパスですけど。
必須のバックアップ
必須なのは作業開始前のバックアップ。
バックアップ作業自体で環境が壊れるとかそういった特殊な状況を除くと、 どんなに緊急時であろうが取れる時は必ず取リましょう。
作業中に、意図せずデータを汚染したり削除しちゃった時でも、涼しい顔をして最初に戻ってやり直すためにはこれがなければ話になりません。
必須ではないがあると精神的に楽になるバックアップ
作業がある程度進んだ段階での中間バックアップ。
ある程度作業が進んできたらバックアップをしておきましょう。 いつでもその時点に切り戻せるというのは精神的に非常に楽になります。
お客さんの環境での作業は一分一秒が貴重(お互いにタクシーのメーターが回っている状態)なのはもちろん、 妙なプレッシャーがかかるので、心の拠り所として適宜保全しておくと安心です。
数時間かかるような作業をやり直すのは、めんどくさいし慣れてミスが発生することもありますので、 バックアップのコストと天秤にかけて、負担にならない程度にとっておきましょう。
必須ではないがあるとお客さんの評価が上がる可能性のあるバックアップ
引き渡し前バックアップ。
お客さんに引き渡す直前の状態を保全しておきます。 こちらの命綱ではありませんが、引き渡し後にお客さんが何かやらかしても、こちらが再び同じ更新作業をせずに済むという保険です。 お客さんに恩を売る絶好のチャンスとなります。
大切なのは、「別にあんたのために保全したんじゃないからね。」という態度をとっておくことです。
ツンデレなのではなく、単にそれをあてにされると面倒だから。お客さんが必要とするなら別途料金もらってやりましょう。
バックアップ手順の信頼性のチェック
バックアップを行うことはもちろん大切なのですが、自前の環境で必ず予行演習をして、そのバックアップ方法が信頼できるものであることをチェックすること。
同等の環境に戻らないのであればバックアップする意味なんて全くありません。
また、一番信用できないのが自分を含めて人間の操作なので、可能な限りオンラインでコマンドを組み立てたり、GUIで操作するなんてことはせず、事前にスクリプトを用意して持ち込みましょう。
単なるテキストファイルからコピペするだけでも手入力に比べればはるかにましです。 人間の記憶と集中力ほど安定していないものはないと肝に命じておきましょう。
普段自分の環境の構築とかをやっていれば、誰に教えられずともこの程度のことは自然に 身につくと思っていたのですが、案外そうでもないもんなんですね。
失敗しても笑って済ませられる環境でいくつも地雷を踏んで生き残る術を身に付けると忘れにくいとは思うのですが、会社が吹っ飛ぶような状況が発生しないよう、最悪の事態を避けるスキルだけはちゃんと伝授しといたほうがいいんでしょうね・・・