2010年7月20日火曜日

本の紹介

お久しぶりです。

今日は本の紹介をします。

大規模サービス技術入門という本を最近読みました。
この本は、はてなのインターンシップで学生向けに行っている講義+演習を本にしたものです。学生向けというだけあって、システムの設計・運用上の概要(の例)がわかりやすく説明されています。
決して深い所まで議論している本ではありませんが、サーバ設計の考え方からAPの実装まで説明されていて、「システム」について学ぶ上で良い本だと思います。


システムの中で、APサーバやDBサーバを多重化・冗長化することではどういった効果が見込めるのか?
システムの負荷を分析して、サーバのスケールアップ/スケールアウトを考える上でのポイントは?どんな時にメモリ増設が有効で、どんな時にサーバ多重化が有効か?
何億ものドキュメントから全文検索をする際の実装上のポイントは?(どういったポリシーで実装すればユーザ満足度につながるか?)そのためのアルゴリズムは?
などなど。



講義で学んだ知識が、システム開発・運用の現場でどう役に立つのか(自分の知識が実際のシステムの中のどの部分と結びつくのか)を知るための良い読み物だと思います。

以下もくじ。

  • 第1回 大規模Webサービスの開発オリエンテーション―全体像を把握する
    • Lesson 0 本書の源 ―本書で説明すること,しないこと
    • Lesson 1 大規模なサービスと小規模なサービス
    • Lesson 2 成長し続けるサービスと,大規模化の壁
    • Lesson 3 サービス開発の現場
  • 第2回 大規模データ処理入門 ―メモリとディスク,Webアプリケーションと負荷
    • Lesson 4 はてなブックマークのデータ規模 ―データが大きいと処理に時間がかかる
    • Lesson 5 大規模データ処理の難所 ―メモリとディスク
    • Lesson 6 スケーリングの要所
    • Lesson 7 大規模データを扱うための基礎知識
  • 第3回 OSのキャッシュと分散 ―大きなデータを効率良く扱うしくみ
    • Lesson 8 OSのキャッシュ機構
    • Lesson 9 I/O負荷の軽減策
    • Lesson 10 局所性を活かす分散
  • 第4回 DBのスケールアウト戦略 ―分散を考慮したMySQLの運用
    • Lesson 11 インデックスを正しく運用する ―分散を考慮したMySQL運用の大前提
    • Lesson 12 MySQLの分散 ―スケーリング前提のシステム設計
    • Lesson 13 MySQLのスケールアウトとパーティショニング
  • 第5回 大規模データ処理[実践]入門 ―アプリケーション開発の勘所
    • Lesson 14 用途特化型インデクシング ―大規模データを捌く
    • Lesson 15 理論と実践の両側から取り組む
  • 第6回 [課題]圧縮プログラミング ―データサイズ,I/O高速化との関係を意識する
    • Lesson 16 [課題]整数データをコンパクトに持つ
    • Lesson 17 VB Codeと速度感覚
    • Lesson 18 課題の詳細と回答例
  • 第7回 アルゴリズムの実用化 ―身近な例で見る理論・研究の実践投入
    • Lesson 19 アルゴリズムと評価
    • Lesson 20 はてなダイアリーのキーワードリンク
    • Lesson 21 はてなブックマークの記事カテゴライズ
  • 第8回 [課題]はてなキーワードリンクの実装 ―応用への道筋を知る
    • Lesson 22 [課題]はてなキーワードリンクを作る
    • Lesson 23 回答例と考え方
  • 第9回 全文検索技術に挑戦 ―大規模データ処理のノウハウ満載
    • Lesson 24 全文検索技術の応用範囲
    • Lesson 25 検索システムのアーキテクチャ
    • Lesson 26 検索エンジンの内部構造
  • 第10回 [課題]全文検索エンジンの作成 ―基本部分,作り込み,速度と精度の追求
    • Lesson 27 [課題]はてなブックマーク全文検索を作る
    • Lesson 28 回答例と考え方
  • 第11回 大規模データ処理を支えるサーバ/インフラ入門 ―Webサービスのバックエンド
    • Lesson 29 エンタープライズ vs. Webサービス
    • Lesson 30 クラウドvs.自前インフラ
  • 第12回 スケーラビリティの確保に必要な考え方 ―規模の増大とシステムの拡張
    • Lesson 31 レイヤとスケーラビリティ
    • Lesson 32 負荷の把握,チューニング
  • 第13回 冗長性の確保,システムの安定化 ―ほぼ100%の稼動率を実現するしくみ
    • Lesson 33 冗長性の確保
    • Lesson 34 システムの安定化
    • Lesson 35 システムの安定化対策
  • 第14回 効率向上作戦 ―ハードウェアのリソースの使用率を上げる
    • Lesson 36 仮想化技術
    • Lesson 37 ハードウェアと効率向上 ―低コストを実現する要素技術
  • 第15回 Webサービスとネットワーク ―ネットワークで見えてくるサービスの成長
    • Lesson 38 ネットワークの分岐点
    • Lesson 39 さらなる上限へ
  • 特別編 いまどきのWebサービス構築に求められる実践技術 ―大規模サービスに対応するために
    • Special Lesson 1 ジョブキューシステム ―TheSchwartz、 Gearman
    • Special Lesson 2 ストレージの選択 ―RDBMSかkey-valueストアか
    • Special Lesson 3 キャッシュシステム ―Squid,Varnish
    • Special Lesson 4 計算クラスタ ―Hadoop

Nexus One販売終了

Nexus Oneが手に入らなくなるっぽい。
http://japan.cnet.com/news/service/story/0,3800104747,20417034,00.htm
もう2台ほど買っておこうかな。

SunSPOTとか面白いものはどんどん手に入らなくなってきてしまう。

2010年7月14日水曜日

App Inventor for Android

App Inventor for Androidなんてものが、どんどん出てきたら、もうコーディングなんてする必要ないかな。
確かに簡単なものだったらできそう。
XMLで書けるauのケータイカスタムキットなんてものあったけど、まったく流行ってなさそうだし、やっぱコーディングできないとね。