diaryクラウド専任の40代インフラエンジニアが書くブログ。新規事業マネージャー。20世紀末の就職氷河期スタート時にIT業界に文系未経験で入りこみそのまま生き残った人。1日2記事投稿しています(0:00、12:00)。2020-11-27本番環境の心構え4つIT・情報技術もうすぐ師走。あった混乱の2020年はもう少しで終わりそうです。Calendarの季節。興味深いカレンダーが作成されています。qiita.com昨年非常に盛り上がっていましたので作成させていただきました。本番環境でやらかしちゃった人のアドベントカレンダーです。例)本番DB吹き飛ばした本番サーバをデストロイしたネットワーク設定をミスって本番サーバにアクセス出来なくなり、サーバが世界から孤立したなどなど...以下の2点については必須項目なので、記述お願いします。惨劇はなぜおこってしまったのか二度と惨劇を起こさないためにどうしたのかもう二度とあの惨劇を繰り返さないために、みなで知見を共有しましょう。本番環境とは何かをまだ経験の浅い人に教えるとして、ポイントをまとめていきたいと思います。1)本番環境はユーザーのビジネスそのものである昔はコンピューターやシステムと呼ばれるものは、人間の仕事を補助してくれるものでした。決算書を作るのに昔はそろばんを使っていました。それが電卓となり、表計算となっていきました。そこまではツールの延長上でしたが、表計算のセルに複雑な数式が入ったりロジックを入れたりして、だんだんと人間の思考、仕事そのものを置き換えていくようになりました。今は、もうシステムそのものが仕事であり、顧客のビジネスと本番環境の持つ意味がどんどん重複。本番環境のダウンはビジネスのダウンを意味するまでに至りました。誰かの本番環境を預かる仕事をしていて、そこにログインしようものなら、顧客のビジネスそのものを握ったということを意味しています。ビジネスとは売上があり原価があり利益があり、その継続を指します。それと目の前の良く知ったWindowsやLinuxの画面がリンクしている感覚を持てるようになるのは数年の経験は必要だと思います。思い知るのは障害対応を経験したときです。何が原因か、より止まったことへのビジネス影響の方が重要なことを思い知るからです。どれぐらい顧客のビジネスに影響したのか。見たこともない金額がその本番環境で動いているとわかったときに、血の気が引いていくのです。技術者はその技術ばかり目を向けがちなので、何が動いているか。顧客に影響しているかをよく知ることで、本番環境にログインするときにその責任の重大さを認知し慎重に行動できるようになると思います。2)一人で作業するとろくな目に遭わない少なくとも私の身の回りでは、本番環境における作業は作業者一人ではなく確認者も付けるようにしています。作業効率が半分になるので、それはリソースの無駄遣い、という議論もありますが、作業ミスのことを考えるとこれは避けて通れません。人間は、百回同じことをしなさいと言われると、99回成功し1回失敗する生き物です。ゴミ箱が足元にあって、目の前の紙を丸めて捨てる。そんなこと百回やると、なぜかたまにゴミ箱を外すことがあります。これがヒューマンエラーの正体です。作業者の行動を確認者がちゃんと見ていると、その失敗の兆候を止めることができます。作業の手順はもちろん、テンポや集中力など、本人では気づかない部分を確認者が観察できます。確認者が作業手順をきちんと把握している必要があるのが注意です。機械的に確認者を付けたけれども、確認者が作業を理解していないので作業者を止められなかったという事例もありました。ヒューマンエラーが起きた時は確認者が責任を負うべきだと思っています。作業者はその代わり、一つ一つの作業のたびに確認者に同意を求めます。確認者が承諾したらあとは確認者の責任なので、確認者に緊張感が生まれます。作業者は間違いないよう最善を尽くし、確認者は責任を負う。これが本番環境でしくじらないための知恵です。一人で作業するというのは、もうすべての責任を背負い、しかも自分はミスしないという強烈な自覚が無ければやってはいけないと思います。このケースはあり得るのです。深夜の緊急作業で誰も支援がいないとき、技術的に自分しか把握していない、など。戦場で大将同士の一騎打ち、みたいな感覚です。技術者として試される修羅場はたまにあるので、この原則二人作業の上にそびえる崇高で特別な状況だと理解したほうが良いと思います。逆に言えば、一人でカジュアルにやる作業なんて、無いと思っています。実は本番環境を運用するとわかるのですが、バックアップをリストアするときというのはほとんどありません。普通に動いていればバックアップは不要です。本番リリース前にバックアップの取得試験を行い、数日自動で取得されているのを確認し、それで放っておくという運用が多数あるのを知っています。これは大変、危険です。いざ問題が起こった時、バックアップが正しく取られているかの確認を日々やっていないとすれば、ドキドキしながらバックアップの状況を確認することになります。その結果「取られていませんでした」という事例をいくつか知っています。ある日のシステム変更でディレクトリ構成が代わり対象から外れていました、とか、バックアップの自動化シェルが失敗したままになっていました、とか。バックアップの大事さを一度知ってからは、日々の運用でバックアップの成功ログを確認するようにしています。毎日バックアップの取得を確認することが、本番運用の肝だと気が付いたからです。バックアップさえ取られていれば、最悪のケースは逃れられます。日々の平常運用のときほどバックアップに注目するべきです。最近は操作がGUIになっていることもありますが、コマンドでの作業の方が何をやったかわかりやすくて好きです。変更作業だとこんなシナリオで完結します。・構文チェック・設定の反映ログの確認は下記のようなシナリオです。・ログファイルの確認どちらにしろ、ほとんどの作業がファイルを操作しています。OSの大事な機能の一つであるファイル操作ですが、この知識が浅いと本番環境を触れるのは非常にリスクがあります。たかがファイル、ですが例えば削除コマンド一つの引数を間違えても、重大な障害を引き起こしかねません。ファイル操作について熟知することがまず大事で、その上で様々なOS、ミドルウェア、アプリケーションのことを知っていってもらいたいな、と思います。技術力不足で障害が起こった、ということを深掘りしていくと、結局はファイル操作の未熟さに行きつくことが大変多いからです。4つほど本番環境に立ち向かう上でのポイントを挙げてみました。この業界に二十年以上いると、本番環境にログインするだけでも心臓が締め付けられる感覚になります。この場所にいられるから食えている、というのはあるものの、主戦場とするにはなかなか肝が必要だなと思う場面が多々あります。根底には技術力が重要なものの、もっと大事な、ビジネスに対する感覚や基礎、要件を正しく理解する能力など、世間が思っているよりももっと人間に近い部分を必要とする仕事ですね。00:00クラウド専任の40代インフラエンジニア。新規事業マネージャー。20世紀末の就職氷河期スタート時にIT業界に文系未経験で入りこみそのまま生き残った人。1日2記事投稿しています(0:00、12:00)。引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。