The Art of Scalability
The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise, by Martin L. Abbott and Michael T. Fisher, ISBN-13: 978-0-13-703042-2, Pearson Education, 2010.
It is often claimed that the primary lesson of the Internet is one of "scaling." So the title of this book bodes well for relevance to Internet designers. A reader would likely expect discussion of hashing algorithms, fast-path coding, protocol latencies and chattiness, distributed redundancy design, and similar guidance for handling a billion users. The reader would largely be wrong, although some of the book is dedicated to technical performance. What is easily missed in the title is the word "organizations." It does not mean organization of modules. It means organizations within a company.
This book is very much a holistic one. It takes the painfully realistic position that well-designed protocols and software modules matter only if the company structure or team operation is tuned to growing and running a large-scale service. The book is comprehensive and primarily tailored for highly formal management, with substantial, bureaucratic procedures designed to ensure thorough consideration of scalability needs and implications. It is loaded with discussion of many different organizational and technical management tools that assist in making diligent decisions. For most readers and most companies, attempting to apply this level of formality is dramatic overkill. However, knowing about it is not.
The book is 533 pages, with 33 chapters and 3 appendices. The writing style is reasonably clean, but pedantic. Don't expect the type of entertainment-oriented writing that is common these days. The authors' experiences include eBay and PayPal, so scaling matters have been within their direct work responsibilities. As holds for any book attempting this kind of breadth, from technology design to organization management, discussion frequently is superficial and will be obvious to some readers, while the specific detail will in places be irrelevant to many others. Although these characteristics might be taken as negatives, they actually serve to demonstrate the utility of the book as an introduction and basic reference to the topic of scaling. A quick scan of the book helps the reader see how many different aspects of an organization's activities can aid or hinder large-scale operations. Exploring specific chapters can explain concepts and topics and suggest particular tools to help in planning or analysis.
Part I, "Staffing a Scalable Organization," comprises six chapters. It provides a tutorial on classic problems in structuring and staffing an organization for growth. Little is taken for granted. So there is guidance about the characteristics needed in a CEO, CFO, or CTO for aiding leadership in working to scale the company and the company's products. It even has a chapter on "Leadership 101."
For the most part, this section is likely to be useful only for readers with no management background, because the material is extremely basic. What distinguishes it is only the constant consideration of the way its topics are relevant to scaling. The likely utility of the section is in helping employees "manage up" so they can interact with management better when seeking support for changes needed to implement or maintain scalable development or operations. On the other hand, an interesting discussion explored why some simple and entirely logical choices for organizing a company work against accountability and scaling.
Part II, "Building Processes for Scale," at nearly 200 pages is 40 percent of the book. Whereas the first part concerned the people, this one concerns what they do. The first half of this part strongly emphasizes processes for anticipating and responding to scaling problems and for judiciously allocating limited resources. Hence there is even a chapter that considers "build versus buy." Technical topics discussed here are conceptual rather than concrete. They concern risk, performance, capacity, and failure recovery. Each is treated as a planning and design concern, with estimates and procedures. A warning: The word "architecture" shows up in the title of several middle paragraphs in this section, but don't be confused. It refers to groups that do architecture, not to the technical details of architecture.
Part III is "Architecting Scalable Solutions." Now at last, techies will start to get their geek fix. But perhaps with more abstraction than they will expect? Again, this book is more about properly organizing things than about algorithms. The section introduces "technology-agnostic design," with consideration of fault isolation and various growth factors, including repeated attention to cost, risk, scalability, and availability. There are chapters on database scaling and the use of caching for performance. The authors are fond of asynchronous and state-free interaction, with the view that it is more robust. The precise reason for this conclusion was not entirely clear to me, but presumably it is because it is easier to recover and retarget an exchange after an outage occurs during an interaction.
Two chapters of this part of the book are devoted to the "AKF Scale Cube," and indeed the Index has a large number of citations to it. (AKF refers to the authors' company.) For this analytic tool, the x-axis "…represents cloning of services and data with absolutely no bias." In other words, these graphs are pure replications of equivalent, parallel components or activities, used to distribute load. The y-axis "…represents a separation of work responsibility by either the type of data, the type of work performed for a transaction, or a combination of both… We often refer to these as service or resource oriented splits." The nature of the z-axis is described as "…biased most often by the requestor or customer... focused on data and actions that are unique to the person or system performing the request." I took this as meaning that the axis divides work according to tailored attributes.
Part IV is the catchall for remaining topics, with some requisite discussion of clouds and grids, application monitoring, and data center planning.
The book will be useful for architects who need to understand how to scale their own work and how to support their organization for long-term growth. It will also be useful for technical, operations, and other managers who need to understand the technical and operations scaling problems, support their own architects, and work with the rest of their organization to anticipate and satisfy scaling requirements.
—Dave Crocker, Brandenburg InternetWorking