達人が教える Web パフォーマンスチューニング 〜ISUCON から学ぶ高速化の実践

タツジンガオシエルウェブパフォーマンスチューニング イスコンカラマナブコウソクカノジッセン

達人が教える Web パフォーマンスチューニング 〜ISUCON から学ぶ高速化の実践の表紙
ソフトウェア工学 / 設計
著者:
藤原 俊一郎 / 馬場 俊彰 / 中西 建登 / 長野 雅広 / 金子 達哉 / 草野 翔(フジワラ シュンイチロウ / ババ トシアキ / ナカニシ ケント / ナガノ マサヒロ / カネコ タツヤ / クサノ ショウ)
出版社:
技術評論社
出版日:
2022年06月04日頃
ISBN:
9784297128463
在庫:
在庫あり
3.25(4 件 / 楽天ブックス)
中級者向け
Web パフォーマンスチューニングISUCON高速化ベンチマーク負荷テストWeb サービスパフォーマンス最適化システム設計プロファイリングコンテスト

なぜ注目されているか

総合65位 ↑ 45 ランクアップ 言及 26 件・うち記事 23 件を掲載
言及数
109位
出版前出版日03520222023202420252026

書籍紹介

LINE 株式会社が主催する Web サービスのパフォーマンスチューニングコンテスト、ISUCON (Iikanjini Speed Up Contest) で技術を競い合ってきた著者が Web サービス高速化のための考え方とノウハウをわかりやすく解説。
本書では、お題となる Web サービスをひとつ用意して、手を動かしながら高速化手法を学んでいきます。Web サービスがどのくらいの負荷に耐えられるか、どのくらいの負荷で不具合が起こるかを検証し、不具合が起こる原因を突き止め、改善していきます。また、負荷に対応する方法だけでなく、負荷を発生させる方法 (ベンチマーカーの作成方法) も紹介します。

本書を読んで、Web サービス高速化について理解を深め、性能を向上させましょう。

技書の森解説

Web サービスが遅いときに、どこから計測し、何を根拠に手を入れ、どこで止めるかを、実際のアプリを相手に一通り体験できる実践書が『達人が教える Web パフォーマンスチューニング』 (藤原 俊一郎、馬場 俊彰、中西 建登、長野 雅広、金子 達哉、草野 翔 著、技術評論社、2022 年 6 月発売) です。副題は「ISUCON から学ぶ高速化の実践」で、版元の紹介では、Web サービスのパフォーマンスチューニングを競うコンテスト ISUCON (Iikanjini Speed Up Contest) で技術を競い合ってきた著者が、高速化のための考え方とノウハウを解説すると案内されています。著者紹介によれば、著者には ISUCON の出題や問題作成を担当した経験を持つ人も含まれています。

private-isu を題材にした全 9 章と付録の構成

本書は、お題となる Web サービスを 1 つ用意し、手を動かしながら高速化の手法を学ぶ形をとります。題材は private-isu という Web サービスで、Chapter3 で登場します。Chapter1 のチューニングの基礎知識で、高速な Web サービスとは何か、負荷とキャパシティをどう考えるかを押さえたあと、Chapter2 でモニタリングを扱い、Chapter3 の基礎的な負荷試験、Chapter4 の k6 を使ったシナリオを持つ負荷試験とアクセスログの解析へ進みます。中盤は Chapter5 のデータベースのチューニング (インデックス、N+1 など)、Chapter6 の nginx を使ったリバースプロキシの利用、Chapter7 のキャッシュの活用、Chapter8 の押さえておきたい高速化手法 (静的ファイルの配信、HTTP ヘッダーによるクライアント側のキャッシュ、CDN など) と続き、Chapter9 で Linux のプロセス管理、ネットワーク、ディスク I/O、カーネルパラメーターといった OS の基礎知識とチューニングに至ります。付録 A は各章の技法を private-isu に適用する攻略の実践、付録 B は ISUCON のベンチマーカーが何をするのかと、その実装です。

計測から始め、ボトルネックを 1 つずつ外す

パフォーマンスチューニングで最も多い失敗は、遅い原因を推測で決めて、効果の小さい箇所に手を入れてしまうことです。Web サービスの応答時間は、リバースプロキシ、アプリケーション、データベース、OS とネットワークのどこか一番詰まっている箇所に支配されるため、そこを外さない限り他を速くしても全体はほとんど変わりません。本書がモニタリングと 負荷試験 を前半に置き、データベースや nginx の調整をその後に並べているのは、まず計測で詰まっている箇所を特定し、直したらもう一度測るという順序を身につけさせるためだと読めます。データベースの章で扱われる N+1 問題 は、一覧を表示するたびに要素の数だけ追加のクエリが発行される典型的な劣化で、データ量が少ない開発環境では気付きにくく、負荷をかけて初めて表面化しやすい問題です。また、負荷に対応する方法だけでなく負荷を発生させる側、つまりベンチマーカーの作り方まで扱う点は、試験の結果を正しく読むために、試験の道具の仕組みを知っておく意味があります。

Web アプリの構成と Linux の基礎がある人に向く理由

読み進めるには、Linux のコマンド操作と、Web サービスが リバースプロキシ、アプリケーションサーバー、データベースといった層で構成されることの基本的な理解があると、各章の手順を自分の環境で再現しやすくなります。版元は、Web サービスやアプリケーションの動作が重くて困っている人、ISUCON に出場してみたい人、出場したことはあるが良い成績を収められなかった人を想定読者に挙げています。一方で、特定のクラウドサービスのマネージド機能の設定手順や、フロントエンドの描画速度の改善を中心に知りたい人には、本書の重心はサーバー側にあるため目的がずれます。2022 年刊の本なので、ツールやミドルウェアの細かな設定値は手元のバージョンの公式文書と照らし合わせて読むのが安全です。

それでも、計測して詰まりを見つけ、直して測り直すという考え方は道具が変わっても古びません。本番のサービスが遅くて原因の当たりを付けられずにいるバックエンドの開発者や、ISUCON に挑戦して何から手を付けるべきか分からなかった人にとって、1 つのアプリを相手に計測から OS の調整までを順に通せる本書は、性能改善を勘ではなく手順で進められるようになるための一冊として、元を取りやすい選択です。

言及した記事 (23 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: