Building Scalable Web Sites (英語) ペーパーバック – 2006/6/15
Kindle 端末は必要ありません。無料 Kindle アプリのいずれかをダウンロードすると、スマートフォン、タブレットPCで Kindle 本をお読みいただけます。
『Building Scalable Web Sites』は、ユーザーに最後まで楽しく使ってもらえるサイトを作るための数多くの技術を検討している。Flickr.comの開発者カル・ヘンダーソンが、多数のビジターが楽しめるサイトの作り方を説明する。ヘンダーソンは、単なるスピードを超えた技術を検討し、開発者との関係を調整し、国際的なユーザーをサポートし、メールからSOAPやRSSやAPIといったAjaxに基づくウェブアプリケーションまで、さまざまなサービスを導入する方法を考える。
本書は、バックエンドのスケーリング、構築、フェールオーバについて知っているべき秘密をすべて解き明かし、ウェブサイトが大量のリクエストに応えられるようにしてくれる。Linux、Apache、MySQL、PHPなどのいわば「貧しい人のウェブ技術」や他のスクリプト言語を、有料の企業向けウェブ技術に匹敵するようスケーリングする方法が学べる。本の最終部では、ウェブアプリケーションを、イベントモニタや長期統計ソフトと同時に機能させるテクニックが説明されている。動的なサイトをこれから初めて立ち上げようとしている人には、『Building Scalable Web Sites』は理想的な本だ。中級以上の開発者にも、スケーリング可能なアプリケーションに包括的なアプローチをすることのコストパフォーマンスを知るのに役立つうえ、便利な参考書として自由に参照して使える。
Learn the tricks of the trade so you can build and architect applications that scale quickly--without all the high-priced headaches and service-level agreements associated with enterprise app servers and proprietary programming and database products. Culled from the experience of the Flickr.com lead developer, Building Scalable Web Sites offers techniques for creating fast sites that your visitors will find a pleasure to use.
Creating popular sites requires much more than fast hardware with lots of memory and hard drive space. It requires thinking about how to grow over time, how to make the same resources accessible to audiences with different expectations, and how to have a team of developers work on a site without creating new problems for visitors and for each other.
Presenting information to visitors from all over the world
Integrating email with your web applications
Planning hardware purchases and hosting options to have as much as you need without breaking your wallet
Partitioning and distributing databases to support large datasets and simultaneous transactions
Monitoring your applications to find and clear bottlenecks
* Providing services APIs and using services from other providers to increase your site's reach and capabilities
Whether you're starting a small web site with hopes of growing big or you already have a large system that needs maintenance, you'll find Building Scalable Web Sites to be a library of ideas for making things work.
I give it 2 stars not because it is a bad book but because I was tricked into thinking it was going to be useful as a scalable website builder. What you should do is look at the table of contents and research those topics and not bother reading this book.
The book is more of an overview of the topics you need to consider when building scalable web sites. For example, if you are building a scalable website and the powers that be put someone who knows nothing about web sites in charge of managing you, this really is the perfect book to give to your new manager. Your new manager will get a clue, but your new manager won't know a thing about HOW to build anything, but will know ABOUT what is being built.
The thing that got me is the first 188 pages of the book, just doesn't seem all that useful. On page 1 there is a definition of "What Is a Web Application", I'd estimate a book like this should assume you know what it is (it even suggests you do know what it is), but probably should save space and not even bother writing about it.
Some sections and my summaries:
Layered Software Architecture - could summarize into: DB layer, app code, html, css on top
Layered Technologies - get appropriate book on actual topic such as DB book, and use a template language
Getting from A to B - separate program from markup, use a template system
Hardware Platforms - dedicated, co-located, self hosting, space/power consumption, networking
It took 26 pages to get through all of that. Indeed they are all very important topics (for the web builder and your new manager to know), but as a builder (if you've gone past the first "hello world" website) you should really know that you'll be using a database and writing web app code and using html and css. You should already know that in order to run a website, you'll need to run it on a computer which takes up space and power and needs to be networked. It's good to know that dedicated/colo hosting exists, but no need to write so much about it.
It's almost like a book titled, "Building huge skyscrapers" and then goes on to say you are going to need construction equipment, concrete and steel. You'd hope the person interested in that book has already built houses or commercial buildings and has used construction equipment and concrete and steel already. I'm probably being too harsh here, but that's the jist of it.
My "favorite" chapter is 3, "Development Environments". Use source control, have a good build system, track bugs. Those are very good rules, but to have 19 pages on source control AND 3 of those pages on RCS/CVS, it's like, "Are you kidding me? Isn't this book about building scalable websites?". Nowadays people probably have never even heard of RCS... (the book is a bit dated though).
Chapter 9, Scaling Web Applications has some stuff about load balancing and database replication/master-slave info, but after reading the chapter, you still won't have the first clue of what load balancing system to use or how to setup database replication or clustering... but you'll know that load balancing and database replications exists and know a little about them.
The actual best chapter is chapter 10, Statics, Monitoring and Alerting, there is information there that is useful. For your own sake though, look at the Nagios, Zabbix, etc monitoring packages and that'll get you started in the right direction.
For the reviews which say this book is technical, I couldn't disagree more, if it was actually technical I wouldn't be so annoyed with this book. If it was technical, then you'd know HOW to do something after reading it...
In conclusion, I think it's a good overview on the topics involved, but it's not really about building anything, it's about some topics you need to know that are involved with building a scalable website.
I was looking for a book with more wisdom on the software development side and was disappointed that it didn't really focus much on that part of building web sites. Despite it not being what I was looking for in particular, I'm giving it four stars because the information and presentation in the book were very useful.