業務で運用にそれほど深く関わることは少ないのだけど、前から気になっていた本だったので同僚の人に貸してもらって読んでみた。
FlickrやPicnikといった米国の大手Web企業に買収された大規模サービスで実際の運用に腕を振るったエンジニア達の経験や失敗談を通して「オペレーションエンジニア」というキャリアの考え方を説いている。
継続的インテグレーションの文脈に通じるような、知ってる話もあれば、「運用の一線で働いてる人たちはこういう考え方をするのか」と知らなくて新鮮だった話もあった。強く印象に残ったのは以下のような点である。
7章「いかにして複雑なシステムは失敗するか」は、ウェブオペレーション領域における事故・インシデントの起きる理由を考察している。
事故を「根本原因」に結び付けるのは基本的に間違いであるという主張が凄く分かる。
事故は複数の欠陥によって成立しているのであって、単独の「原因」が存在するわけではない。複数の要因が存在するのである。それぞれの要因は事故を成立させるのに必ずしも十分なものではない。それらが組み合わさることでのみ、事故は作られるのである。実際、事故に必要な環境を作っているのは、要因の集まりなのだ。つまり、事故の「根本原因」などあり得ないのである。「根本原因」をもとに評価をするのは、失敗の本質に関する技術的な理解からではなく、結果に対して社会的あるいは文化的な何らかの非難が必要だったものと考えらえれる。
「振り返り」という名の突き上げ会でありがちな光景である。根本原因を求め過ぎると、じゃあそれを防止するために次からは再発防止を講じましょうとなるんだけど、あまりに防御的になって行って、どうにもならないリリース手順が出来上がったりするものである。
これはどの章という訳ではなく、全体を読んで感じた点で、ウェブオペレーション分野でも、やはりどんどん変わって陳腐化して行くスキルと、「賞味期限の長い」価値の変わりづらいスキルとあるんだなということ。
本書は2011年に日本語訳され、原書は2010年に執筆されているのだけど、例えば以下のトピックは5年経った2016年現在も価値の変わらないスキルのように見える。
逆に流れが速くて3年後や5年後は分からないなと感じたのは、構成管理ツール(本書ではChefとPuppetの名前が挙がっている)と、それらを利用した継続的なデプロイ回りのノウハウ分野で、2016年現在でも重要スキルではあるのだけど、もうPaaSやコンテナのような使い捨て環境で済む領域も広がって来ている実感がある。
やっぱり自分の時間を投資するなら、将来無駄にならないものが良いんだよなぁ。色々と考える契機になった意味でも、良い本でしたね。
最近のツッコミ
参号館 日記(ariyasacca)