システム運用作業で気を付ける事 まとめ

## システム運用作業で気を付ける事

過去のシステム運用の経験で学んだことをこの記事にまとめてみました。
※この投稿は私の経験をもとに記載しています。
また、初めてシステム運用をする方は参考になれば嬉しいです。

**確認者は最後の砦という気持ちが大事です。**

また、以下のlinuxコマンドについても、必要なコマンドをまとめてみました。
参考にして頂けたら嬉しいです。
https://qiita.com/gama1234/items/9fc3bd77ba79279afe34

システム運用作業は、平凡で何も起きないことがなによりも一番だと思いました。

**もしかしたら間違えているかもしれないという前提で目の前のことを確認することが大事です**
**記憶よりも確認が大事です。**

システム運用は単純に思われがちですが、認識違いを防ぎながらのユーザーとのコミュニケーション力と
複数の作業依頼を期限内に終わらせるスケジュール管理が必要になっています。

運用作業は手順書通りにしても、日々サーバーの状態が変化するため、想定外のメッセージが出る事がよくあります。
そのため、日ごろから問題が起きた時に対処できるように手順書のコマンドの意味を理解したうえで作業した方が良いです。
個人的には、日々linuxの操作に慣れることも大事だと思っています。
特にlinuxのcronの設定等でviエディタは使用することがあるため、日ごろからlinuxを触る機会を作った方が良いと思います。


### 1.作業直前に作業手順書の変更はしない
直前の作業手順書の修正は、思わぬ事故に繋がる可能性があります。
作業手順書を変更するのは、運用作業日時より2日~3日前が望ましいです。

作業日の直前で作業手順書の変更が必要な場合は、出来るだけ変更を少なくするのが一番です。
変更した分だけ、ミスする可能性が高くなると思います。

### 2.記憶に頼らずに必ず確認すること

記憶違いは起きると思います。
記憶に頼らずに、必ず作業日時と作業内容を確認した方が良いです

作業途中に割り込みが発生した際は、最初から確認した方が良いです。
作業時に比べて記憶が薄れているためです。

また、文章の読み間違いも気を付けた方が良いです。
落ち着いて読み返した方が良いです。

### 3.運用作業前に、作業の流れの振り返りをすること
作業当日は作業手順書を作成または確認から時が立っていると思うため、
もしかしたら認識違いがあるかもしれないという気持ちで振り返りをしてください。

私の経験としては、運用作業開始の30分前に振り返りを実施する方が望ましいです。
※あまり直前だと気持ちに余裕がなく、焦ってしまい見落としが起きる可能性があります。

振り返りとは、作業時間と作業内容と作業手順の把握と作業中に気を付ける点など含めて、
運用作業の依頼資料を確認しながら、自分の中で一つづつ丁寧に認識合わせをすることです。

### 4.事前にログインの仕方と権限を確認する
当日ログイン方法が分からずに作業できない場合があります。
事前に確認した方が良いです。

権限回りも同様にです。作業前に事前に権限が付いているかを確認した方が良いです。

### 5.あいまいな部分は確認する
依頼などあいまいな表現で来る可能性があります。
その場合、この認識で合っているか確認する様にした方が良いです。

自分の担当業務の視点だけではなく、広い視点で考えて、認識違いが少ない用語を使った方が良いです。
※自分の所属するチームのみが使う用語は使わないようにする。

### 6.ログインしたらサーバーのIPアドレス又はホスト名を確認する
サーバーにログインしたら最初に私はサーバーのプライベートIPアドレスを確認しています。
AWS EC2であれば、インスタンスIDがユニークのため、IPアドレスと合わせて確認したら確実です。

離席した際や別作業でしばらくサーバー作業から離れた場合も、サーバー作業開始する際に
ホスト名とIPアドレスがあっていることを必ず確認したほうが良いです。

### 7.疑いながら作業をする
操作に慣れていると、手が勝手に動いて想定外のコマンドを打ったり、違うサーバーに入っても
気づかない場合があります。
そのため、常に「これであっているのか。」と目の前のことに疑いながら一呼吸おいて
作業した方がミスが少ないです。

2名体制であれば、確認者がミスに気付いてくれない場合があります。
**心がけとしては、私が最後のミスを防ぐことが出来るチェック者という気持ちで確認した方が良いです。**

障害対応で一人でサーバーに入る場合は、確認者がいないため、コマンドを実行する前に必ず2回確認してから実行しています。

また、同時並行で別サーバーで作業する場合は、ディスプレイが2つある場合は、別の画面に移動させています。間違いをなくすために、サーバ毎にターミナルの色を変える方法もあります。

### 8.いつもと何か違う場合、次に進まずに確認する
手順書に沿って作業した際に、いつもと違うメッセージが出たり、いつもと何か違うと思うようなことがあれば、次に進まずに必ず確認しています。

小さなことでも、何か違うなという違和感があれば、確認してから次に進んだ方が良いです。

### 9.手順書に記載がない作業はしない
作業中に手順書に記載がない作業はしない様にする。
例えば、この設定をいれたらもっと良くなると思い、設定を追加してみたら、
エラーで落ちたことがあります。

作業手順書に、作業を追加する際は、不確かなことは検証後、手順書に追加する流れが良いです。
作業中は、作業手順書通りに作業するのが一番良いです。想定外のことがあれば作業中断して、報告するのが良いです。

### 10. 実行結果もコマンド実行と同じぐらい落ち着いて確認する
運用作業は時間制限があるため、コマンドを打つのに精一杯になることがあるため、
コマンドを実行して、実行結果が正しいことを確認してから次の手順に進む様に心がけた方が良いです。

また、作業手順書のコマンドの実行結果は詳しく記載した方が、想定外の結果になった際に気づきやすくなります。
例えば、「〇〇プロセスが実行されていること」が実行結果であれば、〇〇プロセスが何個実行されているのが正解なのか具体的に記載する方が間違いが少なくなります。
### 11.作業前に早く作業完了出来る方法を考える
運用作業は時間制限があるため、作業に慣れてきたら、どうしたら間違いが少なく早く作業が完了するかの考えることが大事だと思いました。
運用保守でベテラン方は自然と効率が良い方法を考えて作業している方が多かったです。
並行して作業するのか、ログインも含めたコマンドの準備し、画面遷移が出来るだけ少なくする方法がないか日頃から早く作業する方法を考える習慣が出来たら時間短縮にも繋がります。

### 12.作業前の状態を把握する
作業前の状態と作業後の状態を画面のスクリーンショットとして残した方が良いです。
振り返った時に、何を変更したかが分かるためと、何かあれば、元に戻すこともあるため、作業前の記録は大事です。
例ですが、再起動したら際に、自動起動しないプロセスがある可能性があるため、
作業前にプロセスが何個実行されていたか把握するのも良いと思います。

### 13.挙動が不明な作業は検証する
初めてする作業で挙動が不明な作業は、作業手順書があっても念のため検証環境で動きを確かめてから
本番で作業した方が安全です。
※作業手順書が古い可能性もあるため、不慣れな作業は注意です。

納期が短く検証を省略して、本番で作業して問題が発生したら、ユーザに影響を与えるだけでなく、検証作業よりも工数がかかってしまいます。

何事も問題が起きた時の工数と影響も含めて、早く終わるかは考えた方が良いです。

設定ファイルも同様です。作業手順書に記載の設定値を、念のため検証環境に入れてみて
サービスの再起動が問題なく出来ることと、httpdサーバであれば、ブラウザ経由でhttpdにアクセスできるか確かめた方が良いです。

この操作をしたらこういう動きになるということが、イメージ出来た状態で作業するのが望ましいです。

### 14.出来るだけコマンドはコピー&ペーストする
普段、打っているコマンドを反射的に打ってしまうことがあるため、出来る限りコマンドは手入力せずに、作業手順書からコマンドをコピー&ペーストが良いと思いました。
また、コピー&ペーストは、想定外のコマンドがコピーされている場合があるため、一旦、メモ帳にコピーしたコマンドを張り付けて、確認した後、ターミナルに張り付る様にしています。
※最近学んだことは、EXCELのセルの値をコピーすると改行が含まれるため、ターミナルに張り付けるとコマンドが実行されてしまいます。
それが気になる場合は、EXCELでセルの中身をコピーするか、別のツールを使用することをお勧めします。

### 15.操作ログは出力する
問題が起きた時に備えて、必ず検証サーバーと本番サーバー両方とも操作ログを出力するようにしています。
SFTPのソフトでも同様です。

ミスが起きた際に何の操作をしたかを振り返ることが出来るために取得しています。

### 16.作業後、サーバーはログアウトする
作業後サーバーはログアウトする。また、本番環境で入ったすべての環境を閉じる様にしてます。
開いたままの場合は、検証環境と思っていたら本番環境で作業するのを防ぐためです。

### 17.翌営業日のスケジュールを把握する

その時は作業予定を把握していても、時が流れると記憶が薄れていて、翌日に早朝作業入っていたのに
対応し忘れることがあります。

翌営業日のカレンダーを確認する習慣をつけることで
運用作業の予定を忘れることを防ぐことが出来ると思います。

### 18.運用作業の30分前に別の作業は控える
運用作業の30分前ぐらいから別の作業をして集中してしまい、次時計を見たら運用作業開始時刻を
過ぎている場合があります。運用作業前は別の作業は控えて気持ちを運用作業に切り替えた方が良いと思いました。

### 19.依頼内容の確認は、十分時間を取り落ち着いて行う。
作業依頼の資料は忙しい場合でも、すべて目を通す。また、憶測でみてないかなど記載している内容を疑いながら確認する。
あいまいな部分など不確かなことは必ず確認する。
※依頼内容の確認は、十分時間を取り落ち着いて行う。
依頼内容の見落としは、作業手順書を作成しても戻りが発生してしまいます。

### 20.コマンドを実行前に現在どこのフォルダいるか確認する
コマンドを実行する前に必ず現在どこのフォルダにいるのか確認する習慣を付けた方が安全です。
例えば、mv *.tar.gzというコマンドを実行する場合、指定のフォルダへ移動したつもりが
移動してないことがあります。その場合は、別のフォルダで実行されてしまいます。

また、rmでファイルを削除する際は、指定のフォルダに移動後、rm *を実行するのではなく、
絶対パスで指定して 例 /home/test/*削除した方が安全です。
フォルダの場所を間違えると、想定外のフォルダが削除されてしまいます。

### 21.運用作業前に少しだけ休憩する
作業手順書が正確に記載していても、疲れている時や急いでいる時は、読み間違いが起きてしまいます。
そのため、運用作業前に5分でも休憩して気持ちに余裕を持つ様にした方が良いです。

「ゆっくり急ぐ」という言葉を聞いたことがありますが、その心がけは大事です。
急いで間違いをするぐらいなら1分遅れて正確に対応した方が良いです。

### 22.作業中はチェックリストを使用する
運用作業中はどこまで完了したか又は作業漏れを防ぐためにも、チェックリストを作成することが望ましいです。
作業毎に完了した直後に、EXCELであれば完了した作業のセルの色をすぐに変更して、一目で作業完了したというのが分かる状態にした方が良いです。
チェックリストは全体を網羅しているか事前にチェックが必要です。
作業手順書と一緒に事前に準備した方が望ましいです。

### 23.使い慣れていないコマンドは検証後使用する
障害対応などでコンテナの中を確認したいと思い、Googleでざっと検索しコマンドを調べて使用した場合は、例えば、docker attachコマンドを使用したとして、コンテナに接続し設定ファイルを確認後exitで抜けたらコンテナが停止したということが起きることがあります。
**普段使わないコマンドは検証環境で動作確認し、コマンドの動作を理解した上で使用することを強くお勧めます。**

### 24.長期連休明けの初日に運用作業は可能な限り入れない
長期連休明けは頭がなまっていることがよくあります。
また長い期間お休みだったため、お仕事について記憶が少なからずなくなっています。
個人的な経験ですが、一番避けたいのが連休明けの初日の午前中です。
理由としては、連休前の作業を思い出しているところで作業すると
普段対応している慣れた定型作業であれば良いですが、普段しない運用作業であれば控えた方が良いと思います。

### 25.運用作業の引継ぎは具体的にする
運用作業の引継ぎが具体的になっていない場合は、例えば作業手順書の作成をチームの方に巻き取ってもらった際に、初めての作業が今回含まれているため、引き継いだ人がその検証もしてくれるであろうと思っていましたが、手順書は作成したが検証は未実施であることを知り、作業当日になってパニックになったことがありました。

**誰かに手伝ってもらう場合は具体的に何の作業を巻き取ってもらうのか明確にする必要があります。**
**中途半端な業務の巻取りは対応漏れが起こり事故につながります。**

### まとめ
運用作業は2名体制で作業することが多いですが、作業者は、確認者から見られると早く操作しようとして、焦ってしまい実行結果を見落とす可能性があります。気持ちの焦りが事故の元です。「システムを安全に維持するため」という目的をもって、気持ちを切り替えることが大事だと思います。

また、新人に何か運用保守作業をお願いする時は、各ステップを一づつ進め方を教えた方が対応し忘れがなくて、
後々ミスになることはありません。普段何気なく対応している作業すべてを手順書に記載した方が安全です。

上記に記載したことを守ることと落ち着いて対応することで、ある程度はミスが防げると考えてます。

最後に運用作業を経験して大事なことは、
**目の前のログやメッセージは落ち着いて読むことと、2回確認した後、手を動かして操作する習慣が大事だと思いました。**

この記事を読んでいただき有難うございます。業務の参考になっていたら嬉しいです。