コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

「本番環境で断りなく作業する」 の何が危険なのか

暗黙の空気として「production環境で許可なく作業することは良しとされないこと」があるが、何故か?と問われるとさらりと説明ができないので言語化してみる

本番環境で作業をする、とは

今回記載をする「本番環境作業」とは ユーザーに機能を提供しているいわゆるProducitonサーバにSSHなどでログインする作業のことを前提とする。

本番環境で作業するような事項

  • 本番のデータベースなどにアクセスするのが本番アプリケーションが稼働しているサーバでしかないので、そのサーバから行う場合
  • 本番アプリケーションの特定の機能を手動で実行する必要がある場合
  • 本番アプリケーションサーバーの各種ログを収集したい、もしくはリアルタイムで監視したい場合

本番作業を理りなく作業する危険性

本題の断りなく作業することでの危険性は大きく2つある。

  1. 本番アプリケーションを複数人で操作することに予期せぬバッティングが起きる
  2. 本番アプリケーションで作業することで予期せぬ負担がかかり、クリティカルな作業の阻害要因となる。

本番アプリケーションを複数人で操作することに予期せぬバッティングが起きる

やることを宣言していれば、やることが明確化されるので、本来は一回だけやる作業が伝達ミスで複数人がやなどの事故を防ぐことができる。

具体的な例で行くと、本番のデータに関して修正のクエリとして数値を加算するなどの処理をしようとしたときに、手早くやるほうがいいと思って周知不足で作業を開始すると、同じ思考をもったような人がいた場合に作業がバッティングし、加算を二重にやってしまうなどの事故が起きる。

こちらに関してはちゃんと作業宣言して共有をすれば二重にやってしまうというアクシデントを防ぐことができる

本番アプリケーションで作業することで予期せぬ負担がかかり、クリティカルな作業の阻害要因となる。

本番アプリケーションは有限のリソースを持っているので、何か作業をすることでリソースを枯渇させてしまいサーバダウンを招くなどの事態が起きうる。

具体的な例で行くと、本番アプリケーションが謎のCPU逼迫をしはじめたときに「調査をしよう!」と意気込んでSSHし、ログのtailなどをし始めたりするとする。これを複数人がやってしまうことでメモリが逼迫して本来の不安定要因とは別に事故を招いてしまうなどの事態が起きる。

こちらは声がけすることで不用意に同じサーバーには入らず、誰かが入ってその内容を別の方法で共有するなどすれば事故を防ぐことができる。

まとめ

  • 本番アプリケーションに対してアクションを行うときは声がけをすることで要らぬ事故を防ぐことができる
  • 善意の重ねがけで事故になることがあるので、気をつける

関連リンク