あらすじ
サーバを単に増やすだけでは解決しない(?!)。大規模サービスの難所は,サービスの成長に伴い巨大化するデータの処理です。データ量の変化は緩やかには推移せず,突然目の前に現れる大規模化の壁。そこで求められるのは,いかにして「データを小さく持つか」「複数サーバに分散させるか」「最小限の回数で読み取るか」といった地道な取り組みの積み上げです。
本書では Web開発における大規模サービスの一つの関門,数十~数百ギガバイトのテキストデータを想定し,データ構造,メモリ,OS,DB,サーバ/インフラと広範なレイヤに及ぶ攻略ポイントをまとめて解説します。はてなインターンシップの初書籍化。
感情タグBEST3
Posted by ブクログ
実務的なコードとかは書かれていない。大規模なサービスを構築するときのノウハウについて書かれている。
実践に移すことはないが興味があったので。
1回 大規模Webサービスの開発オリエンテーション
どの程度が大規模Webサービスなのか、あと概要。
2回 大規模データ処理入門
はてなブックマークを例にしたデータ処理の入門
データをメモリに載せることができないので遅くなる。計測してボトムネックになっているところを探して対策する。
3回 OSのキャッシュと分散
OSのキャッシュ機構をつかう。サーバーを複数持って分散させる。
4回 DBのスケールアウト戦略
MySQLの分散ノウハウ
5回 大規模データ処理[実践]入門
省略
6回 [課題]圧縮プログラミング
省略
7回 アルゴリズムの実用化
アルゴリズムの選択は大事。例Suffyx Array(接尾辞書配列)Trie(トライ木)
8回 [課題]はてなキーワードリンクの実装
省略
9回 全文検索技術に挑戦
grep型、Suffix型、転置インデックス法
10回 [課題]全文検索エンジンの作成
省略
11回 大規模データ処理を支えるサーバ/インフラ入門
クラウド、自前どっち?
12回 スケーラビリティの確保に必要な考え方
まずは負荷を計測すること
13回 冗長性の確保、システムの安定性
基本サーバー台数を増やす。CPUの稼働率に余裕を持たせる。
14回 効率向上作戦
冗長性を高めると稼働率が落ちる。そこで仮想化技術を使う(VMware,Virtual PC,Parallels,Xen)
15回 Webサービスとネットワーク
ネットワークに階層構造を持たせる
特別編 今どきのWebサービス構築に求められる実践技術
省略
2010年ごろの本ですでにこれだけの対策が必要なんですね。今頃はどうやっているのでしょう?
Posted by ブクログ
はてなのインターンシップでの教育、講義内容をベースに、大規模サービス技術の解説を行っている本。
大規模サービスというと海外が先行しているイメージですが、この本の内容も十分すごくて、大規模サービスを提供するシステムを構築する際の様々な工夫、ノウハウを知ることが出来ます。といいますか、ここまで情報をまとめて本として出せるのがすごいですね。
工夫点としては、メモリ、キャッシュの有効活用といった基礎的だけどよく効く内容から、MySQL のインデックスの効果、スケールアウト戦略、圧縮や計算量のオーダを落とす工夫など。著者たちが実際に大規模システムを構築、運用してきた経験、苦労から得られたノウハウなので、生々しいです。実際にこうやったらこうなった、だからこういう教訓が得られたという話題が多くて、試行錯誤の過程も見られるのが読んでいて楽しいですね。
また、アルゴリズムの知識や選択に関する話題も多めです。検索エンジンの実装についても載せられており、知見に富んだ内容となっています。実装の前の章で、転置インデックス、形態素解析、再現率と適合率といった解説から入るので、理解しやすかったです。
更に、終盤に運用面の情報として、スケーラビリティや可用性を高める工夫、稼動監視の効率化や安価で高速なハードの検討といったインフラ面の話題も載せられています。
Posted by ブクログ
WEBサービスの環境構築とか設定方法といったハウツー本ではない。
大量データ、大量アクセスを捌け、且つ柔軟に拡張可能なシステムを設計するのに必要な考え方、ノウハウが盛りだくさん。
↑のために情報系の大学でやるようなコンピュータの基本動作原理等も解説してくれている良書だと思う。
アプリケーション開発者向けに書かれている(はてなの新人研修講義が元ネタらしい)けどインフラエンジニアが読んでも非常に為になる。
コンピュータの基本動作原理については
小田圭二さんのこれ↓と一緒に読むと更に分かりやすいかも。
「絵で見てわかるOS/ストレージ/ネットワーク データベースはこう使っている」
Posted by ブクログ
まさに大規模システムならではの工夫や課題を列挙した一冊。単なるハードウェアのスケールアップだけではなくて、ちゃんと高速化も考えてどうするべきかについて、ハードウェア、システム構成、アプリケーションアルゴリズムごとに分かりやすく工夫を紹介しています。単なるありきたりのシステム設計を紹介するのではなくて、大規模ならではの特性を踏まえて対策を紹介しているので、非常に分かりやすいです。特に大規模システムに携わっている人なら必携です。
Posted by ブクログ
良い本です。
広くカバーしているので、深くは追求する箇所は少ないです。
特にインフラの方はサーバ・インフラを支える技術を参照する場面が多かった印象です。
大規模データを扱うときには今まで気にしなかった箇所まで気にしなければならず、どこを注意したらいいかを教えてくれる本でした。
Posted by ブクログ
実際のサービス開発・運営経験から書された良書。
最先端でなかなか情報がない大規模webサービスについて、まとめて書かれており、非常に参考になりました。
Posted by ブクログ
読み始め1/4で良いと響いた点
・OSの動作原理を知るということが、負荷分散の学習に重要
・学ぶべきは、そもそもミドルウェアが動いているOSにあるというのが個人的な見解
Posted by ブクログ
Webサービスのスケーラビリティを確保するための方法論が書かれた本。OSやデータベースの内容が中心。はてなの運用経験を基に書かれており、実際の業務の具体的な話が多くて勉強になった。個人でプログラミングしていても経験出来ないことだと思うので読んでおいて損は無い。
Posted by ブクログ
大規模サイトの運用のノウハウを紹介。
はてなでの実情をたくさん挙げているので参考になる。
案外普通のやり方であったりひたすら泥臭いことをしている所も多く、特別な存在では無いと知らされる。
Posted by ブクログ
だいぶ前(半年~1年ほど)に読んだ。実家帰りの新幹線の中で読んだのだけれど、面白くて1時間ほどでサクッと読んだ後、2度3度と読んだことを覚えている。といってもすぐに仕事で役に立った内容といえばあまり無かったかも。でもオススメ。読むべき。
Posted by ブクログ
いいです。基礎を立ち返って勉強しなおすのにちょうどいいです。
インターンの学生向けの講義をベースにしているので分かりやすいですし。
入り口、復習にちょうどいい読みやすさです。
Posted by ブクログ
Web開発者のための大規模サービス技術入門
データ構造、メモリ、OS、DB、サーバ/インフラ
著:伊藤 直也
著:田中 慎司
Webシステムを、大規模化、いわゆるスケールアウト、スケールアップしていくと、小規模では顕在化しなかった様々な問題が起きてくる。それをどう解決するかを解いた指南書が本書である
スケールアウトとは、システムの台数を増やすことによって全体システムの性能を維持する方法
スケールアップとは、1台1台のシステムを高性能化していくことによって性能を改善する方法
大規模化することによって生じる不具合
・検索や表示の速度が遅くなる
・DBを分散させると、データの同期がとれなくなってくる
・系全体が大規模化すると、ネットワーク通信に遅延が生じる
・サーバが100台以上になると、どのサーバーが何の役割をしているのかわからなくなってくる
・開発や運用が大変、一人ではどうにもならない
■開発 言語、DB、ミドルウエア、フレームワークを統一する
■大規模データ処理 メモリとディスクの速度差、転送速度、バス、OSチューニング
■負荷分散 CPU負荷、I/O負荷
■大規模データ OSキャッシュ、分散RDB,アルゴリズムとデータ構造
■DBスケールアウト インデックス、レプリケーション、探索アルゴリズム
■インフラ クラウド、負荷の把握、チューニング、ネットワーク
■運用 冗長性の確保、システムの安定化、Hadoop
目次
本書について
本書の構成
講義
第1回 大規模Webサービスの開発オリエンテーション
第2回 大規模データ処理入門
第3回 OSのキャッシュと分散
第4回 DBのスケールアウト戦略
第5回 大規模データ処理“実践”入門
第6回 “課題”圧縮プログラミング
第7回 アルゴリズムの実用化
第8回 “課題”はてなキーワードリンクの実装
第9回 全文検索技術に挑戦
第10回 “課題”全文検索エンジンの作成
第11回 大規模データ処理を支えるサーバ/インフラ入門
第12回 スケーラビリティの確保に必要な考え方
第13回 冗長性の確保、システムの安定化
第14回 効率向上作戦
第15回 Webサービスとネットワーク
特別編 いまどきのWebサービス構築に求められる実践技術
索引
ISBN:9784774143071
出版社:技術評論社
判型:A5
ページ数:352ページ
定価:2580円(本体)
2010年08月05日 初版第1刷発行
Posted by ブクログ
もともとはてなのインターシップ講義の内容をベースしている本著。基礎的な知識を踏まえつつも、より実践に近い内容が多いなとおもいました。大規模サービスというとインフラに近いレベルの話が多いのかと思っていましたが、アルゴリズムの項も大きくページが取られていたのが印象に残りました。
Posted by ブクログ
著者の大規模Webサービス(Mobage)でのDBの運用ノウハウが詰まっている。運用のノウハウを広く浅く学べるので、大規模サービスで動くDBの設計、開発、運用をするなら一読する価値がある。
Posted by ブクログ
はてなのインフラ担当者が「どうやって大量のデータをさばくインフラを構築するか」を主題に様々なアプローチを解説してくれます。
もともとインターン生を対象とした講義を書籍に焼き直したものらしく、僕のような非エンジニアでも十分に理解することができました。
DBサーバとウェブサーバのスケールアップ・スケールアウトの違いや、アルゴリズム・キャッシュ・インデックス・冗長化など、「基本情報で何となく知ってたけどよく分からなかったこと」を知識として意味のあるレベルにまで持ってこれたと思います。
良書でした。
Posted by ブクログ
エンタープライズシステムの仕事をしているので、WEBサービスのシステムの難しさが具体的にはよくわかっていなかったのですが、少し理解することができました。エンタープライズシステムより、創意工夫が許される意味では、技術力の柔軟性が試される分野だと思いました。
Posted by ブクログ
「はてなのインターンで行われる大規模技術の紹介」
メモリとディスクのスピードの違い、キャッシュの仕組み、 APはスケールするけどDBはしない、という基礎的な所から、 イマドキなベイジアンフィルタでのカテゴライズ、パーティションの「落とし所」どころまで幅広-く紹介。
ブックマークとかそれぞれのサービスのインフラ規模を惜しげもなく紹介しちゃってたりして、結構あけっぴろげだなあと感心。
Posted by ブクログ
実際の仕事とは関係ないのでさらっと読んだ.ノウハウ的なことが多数書かれていて,Web屋さんのお仕事概要を知るにはいいかと.
てか,ACオートマトンとかSuffixArray忘れててヤバす...
Posted by ブクログ
はてなのインターン向けの講義録。内容は、Web インフラの管理方法、スケールアウトを考慮したアーキテクチャ、検索をメインにしたアルゴリズム。
全体として基本的なことだとは思うが、検索に関しては十分に知らないこともあったので、その点では参考になった。VBCode による効率的な数字エンコード、Trie 構造にリンクを付けることで探索を効率化する AC 法などが参考になった。このあたりでは、課題もついているので、手を動かしてみると面白い。
Posted by ブクログ
大規模なウェブサービスを運営するに当たって必要な事柄が簡潔にまとまっており読みやすい。日本国内のほぼ全てのウェブサービスがこの書籍で想定している規模に入るだろう。ビギナー向けの本ではないので、一歩先を目指す中級者、復習したい上級者にオススメ出来そう。
Posted by ブクログ
はてなでのインターン向け講習内容を元にした(日本での)大規模DC運営に関して書かれている。
WEBアプリケーションの負荷分散や冗長化について興味があったり実務に関わっているのであれば読んでみるといいのではないでしょうか。
かっこ書き(日本での)大規模としたのは、アメリカではGoogleは言うに及ばずはてなの運用内容を遙かに超えたデータセンター運営会社が数多くあり、そのレベルの運用がはてなではできていないからです。(する必要もないのですが。)
Posted by ブクログ
「はてな」を例に、サービスの提供拡大とともにシステムインフラの構築・拡張の変遷や、大規模サービスならではの課題(大規模データ、負荷分散、冗長性)に対する実際の対応などを知ることができる貴重な内容。
Posted by ブクログ
大規模なシステム組むときに読んでおくといい本。
だけど、厚すぎて読む気が萎える。
やっと読んでもあんまり頭に入ってなかった…
そんな仲間には薄い・イラスト多い・色多い!な本をオススメする。
つまりこれば逆の本。