「絵で見てわかるITインフラの仕組み」という本を書きました

共著で絵で見てわかるITインフラの仕組み (DB SELECTION)という本を書きました。

絵で見てわかるITインフラの仕組み (DB SELECTION)

絵で見てわかるITインフラの仕組み (DB SELECTION)

内容

初心者向けの本です。ITインフラにおける、普遍的な概念や仕組みを絵を使って説明しています。インフラエンジニア向けの本ですが、アプリケーションを設計・開発しているエンジニアやプログラマの方にも役に立つ本ではないかと思います。システムアーキテクチャの設計、パフォーマンスチューニング、トラブルシューティングではOS、ハードウェア、ネットワークなどの知識も必要とされます。

流れの速いIT業界では次々に新しい技術が登場し、IT技術者は新しい技術を勉強するのが大変という話をよく聞きます。半分当たっていて、半分外れている気がします。深く本質的に理解していれば、一見新しいように見えて実は古くからある技術と共通点があったり、その改良版だったりすることが多いように感じます。例えば、OSはメインフレーム商用UNIXLinuxWindows などで一見全く違うものに見えますが、マルチタスク、タスクのスケジューリング(いわゆるプロセススケジューラ)、仮想記憶、ファイルシステムなど実装は違いますが、過去から脈々と技術は受け継がれているのではないかと思います*1。で、それを知っていて何の役に立つかと言うと、本質を理解していると応用が利きます。

例えば、あまり詳しくない商用UNIXでのI/O関連のトラブルシューティングをすることになった場合に、一般的にOSはこういうアーキテクチャになっているから、こことここのポイントで性能情報を取って、こうなっていれば、こうだなとかイメージができたりします。OS固有の情報取得方法を調べて分析してみると当たっていたりします。
また、新しいタイプのミドルウェア(なんだそれw)が出てきても、なるほどシステムコールレベルでは昔からある某DBのアレと同じっぽいな。こういうメリットがあるが、こういうデメリットがあるので、使いどころはこういうシステムだなとか勘が働いたりします。

OSやDBのパラメータを設計したり、チューニングしたりするときは、暗記で呪文のように行うのではなく、仕組みを理解して、パラメータの設定やチューニング手法によりこういう動きになるなとか頭の中で絵をイメージできるようになると応用が利きます。本書ではこういう絵を頭の中でイメージできるようになると応用が利くなと思ったことを書いています。

特徴

ITシステムを構成するコンポーネントや仕組みをたくさんの絵を使って説明しています。特徴的なのはカバーの裏の絵です。「3階層型システムにおけるデータの流れとそれを支える仕組み」の絵がありますので、本屋で手に取られた方はカバーを外して、裏の絵を見てみてください。

執筆を通しての感想

最初、自分が共著の方々と一緒に執筆するのは時期尚早だと思いました。とりあえずミーティングに参加してみて無理そうならやめておこうと思っていたのですが。。。終わってみての感想は時期尚早でした(笑。ただ、ご迷惑をおかけしながらも監修の小田さんと共著の山崎さん、三縄さん、佐藤さんと一緒に執筆し、とても勉強になりました。意外と今回の執筆活動は仕事面でプラスになっていると思います。小田さんの本がきっかけで入社して2年もたたないうちにまさか自分が本を書くことになるとは夢にも思いませんでした。

目次

本章目次
CHAPTER 1 インフラアーキテクチャを見てみよう
  1.1 はじめに
  1.2 集約型と分割型アーキテクチャ
  1.3 垂直分割型アーキテクチャ
  1.4 水平分割型アーキテクチャ
  1.5 地理分割型アーキテクチャ
CHAPTER 2 サーバーを開けてみよう
  2.1 物理サーバーとは
  2.2 CPU とは
  2.3 メモリとは
  2.5 バス
  2.6 まとめ
CHAPTER 3 3階層型システムを見てみよう
  3.1 3階層型システムの図解
  3.2 主要概念の説明
  3.3 Web データの流れ
CHAPTER 4 インフラを支える理論の基本
  4.1 直列/並列
  4.2 同期/非同期
  4.3 キュー
  4.4 排他制御
  4.5 ステートフル/ステートレス
  4.6 可変長/固定長
  4.7 データ構造(配列と連結リスト)
  4.8 探索アルゴリズム(ハッシュ/ ツリーなど)
CHAPTER 5 インフラを支える理論の応用
  5.1 キャッシュ
  5.2 割り込み
  5.3 ポーリング
  5.4 ピンポン
  5.5 ジャーナリング
  5.6 レプリケーション
  5.7 マスター・スレーブ
  5.8 圧縮
  5.9 エラーチェック/誤り訂正
CHAPTER 6 システムをつなぐネットワークの仕組み
  6.1 ネットワーク
  6.2 【基礎】階層構造とは
  6.3 【基礎】プロトコルとは
  6.4 TCP/IP による今日のネットワーク
  6.5 【レイヤー7】アプリケーション層のプロトコルHTTP
  6.6 【レイヤー4】トランスポート層のプロトコルTCP 
  6.7 【レイヤー3】ネットワーク層のプロトコルIP
  6.8 【レイヤー2】データリンク層のプロトコルEthernet
  6.9 TCP/IP による通信のその後
CHAPTER 7 止めないためのインフラの仕組み
  7.1 耐障害性、冗長化とは
  7.2 サーバー内冗長化
  7.3 ストレージ冗長化
  7.4 Web サーバーの冗長化
  7.5 AP サーバーの冗長化
  7.6 DB サーバーの冗長化
  7.7 ネットワーク機器の冗長化
  7.8 サイトの冗長化
  7.9 監視
  7.10 バックアップ
CHAPTER 8 性能を引き出すためのインフラの仕組み
  8.1 レスポンスとスループット
  8.2 ボトルネックとは
  8.3 3階層型システム図から見たボトルネック
  8.4 まとめ

私は 4.1〜4.4, 4.6〜4.8, 5.2 と他の章を少しだけ書きました。

コラム目次
究極のアーキテクチャと至高のアーキテクチャ
Web はクライアントサーバーの夢を見るか?
仮想化のススメ
技術は受け継がれている
コードネームの正体は……
自作パソコンのススメ
不死鳥InfiniBand
棒人間の冒険
カーネルは決して一枚岩ではない
データとともに届く、あなたへの想い
RDBMS とKVS の仁義なき戦い
大空を飛ぶ
並列と並行
C10K 問題
マルチプロセッサシステムでの排他制御は難しい
変化は常に一瞬でやってくる
標準化団体のお話
一度捕まえたらなかなか離さないわよ
インターネットは誰のもの?
IP アドレスの枯渇とIPv6
IP ヘッダーからチェックサムが消えた日
NIC の割込みとパケット処理
障害の保護
障害百物語 その1「もう時間切れ!?」
DSR( Direct Server Return)
障害百物語 その2 「診断で死んだ(ん)」
障害百物語 その3 「ブロードキャストストーム」
最も重視すべきレスポンスタイムとは?
CAP 定理を押さえてエスパーになろう
ボトルネックのラスボスたるデータベース
余裕を持った大人のようなシステム
C はJava より速い?
子供は公園で遊ばせましょう
ORDER(N) 一丁あがりました
帯域がすべて? 

私が担当したのは、「技術は受け継がれている」、「並列と並行」、「C10K 問題」、「マルチプロセッサシステムでの排他制御は難しい」、「C はJava より速い?」、「ORDER(N) 一丁あがりました」です。


P.S.
今回は概念や考え方、仕組みを説明した本を書いたので、次の機会があれば「超実践」系の本も書いてみたいなと思います。書いてみたい本にはこんなのがあります 。今回の執筆はいろんな意味で自分にとってスタートだと思っています。


追記(2012/10/31):
ブログ、twitterfacebook などに書かれている感想を集めてみました。

絵で見て分かるOS/ストレージ/ネットワークの姉妹本。今回も基盤系SEの5年目までを対象とした技術学習本。ハードウェア、システム構成、システム構築を記載しているため前書(絵で見て分かるOS/ストレージ/ネットワーク)とは補完関係にあり、2冊をしっかり学ぶことで基盤SEの基本的知識は身につくのではないかと個人的に思う。

絵で見て分かるITインフラの仕組み - ryohei8724の日記

いわゆるITインフラについて仕組みをまとめています。
基礎からチェックできるので、大変オススメなのであります。

『絵で見てわかるITインフラの仕組み』 - るとるのぶろぐ

アーキテクチャ、ネットワーク、サーバー、プロセス、要素技術…高性能・耐障害性を実現する基盤技術の基礎。システムの全貌がわかる解剖図つき。

『絵で見てわかるITインフラの仕組み (DB SELECTION)』(山崎泰史)の感想(17レビュー) - ブクログ

帯に書かれている(高性能・耐障害性を支えるシステム基盤)が本書んおテーマ。7章が耐障害性、8章が高性能。他の章は基本の説明。ベテランも頭の整理や誤って学習したことのアンラーニングにお薦め。

『絵で見てわかるITインフラの仕組み (DB SELECTION)』(山崎泰史)の感想(17レビュー) - ブクログ

もう一年早く出てたら、新人研修で使ってた気がする。

http://b.hatena.ne.jp/entry?mode=more&url=http%3A%2F%2Fd.hatena.ne.jp%2Fyohei-a%2F20120910%2F1347249284

#書評 「絵で見てわかるITインフラの仕組み」を読んでる。初学者(これからインフラSEになる人、普段システム開発するけどインフラは意識した事が無いって人とか)にオススメ。かなり網羅的に書かれてるから基礎は十分学べるはず。即戦的知識は千差万別だから、各個覚えれば良いと思うよ。

michael on Twitter: "#書評 「絵で見てわかるITインフラの仕組み」を読んでる。初学者(これからインフラSEになる人、普段システム開発するけどインフラは意識した事が無いって人とか)にオススメ。かなり網羅的に書かれてるから基礎は十分学べるはず。即戦的知識は千差万別だから、各個覚えれば良いと思うよ。"

タイトルにそぐわないくらい、硬派な内容だなぁ。これで教育してほしいかもという内容。電子版ないかなあ / 絵で見てわかるITインフラの仕組み (DB SELECTION):http://Amazon.co.jp :本 http://www.amazon.co.jp/gp/aw/d/4798125733

Jun Ohtani on Twitter: "タイトルにそぐわないくらい、硬派な内容だなぁ。これで教育してほしいかもという内容。電子版ないかなあ / 絵で見てわかるITインフラの仕組み (DB SELECTION):http://t.co/NuorNatN:本 http://t.co/RxvapXfC"

昨夜、眠れなかったので、夜中にこの本を読んでた。
なかなか分かりやすくていい本です。(僕のようなアマチュアには)
辞典のようにも使えますね。社内のインフラ系の皆さんとも対等に会話できますように!!

https://www.facebook.com/permalink.php?id=100002462930954&story_fbid=424208404306526

絵で見てわかるITインフラの仕組みという本が本当にわかりやすく書いてあるので驚愕した

Ask on Twitter: "絵で見てわかるITインフラの仕組みという本が本当にわかりやすく書いてあるので驚愕した"

これはかなりの良書、ITのインフラがいかに思いやりでできているかがわかる本、しかも初心者向けでもある。
後輩に読まそう。

『絵で見てわかるITインフラの仕組み (DB SELECTION)』(山崎泰史)の感想(17レビュー) - ブクログ

これ、手前味噌ですが、周りの席の人の評判いい。私も取り寄せて正月休みにでも勉強するか・・・>>絵で見てわかるITインフラの仕組み (DB SELECTION) 山崎 泰史 http://www.amazon.co.jp/dp/4798125733/ref=cm_sw_r_tw_dp_ryzXqb0S7BTSY … @AmazonJPさんから

ebimayu on Twitter: "これ、手前味噌ですが、周りの席の人の評判いい。私も取り寄せて正月休みにでも勉強するか・・・>>絵で見てわかるITインフラの仕組み (DB SELECTION) 山崎 泰史 http://t.co/y0M2txDh @AmazonJPさんから"

[MM読了] 絵で見てわかるITインフラの仕組み (DB SELECTION) http://bit.ly/UgL7Te ★★★★☆ 読めば読むほど、発見がありそうな本。アプリの人も、明日の業務には役に立たないかもしれないけど7章(障害)8章(性能)あたりは読んで損はないです。

ざっそう on Twitter: "[MM読了] 絵で見てわかるITインフラの仕組み (DB SELECTION) http://t.co/nEseqRmw ★★★★☆ 読めば読むほど、発見がありそうな本。アプリの人も、明日の業務には役に立たないかもしれないけど7章(障害)8章(性能)あたりは読んで損はないです。"


追記(2012/12/06):
日経NETWORK 2012年11月号に掲載された書評を引用します。

ネットワークもしくはサーバーのどちらかの分野に知識が偏っているような人は、思わず膝を打つ記述に出合うだろう。
(中略)
サーバーとネットワークが連携して動作する仕組みを無理なくまとめた視点が、本当に素晴らしい。現役のエンジニア/コンサルタント4人が筆を振るった本だが、ありがちなわかりにくい説明に陥らず、丁寧な解説をしている点に好感が持てた。他社の本だが、日経NETWORKの読者にもお薦めしたい。

新刊・近刊 - 絵で見てわかるITインフラの仕組み:ITpro


追記(2013/01/03):

情報システムの基盤を構成する技術や仕組みについて、その基本的な知識を解説した一冊。図解や写真を豊富に使って説明してあり、理解しやすい。基盤を構成するアーキテクチャー、直接/並列処理や同期/非同期処理といったデータ処理の仕組みなどの基本に加え、信頼性や性能といった非機能要件別の解説も充実している。アプリケーション開発を担当するエンジニアが、システム基盤の全体像を学ぶのにもうってつけである。

新刊・近刊 - 絵で見てわかるITインフラの仕組み:ITpro

*1:例を上げるときりがないですが、MicrosoftWindows NTを開発したのは、元々デュポンでメインフレームをやっていてその後DECでVMS(OS)を開発したデヴィッド・カトラーだったり