p. I had the pleasure of meeting Theo Schlossnagle at OSCON 2006. He gave me 30 minutes to peek inside his brain and do an interview. 30 minutes just was not enough time. So when I received his latest book in the mail I was excited. Finally a chance to get more in-depth on some of the topics we covered. I’ve taken the time to collect my thoughts for you here so you can decide whether this book is a good one for you.
p. First, from a reviewer’s point of view, I hated this book. It is the absolutely worst kind of technical book to try and review; one that is so packed with useful information that you really can’t skim through it and pull out a couple of quotes and be done with it. This book is so packed with information I find fascinating that I ended up reading about 75% of it.
p. The book starts off by skipping the obligatory “Brief History of the Internet”. It’s totally missing. It’s a palpable void compared to others technical books I’ve read in the past five years. Once Theo has thoroughly skipped over this topic, he lays the foundation for the rest of the book by defining terms he thinks you’ll need to you might misunderstand.
p. Theo believes that the word ‘scalable’ has been hijacked by those who really mean “upwardly scalable”. He spends the first chapter explaining that the term scalable can refer to scaling a system up or down and that for a system to be considered scalable it must move both ways. It sounds silly when you first think about it but the way he lays it out you really begin to grasp that it is an important concept. Also, this chapter is a test. If, at the end of this chapter, you really don’t get what he’s talking about then this book probably isn’t going to hold much for you.
p. From that launching point, Theo goes on to explain the different ways that systems can scale. He defines terms like “Mission Critical” in clear terms and helps the reader determine if the systems they are responsible for are truly mission critical or if they are “Business Critical”.
p. He spends several very good chapters discussing “High Availability” and “Load Balancing”. He explains why these are not the same. He delves into the realities (financial and maintenance) of building highly available systems. His explanations are clear and he scatters real-world stories and illustrations throughout the discussion to help clarify points. His chapters on the 5 different types of caches and which ones are right for different types of situations are packed full on knowledge.
p. To me, however, the best section in the book was Chapter 8 “Distributed Databases are Easy, Just Read the Fine Print”. I’ve worked on and administered databases and database servers for most of my adult life. Even so, I was able to come away with that chapter with many new ideas on how things should operate and how I can improve reliability of my existing projects. Again, his concise definitions of relevant different terms, (ACID, Mater-Master, Master-Slave, Two Phase Commit, etc.) makes it easy to follow some difficult concepts. That chapter alone was worth the $49.95 price tag.
p. Wrapping it up, the only downside to this book that I found is the tone. If you’ve never seen Theo speak in person, it’s easy to take the tone of the book for demanding. In reality, Theo’s style is simply “matter-of-fact” but in print that can come across as arrogant. Tone of the book aside, I recommend this book for anyone who is managing an existing Internet infrastructure or planning to build the next big web fad. This book will help you avoid costly mistakes and structure your system so that it performs well at one thousand users as well as one million.