The End Has Come
For those of you who know me, have seen me present or ever actually read all the various bits of my blog, you know that I've claimed to have been writing a book. In fact, it's been listed on Amazon for about two years. People have back ordered it there, and, I'm sure, feel like they will never get it. Well, the end has come. I have submitted all my materials to my publisher and it should be a matter of weeks before it goes to press.
The entire writing process was not an easy one. It was a challenge to present both high-level information as well as low-level implementation details in a fashion that focused on architectural design rather than specific technologies. After reading other books, I always felt that the authors were attempting to demonstrate how to solve a specific problem by scalaing a specific vendor's product. The truth is that scalable design is a frame of mind. It is about using an understanding of the points of contention and where pressures will sit on various components and applying good engineering practices to shift (or eliminate) those stresses. By presenting "how to solve problem Y using product X," readers are left in a bad position. While it might be easy to acquire product X, it is impossible to simply make your problem into problem Y. You have your own problems and you need the mentality to solve them adequately -- not a canned solution to a different problem. Can you say: "square peg, round hole?"
The book is called Scalable Internet Architectures and it discusses a variety of issues related to the design and managment of really large systems. In a two dimensional world, performance and scalability are orthogonal axis and the goal is to get as far from the origin as possible. If a lot of effort is put into the engineering of an application, then performance can be increased -- but it is bounded. If the right engineering effort is put into scalable design, the gains are boundless. My goal is to teach scalable systems design through conversation and demonstration.
The book is a good mix of high-level principles for managing big systems that walks you through best practices, technological terms, and concepts as well as extremely low-level implementations that solve scalability issues.
I had a lot of fun writing the book and I hope you have a lot of fun reading it (and unlike my blog postings, it was professionally edited)! Once the book is actually on-the-shelves, I'll see if I can get a release to put a PDF of the "Introduction" up here.