書評:『Web開発者のための大規模サービス技術入門〜データ構造、メモリ、OS、DB、サーバ/インフラ』伊藤直也・田中慎司/技術評論社WEB+DB PRESS plus

自分の仕事とは同じIT関係であってもある意味で真反対な世界でありながら、自分のプライベートではこのBlogやはてブを初め大変便利に使わせてもらっている『はてな』で行われている学生向けインターンシップをベースとした1冊。

  • 第1回:大規模Webサービスの開発オリエンテーション
  • 第2回:大規模データ処理入門
  • 第3回:OSのキャッシュと分散
  • 第4回:DBのスケールアウト戦略
  • 第5回:大規模データ処理[実践]入門
  • 第6回:[課題]圧縮プログラミング
  • 第7回:アルゴリズムの実用化
  • 第8回:[課題]はてなキーワードリンクの実装
  • 第9回:全文検索技術に挑戦
  • 第10回:[課題]全文検索エンジンの作成
  • 第11回:大規模データ処理を支えるサーバ/インフラ入門
  • 第12回:スケーラビリティの確保に必要な考え方
  • 第13回:冗長性の確保、システムの安定化
  • 第14回:効率向上作戦
  • 第15回:Webサービスとネットワーク
  • 特別編:いまどきのWebサービス構築に求められる実践技術

2008年に書評をUpしている『24時間/365日サーバ/インフラを支える技術〜スケーラビリティ、ハイパフォーマンス、省力運用』と合わせて読むとより読み応えがあるのはお約束(^_^;)。
はてなが取り組んでいるWebサービスとは異なり、主にエンタープライズ向けのインフラに関わる仕事をしていながらも、この本はとても興味深く読ませてもらった。インフラの仕事をしていると、ついインフラの設計や構築そのものが目的化してしまうけれども、そのインフラはシステムの基盤であり最終的には利用者にサービスを提供するために使われるものだ。だからこそ、ITインフラを使ってどのようにサービスが作り上げられているのかというテーマの本書は「自分が直接関わっていないレイヤーの話が多いからこそ」興味深く、読み応えがあった。オープンソースプロプライエタリだとか、エンタープライズ製品と自作サーバだとかの違いがたとえあったとしても、考え方やスタンスは共通している部分もあるし、何よりもインフラからサービスまでを自社開発・運用している人たちの経験に基づいたインターンシップが書籍化されているということで、本書は各レイヤーに携わっていない人(つまり私)にとってもちょうどよいわかりやすさと読み応えがあるレベルにまとめられていてよかった。
本書を読んで考えたことは、当たり前のことではあるのだけれども、サービスを優れたものにするためには、すべてのレイヤーを組み合わせて最適化を目指すことが最もよいやり方だということ。クラウドやら仮想化やらと、最近はどんどんとソフトウェア的に実装することに注目が集まっている気がしますが、それはあくまでもハードウェアが進化し、コストパフォーマンスが劇的に向上しているから。ソフトウェア的なチューニングは重要ですが、同時にハードウェアの進化によってカバーできる部分も多くありますし、SSDドライブの導入やメモリの増設などによって大幅にパフォーマンスが向上することもできる。ちょっとしたハードウェアの改善によって解決できるのであれば、ハードウェアによって問題を改善することも正しいやり方といえるわけです。このやり方は、ハードウェアからアプリケーションまで、すべてのレイヤーを垂直的に管理しているからこそできるやり方です。そういう意味で、クラウドや仮想化は柔軟性を手にするメリットを得ると同時に、最適化のための要素に制限を受け入れるということでもあるわけです。
プライベートクラウドクラウドではないと比定する意見が数多くありますが、ハードウェアからソフトウェアまでをトータルに管理・活用することによって、自社のITにおいて個別システム単位ではなく全体ITリソースとしての最適化を図るための基盤とするのであれば1つのやり方としては「あり」なのではないかと、本書を読んで考えたのでした。