ISBN 9784774143071

Web開発者のための大規模サービス技術入門 : データ構造、メモリ、OS、DB、サーバ/インフラ

Web開発者のための大規模サービス技術入門 : データ構造、メモリ、OS、DB、サーバ/インフラ
出版社
技術評論社
刊行
2010-08

概要

OS・DB・インフラの原理から大規模Webサービスの設計を理解する

想定読者

Webエンジニア2〜5年目で、トラフィック増加やサーバ負荷という実務課題に初めて直面し、OS・データベース・検索エンジンの動作原理を体系的に整理したい人

こんな人には向いていない

  • すでに大規模分散システムの設計・運用経験を持つ上級者には各トピックの深さが物足りない(本書はあくまで入門・全体像の把握に特化している)
  • コンテナ・クラウドネイティブを前提とした現代的インフラ設計を求める人には、2010年出版ゆえの記述の古さが障壁になる
  • プログラミング言語そのものをゼロから学びたい段階の人には前提知識が不足する

この本で身につくこと

  • CPUやメモリ、OSのプロセス・スレッド管理がWebサービスのスループットとレイテンシに与える影響を説明できる
  • DBのレプリケーションとシャーディングの基本原理と、それぞれの適用判断を理解できる
  • 転置インデックスを使った検索エンジンのデータ構造と構築手順を設計視点で把握できる
  • サーバ負荷をI/Oバウンド・CPUバウンドの観点で切り分け、ボトルネックの所在を特定するアプローチを身につける
  • 大規模サービスのインフラ設計で考慮すべきスケールアウト・キャッシュ・ロードバランシングの基礎的な判断軸を説明できる

ハイライト(外部からの言及)

OSや計算機の動作原理、DBの分散方法、実践的なアルゴリズムをシステムに組み込む実装、大規模データを料理する検索エンジンのしくみ、システム全体を見渡すためのインフラ設計の知識 — 出典

本書がカバーする領域の幅広さを端的に示す記述。単一技術スタックではなくサービス横断的な視点が本書の骨格であることが伝わる

データ量の変化は緩やかには推移せず、突然目の前に現れる大規模化の壁。そこで求められるのは、いかにして「データを小さく持つか」「複数サーバに分散させるか」「最小限の回数で読み取るか」といった地道な取り組みの積み上げです。 — 出典

LAMP負荷増大の実務課題を扱う記事で本書紹介文として引用された一節。「サーバを増やすだけでは解決しない」という本書の核心的問題提起を端的に示しており、既存ハイライトの「何を学ぶか」に対して「なぜこの本が必要か」という購入動機の角度を補う

DBサーバーをそのままスケールアウトしても、メモリにデータのらないので遅いまま効果あまりない。メモリーを増やすか、データを分割してスケールアウトする。 — 出典

読了後の覚書記事から抽出した読者の手元メモ。「スケールアウト=解決」という直感的誤解をpage cache・メモリ原理の説明が覆すという、第3〜4章固有の実務インパクトを読者自身の言葉で示しており、前2件とは異なる「特定セクションの気づき」角度を担う

章立て

第1章 大規模Webサービスの開発オリエンテーション

本書の出発点。はてな(2010 年時点)のサービス規模と問題領域を全体俯瞰

第2章 大規模データ処理入門

メモリとディスクの本質的な速度差。後続章のチューニング判断の根拠となる基礎章

第3章 OSのキャッシュと分散

page cache の動作原理。データを RAM に乗せる戦略の理論的背景

第4章 DBのスケールアウト戦略

MySQL レプリケーションと参照分散の実装パターン。NoSQL 以前の知見だが現在も有効

第5章 大規模データ処理[実践]入門

前章の理論を実際のコード・測定ツールに落とし込む橋渡し章。開発環境を手元に用意した上で読むと演習の定着が速く、後続の課題章への準備にもなる。

第6章 [課題]圧縮プログラミング

I/O bound 改善の実装演習

第7章 アルゴリズムの実用化

TRIE / Aho-Corasick 法など、大規模処理特有のアルゴリズム実装

第8章 [課題]はてなキーワードリンクの実装

TRIE 構造と文字列マッチングを自分のコードで実装する演習。完走すると第 7 章のアルゴリズム理解が「動く知識」に転換する学習進捗の指標。

第9章 全文検索技術に挑戦

転置インデックスを自作。Elasticsearch / Solr 内部理解の前提

第10章 [課題]全文検索エンジンの作成

転置インデックスを実際に構築する本書最大の実装課題。完走できれば Elasticsearch の動作原理を自分の言葉で説明できる水準に達する学習進捗の指標。

第11章 大規模データ処理を支えるサーバ/インフラ入門

ここからインフラ視点に移行する。前半の OS・データ構造の知識がサーバ構成の判断にどう接続するかが明示される、本書後半の起点章。

第12章 スケーラビリティの確保に必要な考え方

スケールアウト・冗長化の設計判断を原則レベルで整理する。クラウド時代でも変わらない原則論が中心のため 2010 年出版の古さが最も気にならない章。

第13章 冗長性の確保、システムの安定化

本書 SRE 観点の章。ほぼ 100% の稼働率を実現する仕組み(冗長化 / 故障想定)を扱う

第14章 効率向上作戦

CPU・I/O のプロファイリングから改善策を絞り込む判断フローを体系化する。「詳解システムパフォーマンス」読前の準備章としても機能する。

第15章 Webサービスとネットワーク

TCP/IP・DNS・CDN がサービスの応答速度と可用性に与える影響を概説する締め括り章。深さは入門レベルで、より詳しくはネットワーク専門書へ委ねる位置づけ。

関連記事 / 参考情報

学習のヒント

  • OS・計算機の動作原理を扱う前半章は抽象的に感じやすい。後半のインフラ設計・DB分散の章から読み始め、「なぜそうなるのか」という疑問が湧いた段階で前半に戻ると理解が定着しやすい
  • 2010年出版のため、MySQLシャーディングやLAMP構成の事例は現在のマネージドDB・コンテナ環境とは乖離がある。「特定技術の選択肢」ではなく「設計の判断軸」として読む姿勢が本書の価値を最大化する
  • 検索エンジンの章(転置インデックスの実装)は、ElasticsearchやOpenSearchの内部構造を理解する前哨戦として機能する。読後に公式ドキュメントのアーキテクチャ解説と照合すると接続が鮮明になる
  • サーバ負荷分析の章は、topやiostatを実際に手元のLinux環境で動かしながら照合読みすると体験知として定着しやすい

前提知識

  • LinuxコマンドラインとHTTPリクエスト/レスポンスの基礎的な理解
  • RDBMSを使ったWebアプリケーション開発の実装経験(SQL・トランザクションの概念を含む)
  • 1つ以上のWebフレームワークを使って本番相当のサービスを動かした実務経験

次に読む本

詳解システムパフォーマンス

本書で概説するI/O・CPU・OSの観点を、Linuxの実測ツール群(perf, strace, BPFトレーシング等)を使って実践レベルまで掘り下げるステップとして最適

SREサイトリライアビリティエンジニアリング

本書はレプリケーション・キャッシュ・ロードバランシングなどインフラ設計の原理を体系化する入門だが、SRE本はその原理を組織・運用プロセス(SLO定義・エラーバジェット・オンコール体制)に落とし込む方法論を扱う。設計の「なぜ」を押さえた後に運用の「どう」へ進む順序として合理的。

データ指向アプリケーションデザイン

本書が入門演習レベルで扱うDB分散・レプリケーション・転置インデックスの各テーマを、CAP定理・強整合性・ストリーム処理まで含めた現代の分散システム設計原理として深掘りできる。本書で得た実装直感と本格理論を接続する次のステップとして位置づけられる。

出版社による内容紹介

大規模サービスを開発・運用する技術者のための入門書。OSや計算機の動作原理、DBの分散方法、実践的なアルゴリズムをシステムに組み込む実装、大規模データを料理する検索エンジンのしくみ、システム全体を見渡すためのインフラ設計の知識と、多方面にわたります。

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。