『インフラエンジニアの教科書2』読んだ

インフラなんも知らんので購入。
おれのインフラ経験といえば、VMware vSphereで管理された仮想サーバの1つにRedmineをセットアップしたりプラグインを適用した程度。

目次

  1. プロトコル
  2. OS
  3. ネットワーク
  4. データベース
  5. WEBのサーバサイド開発言語
  6. 共通鍵暗号方式と公開鍵暗号方式
  7. 障害対策と障害対応
  8. よく知られたセキュリティ攻撃
  9. インターネットの運用と発展をつかさどる組織や団体
  10. RFCの読み方と作られ方
  11. 世界規模のインターネットサービス運営
  12. インフラエンジニアとして目指す方向

1章 : プロトコル

OSI参照モデル、とくにTCP/IPが主な内容。ほぼ『Linuxで動かしながら学ぶTCP/IPネットワーク入門』の復習。
ただ、コネクションとセッションの違いや、ファイアウォールの動的ポートフィルタリング機能などは知らなかった。


2章 : OS

本書で最もページ数の多い章。OSというのはインフラ屋にとってもそれだけ重要なのだと察せられる。
プロセス、メモリ管理、割り込み、ファイルシステムなどOSカーネルの話題が中心となる。『試して理解 Linuxのしくみ』や『ゼロからのOS自作入門』の復習。
新たに知ったことは、アフィニティー(ディスパッチャー任せのCPU割り当ての制御)、NUMA(非対称メモリアクセス)、inode(ファイルのメタ情報を格納する構造体)など。
とくにinode周りの知識は、大容量ログファイルの退避などインフラエンジニアとしてのテクニックに重要となる。


3章 : ネットワーク

1章と同じく『Linuxで動かしながら学ぶTCP/IPネットワーク入門』の復習とさらなる詳細への踏み込み。
主にネットワーク機器とその機能について記載されている。L%dスイッチの役割などがわかるようになる。


4章 : データベース

本書で2番目にページ数の多い章。やはりその分、気合入っている解説が多い気がする。
データベースの原理についてはなにもわかっていないので、内容はほぼ初見。
以前作ったWebアプリでは基本的なSQLしか使っていなかったが、それでもデータベースを実際に触る前と比べたら文章のイメージがつきやすくなった。
しかし、本格的にDBを運用するような経験は皆無なので、スケールアウトのための機能やクラスタ構成などはためになる。


5章 : WEBのサーバサイド開発言語

前半ではオープンソース系開発言語とWebサーバの組み合わせ方式が紹介される。「オープンソース系開発言語」というより「動的型付け言語」と表現したほうがいい気がするが。
後半はJavaとWebサーバの話。職業訓練の実習でやったのがずばりこの辺りの内容なので、なんだか懐かしい。
ソフト屋目線で語ってしまうと、つまらない章。インフラ屋として注意すべき点が盛りだくさんかと思ってたら各言語のバージョンぐらいらしく、拍子抜けした。


6章 : 共通鍵暗号方式と公開鍵暗号方式

章題の他に、主にWebサーバにSSL/TLS通信させるための用語を解説。
解説は正直物足りない感じがする。導線は多く引かれているので、さらなる理解には別の専門書をあたる必要があるように思う。


7章 : 障害対策と障害対応

「障害時に対する普遍的なノウハウは存在しない」といきなり厳しい現実を言い渡される。
コンピュータの状態を「20秒で調査できるようにしな!」とも言われる。正直いまのおれには無理だ。Linuxのコマンドが指先に全然身についておらず、本書で批判されてる通り毎度ググっている。
「もっとLinuxで遊べ」って?はい……。


8章 : よく知られたセキュリティ攻撃

DoS攻撃など代表的な攻撃手法とその対策が解説される。
去年ちらっとやったWebGoatでの演習と、漫画『王様達のヴァイキング』で得た知識の復習。
6章と同じく、攻撃手法のより具体的な詳細や対策は別の本をあたるべし。


9章 : インターネットの運用と発展をつかさどる組織や団体

ISOCとかICANNとか。1つの章を使ってこれらの解説をする必要があったのか疑問に思ってしまう。
まあインフラ屋にとってどう役立つのかおれがイメージできていないだけかもしれない。


10章 : RFCの読み方と作られ方

RFCの各カテゴリや構成などを解説。
RFCを読みながら演習する内容のある『Rustで始めるネットワークプログラミング』の前に読んでおきたかった章。


11章 : 世界規模のインターネットサービス運営

構築するサービスが世界規模のものだった場合、通信遅延やデータ保存・同期に対してどう対処すべきかといった話。
おれのキャリアだとかなり縁遠いテーマではあったが、POPやCDN、TCPウィンドウサイズなどの説明は非常にわかりやすい。


12章 : インフラエンジニアとして目指す方向

インフラ屋としての教訓。
とくに言うことはないっつーか、ここらへんの事情はソフト屋もインフラ屋もたいして違いがないっつーか。


まとめ

  • 教科書とはいっても専門用語についてのすべての詳細が懇切丁寧に解説されているわけではない(まあそんなことしたらページ数がえらいことになるが)。
  • 各章末にはそれぞれのカテゴリーでインフラエンジニアとして身につけておきたい注意事項やテクニックがまとめられている。
  • 本書を読んでいたら、今までの経験やあさってきた資料の知識が総動員されている感覚になった。特にみかん本から仕入れた知識がじわじわきいている気がする。2章がまさにそう。