サーバインフラエンジニアについて思うことを『小悪魔女子大生のサーバエンジニア日記』に触発されて書いてみた

サーバインフラエンジニアはモテるとの噂が最近絶えないわけですが、そんな僕達注目の書籍『小悪魔女子大生のサーバエンジニア日記』がついに刊行されましたので早速ゲットしてみました。紀伊国屋の店頭取り置きサービスというすばらしいサービスを使わせてもらったのですが、取りに行った時に「書籍の名前はなんでしょうか?」「こ、小悪魔女子大生の・・・」とか言わせんなよ恥ずかしい><

かわいい絵だけど中身はガチ

すでに一部界隈では有名になっているこちらのブログの書籍化です。まったくの素人だった女子大生がだんだんと知識を吸収していく様を見ていると、「俺が教えたかった orz」という思いが、、、じゃなくて、すごい細かいところまで内容としては盛り込まれていて、すごいですね。

絵については僕がとやかく言う事ないですが、最後の加藤さんのコメントにもある通り、内容としては小悪魔さんと同じように全くの初心者向けというよりは、この分野の知識をざっくり概観するのに非常に優れたものだと思います。

最終的には未経験者向けというよりも、インターネットの概念的な勉強をしないまま、現場で働いてきたエンジニアやディレクターにとって役立つ内容になっていると思います。

サーバインフラエンジニアって?

ただ、僕からつっこんでおきたいのは、本書の中で言及されているサーバインフラエンジニアの仕事はちょっと狭い or 説明不足なんじゃないかなーということです。まぁ弊社に限った話なのかも知れませんが。

サーバエンジニアの業務内容は大きく分けて2つ。構築業務と保守業務です。

もちろん構築は大きな柱です。サービスに投入される所謂「本番サーバ」を責任持って準備することはサーバインフラエンジニアにまず求められるコミットですね。ただそれ以外にも大事な仕事がたくさんあります。

「保守業務」と言ってしまうと、今あるものの現状維持ぽいイメージを受けてしまいます。もちろんそういう意味合いの仕事の時もあるんですが、成長しているサービスにおいて「保守業務」というのは「性能管理をする」ということになると思います。

先読みする能力

本書にもある通り、「サービスを止めないこと」がインフラエンジニアに求められる至上命題です。僕はサービスが止まっている時間はてめぇも呼吸を止めろという位の気持ちで臨んでいます(もちろんホントに止めたら仕事できないですが)。成長するサービスにとっては、「何か障害が起こってから対応する」という姿勢では既に後手でアウトです。成長を先読みして求められるスケールを確実に担保することが僕らインフラエンジニアのコミットになります。

そのためには、アプリケーションのアーキテクチャ1(が求められる規模に耐えられるものかという検討から、実際に運用が始まってからのリソースの様子を細かく見て増強の必要がないか、逆に無駄はないか、想定外の変化がないかを常に注意したりということが必要になります。世のインフラエンジニアはこれらを如何に効率良く確実に行うかということに命を注いでいるわけです。みんな大好き RRDTool なんかはいつもお世話になっております。ぜひぜひ今度は小悪魔さんに RRDTool の使い方を記事にして欲しいですね!

特にサーバインフラエンジニアはアプリケーション開発者や企画の人とも近く、かつネットワークエンジニアとも近い位置にいるので、全体のコミュニケーションの円滑化にも注意する必要があります。予定されているリリースにはアプリケーションの改修とサーバ構成の変更とネットワーク設定の変更が全て絡んでくるような場合、どれか 1 つでもコミュニケーション齟齬で遅れてしまったりするとリリースできなくなってしまいます。サーバインフラエンジニアとしてはこういうことに対してもしっかりとコミットしていく必要があります。

広いレイヤへの関与

サーバのことだけやってりゃいいんでしょと、「他のレイヤ」のことが考えられないサーバエンジニアは正直なんの役にも立たなくて、技術的には CPU のアーキテクチャやストレージの物理的な構成から TCP/IP の仕組みやアプリケーションが動いているプログラム言語の実装、アプリケーションのライブラリの構築法、HTML などのフロントエンドの技術まで全てに通じている必要があります。また、人という意味では、もちろん他のエンジニアとのコミュニケーションは先述の通り必須ですが、他にもほぼ唯一のコスト部門(つまりサーバをバンバン買っている)としては、予算を握っている様な人にもきちんと説明できる必要があるし、彼らの考えを良く理解しておく必要もありますし、新しくリリースしたい機能が負荷的にあり得ない無茶なものだったときに企画の意図を汲みとって同じことができてサーバインフラ的にもっと効率の良い機能の提案をしたりもできるべきです。

確かに仕事はターミナルやグラフの前にかじりついていることが多い印象がありますが、技術的な勉強を欠かしてはいけないし、ステークホルダーとのコミュニケーションも重要な仕事だったりします。その意味で、僕みたいな平社員ですら広く自分のサービスを俯瞰することができるなーと思っていて、この仕事はすごく面白いと思います。

サーバインフラエンジニアを目指す人に読んで欲しい本というか僕が勉強させて頂いた本

というわけで、いつか書こうと思っていた僕なりのサーバインフラエンジニアの解釈の一部を、すばらしい本にかこつけて書かせてもらいました。あくまで僕個人から見た意見なので異なる意見はあるでしょうが、少なくとも今の仕事はマジでこんな感じです。

で、サーバインフラいいなぁとか思った人にぜひぜひ目を通しておいて欲しい本のアフィを貼ってこのエントリの締めとしたいと思います。と言っても僕が読んだ本の中からなので、他にもっといい本はありますので貪欲に探してください>< v

サーバ/インフラを支える技術

なんといってもサーバインフラエンジニアとして必要な技術がしっかりまとまってる良書ですね。僕も最初にこれで勉強しました。負荷分散とか高可用性についての入門的な知識をつけるのにも非常によいですし、サーバ単体で知っておくべき知識もたくさん詰まっています。

4Gbps を超える Web サービス構築術

一般的な web のシステムに必要な要素を解説した良書。キューイングとかキャッシュの仕組みは 4Gbps を超えるくらいの大規模サービスじゃないとなかなか知識がつかないけど、それを惜しみなく解説してくれています。

Linux-DB システム構築/運用入門

インフラエンジニアにとって DB に関する知識・技術はたとえ自分の担当が DB でなくても必須です。そんな DB に関する知識をつけるのにこれ 1 冊あれば十分と言っても過言ではないです。MySQL を主眼には置いていますが、一般的な PC サーバ上で RDB を使うのであれば必須の知識ばかり。SSD に関する情報も入っていたりとストレージ周りの知識を付けるのにも有効。

3 分間 ネットワーク 基礎講座

ちょっと内容が薄いんですが、僕が学生の時くらいに立ち読みして勉強した本です。僕はネットワークはまだ本腰いれて勉強してはいないんですが、この本は小悪魔よろしく図もふんだんに使いながら全くの初心者でも理解していける構成になっています。もうちょっとガチな書籍に進む前の入門としては十分だと思います。

そして 小悪魔女子大生のサーバエンジニア日記

そして、この本もここに並べて良いと思います。割とネットワークレイヤの知識が詳しく書いてあって、インターネットってなんやねんというあたりを結構細かいところまで学ぶことができますね。

でも、何よりも実践が一番

と、ここまで書籍の紹介しましたが、エンジニアとしては何よりもやってみることが大事です。今は本当に恵まれた時代で、さくら VPS や AmazonEC2 などで格安で root 権限のあるサーバをゲットすることができます。レンタルサーバもいいですが、そういったサーバを借りてみて、例えばこの WordPress を独自ドメイン名で動かしてみるとかやってみるのが一番勉強になります。

他にも、安いパソコン買って自宅に LAN を組んでみるのも特にネットワークレイヤの勉強になります。僕はネットワークについての基礎知識はどうしても家のサーバを OpenVPS で見れる様にしたくてうまくいかなかったので、パケットキャプチャしまくって src/dst とかを見て考えまくったのがすごい勉強になってます。

というわけで、いつも通り書評というよりは、本をトリガーにして持論を展開したエントリでした。本書はブログのまとめみたいなものなので、わざわざ買う必要ないのかもと思うかも知れませんが、紀伊国屋で取り置きしてカウンターで「小悪魔女子大生下さい」という羞恥プレイを楽しみたい方にはおすすめです!

・・・違う違うw かわいいうさうさの表紙の本なので一冊手元に置いておきたいですね!では!

Footnotes

  1. web、アプリ、DB など各コンポーネントがどういう役割なのか、どういう仕組で動かすのか、アプリのコードが必要なスケールを担保できるのか(例えば DB の分割が容易か)などなど。インフラエンジニアのクリエイティビティが発揮されるところ。