woshidan's blog

そんなことよりコードにダイブ。

ウェブオペレーション サイト運用管理の実践テクニックを読んだ

ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE)

ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE)

前職で研修に使われていた記憶があり、いい本なのかなーと思って読みました。 運用系の仕事をしているわけではないので、一ヶ月強かけてなんとか読みおおせた感じです。

各章はかなり生き生きとした文章で、場合によっては「これはもしかして飲み会の書き起こしではないだろうか」「これ開発者の前に出したらグーパンされても文句言えないのでは」と感じた章もいくつかあり、いんたーねっつの進歩を体感することができます。

なんとか読みおおせた印象としては

  • ウェブサービスのサーバ構成について、それぞれのサーバの大まかなイメージが頭に描けるようになった
    • リバースプロキシで静的ファイルを返したりロードバランサの役目もさせて負荷分散をする、一回取得したデータをキャッシュにつっこんで奥のDBにリクエストがいかないようにする、リクエストが大量に来てキャッシュが切れた時DBにリクエストが殺到してダウンする、みたいな
  • 結構前の章でいいよって言われていることが次の章でそうでもないよって言われてたりして、道具を使ったり人の意見を採用する前に要件を確認するのは大事だな、と思えた
  • もともとあまりシェルになじみのない人でなんでもLL言語+RDBMSで考えがちだったのですが、監視のシステムの実装例でawkなどが出てきたり、道具の得意分野に合わせていろんな道具を操ることについて考えさせられた
  • Dynamoの論文の特徴が面白かった
    • Consistent hash, read repair, hinted handoffが書いてあったよと紹介されていて、特に気になったのは read repair.
  • 高可用性(リクエストがあったらいつでも応答できる)と応答速度/パフォーマンス(速くレスポンスが返ってくる)と一貫性(データに矛盾が生じない)が違う、相反しない、という例がくどくどと書かれていて身にしみた
    • 分割耐性はまだ自信がない
  • みんな結構データセンタや社内システムの外からファイアウォールping弾かれてて面白かった
  • サーバの監視システムについて、死活監視・リソース監視(Nagiosなど)・それらの結果の表示(Cacti, Muninなど)、みたいなソフトごとの得意領域があるんだなみたいなイメージが湧いた
  • レスポンスの配信の節で、サーバとクライアントの間に一度に取得できるオブジェクト数の上限があるということを知らなかったため、デバッグコンソールを眺めてみたり

でした。

個人的に特に面白かったのは、6章、9章、12章、15章。

6章の学生時代のサイト運営経験から右往左往しながらシステムを運用していく様子に共感を覚え、9章の急増したトラフィックへの障害対応の文章を読んでリクエストがどのサーバに順に到達するかのイメージを描き、12章でこの人本当にMySQL好きなんだなという気持ちになり*1、15章で高分散型*2NoSQLの監視ソフトウェアの違いや比較的小さい規模で動かすものと大きい規模で動かすものの思想の違いに思いを馳せたり。。

運用経験のない人が一人で読むとどうなのかな、と思いつつ、ここで紹介されている技術は今の時代ではそれなりに枯れていたり廃れていたり流行っていたりするためインターネットにまとめられた記事を適宜参照しながら進めました。しかしまあ、早口でまくしたてるクセがある他部署の先輩の運用談義を聞かされている風味もあり、本開いてる間はなんだか忙しかったのでした...。

前述の文体が気になる点や2011年出版でやや古いところもあるので、この本のポジションに収まる新しい本とかあったらそちらも読んでみたいです。

現場からは以上です。

*1:MySQLコンサルタントの方が書いてるのでそりゃそーだって話なんだけど、これだけMySQL好きな人になら一回コンサルされたいなという感じでした

*2:いまの言い方だとビッグデータ用?