サーバ/インフラを支える技術——止まらないサービスを作るための設計思想を学んだ正直な評価

「24時間365日 サーバ/インフラを支える技術」をテックリード視点で評価。冗長化・負荷分散・パフォーマンスチューニング・省力運用の設計思想が現代のAWSインフラ設計にどう活きているかを整理する。

「止まらないサービスを作りたい」という意識はWebに携わるエンジニアに共通するものだ。

しかし「止まらない」を実現するための設計——冗長化・フェイルオーバー・負荷分散・パフォーマンスチューニング——を体系的に学ぼうとすると、どこから手をつければいいか迷う。この本はその体系化の起点になった一冊だ。


本の全体構成

内容
1章冗長化/負荷分散の基本——ヘルスチェック・フェイルオーバー・VRRP
2章ワンランク上の構築——リバースプロキシ・キャッシュ・DBレプリケーション
3章DNSサーバ・ストレージ・ネットワークの冗長化
4章パフォーマンスチューニング——Linux・Apache・MySQL
5章省力運用——監視・Puppet・daemontools・ログ管理
6章はてな・DSASの実際の構成事例

章ごとの評価

1章:冗長化/負荷分散の基本

「障害を想定する→予備機を用意する→切り替える」という冗長化の本質から入り、コールドスタンバイ・ホットスタンバイ・フェイルオーバー・VIPの仕組みまで説明している。

この考え方は今でも変わらない。AWSのMulti-AZ・ALB・Auto Scalingも、本書が説く冗長化の原則に沿っている。詳細は高可用性設計の基本にまとめた。

2章:ワンランク上の構築

リバースプロキシの役割(バッファリング・Keep-Alive・URLルーティング)、Squid/memcachedによるキャッシュ、MySQLレプリケーションを扱う。

リバースプロキシの設計はリバースプロキシの役割と設計、DBレプリケーションはMySQLレプリケーション設計に深掘り記事を書いた。

4章:パフォーマンスチューニング

本書で最も価値が高い章だと思っている。「推測するな、計測せよ」というアプローチで、ロードアベレージの正体・CPU/IOのボトルネックの見極め方・sarvmstatpsの使い方を体系的に解説している。

「ロードアベレージが高い=CPUが重い」という誤解はここを読んで解消できた。詳細はLinuxロードアベレージを正確に理解するにまとめた。

5章:省力運用

監視(Nagios)・設定管理(Puppet)・デーモン管理(daemontools)を扱っている。ツール自体は今は別のもの(Datadog・Ansible・systemd)に置き換わっているが、「なぜ監視が必要か」「設定管理を自動化する意義」という考え方は変わっていない。

現代的な監視設計はCloudWatchでAWSを監視するにまとめている。


スピンオフ記事一覧

記事対応章
高可用性設計の基本1章
フロントエンドエンジニアがサーバ/インフラを学んだ記録1〜3章
Linux運用で最低限知るべきこと4章
Linuxロードアベレージを正確に理解する4章
MySQLレプリケーション設計2章
リバースプロキシの役割と設計2章
CloudWatchでAWSを監視する5章

どんな人に向いているか

読者タイプおすすめ度
Webサービスの可用性設計を学びたい★★★★★
AWSを使っているがオンプレ/Linux基礎が薄い★★★★★
パフォーマンス問題の原因特定が苦手★★★★★
インフラ全体像をつかみたいアプリエンジニア★★★★☆

正直に言うと

2008年刊行のため、具体的なツール(Nagios・Puppet・IPVS・daemontools)は今の現場では別のものに置き換わっている。Nagios→Datadog、Puppet→Ansible/Terraform、IPVS→AWS ALBという読み替えが必要だ。

しかし「止まらないサービスをどう設計するか」という本質は変わっていない。特に4章のLinuxパフォーマンス分析の考え方は、今でもサーバのボトルネックを調査するときに直接使える。


まとめ

インフラを「なんとなく動いている」から「なぜ動くのかわかる」状態に引き上げてくれる一冊だ。

AWSを使っていてもこの本の内容は活きる。ELBのヘルスチェック・RDSのMulti-AZ・ElastiCacheのキャッシュ戦略は、本書が解説する原則の現代的な実装だからだ。