May 29, 2006; 03:20 AM
The largest and most popular web applications of the moment, such as
Flickr, Friendster, MySpace, and Wikipedia, handle billions of database
queries per day, have huge datasets, and run on massive hardware
platforms made of commodity hardware. While Google might be the poster
child of huge applications, these other smaller (although still huge)
applications are becoming role models for the next generation of
applications, now labeled Web 2.0. With increased read/write
interactivity, network effects, and open APIs, this generation of web
application development promises to be quite interesting. But system
architects and programmers need help to design and build web
applications that will cope with the demands of this new era.
Building Scalable Web Sites
(Henderson, O'Reilly, US $39.99) can provide that help. Readers will
learn the tricks of the trade so they can build and design applications
that scale quickly--without all the high-priced headaches and
service-level agreements associated with enterprise application servers
and proprietary programming and database products. Culled from the
experience of Flickr's lead developer Cal Henderson, Building Scalable Web Sites offers techniques for creating fast sites that visitors will find a pleasure to use.
As Henderson says "With the reemergence of web applications as
viable businesses, the take up of Ajax, and the increased demand from
users to have massive real-time systems with lots of data, more and
more people are building large systems. Maybe they're starting out
small, but before long they're going to encounter a lot of the same
problems and limitations that we've seen time and again.
"Creating popular sites requires much more than fast hardware with
lots of memory and hard drive space," Henderson adds. "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."
Henderson observes that there are plenty of theory and reference
books about building web applications but very little literature about
the practicalities of building and maintaining anything large. In his
experience, however, companies that built applications on a large scale
all faced the same problems and eventually arrived at the same
conclusions and solutions. "It would appear that we've probably found
quite sensible solutions," he says. "This book is an attempt to collect
together a lot of the ideas that have come out through trial and error.
We've already made a lot of the mistakes, so why force everyone else to
make them again?"
Building Scalable Web Sites provides helpful ideas for the following, and much more:
Designing the software architecture underneath your application
Choosing and running a software development environment that will keep programmers, designers, and visitors happy
Keeping the data on which your application runs clean and secure
Presenting information to visitors from all over the world
Partitioning and distributing databases to support large datasets and simultaneous transactions
Providing services APIs and using services from other providers to increase your site's reach and capabilities
"I'm a realist and a pragmatist," Henderson admits. "While theory
and text-book procedures are useful, they are frequently impractical,
especially on the leading or bleeding edges of technology. Theoretical
knowledge is no substitute for practical experience, and every topic in
the book is based on my real-world experience with Flickr and other
large web applications."
Whether readers are planning a small site with hopes of growing big,
or already have a large system that needs maintenance, they'll find a
library of ideas for making things work in Building Scalable Web Sites.