Nygard, Michael T.
Pragmatic Bookshelf 2007
Date finished: 2008-11-22
Once a web site's functionality is complete and correct, the next problem is usually trying to keep the site up in the face of user demand. Under real-world usage, web sites manifest novel stress points: the quick-and-easy method implementation that turns out to be O(n^2) or worse; the query that happens to do a full table scan; the database connection pool that becomes a contention point; etc. Most web developers will have a few war stories in this vein.
The author has experience in large web sites and business systems, integrating a number of different databases through different interfaces. This book discusses techniques and design patterns for implementing sites that are more resilient. There are four major topics covered: designing for stability by minimizing failure propagation; increasing capacity and avoiding antipatterns that decrease it; designing your networking and system configuration; building transparency and debuggability into your application.
Most of the discussion seems to be about sites much larger than the ones I usually work on, sites that have to interface between larger systems and are therefore vulnerable when one of those systems is down. All of the code examples are Java, and some of the suggestions are to use a particular Java class or library, but there's still material relevant to Python or Ruby developers. Probably not very useful as a reference, but certainly worth a read for anyone who's running a business web site or application.
%T Release It! %S Design and Deploy Production-Ready Software %A Nygard, Michael T. %K computing %G ISBN 0-9787392-1-3 %D 2007 %@ 2008-11-22 %I Pragmatic Bookshelf %P 334pp