The Art of Scalability by Martin L. Abbott and Michael T. Fisher is a book about scaling IT Systems. Now, this isn’t a book just about the technical parts of scale; this book has split into three parts including:
– How to Staff for Scale
– What Processes Do You Need for Scale
– How to Architect Scalable Solutions
As you can see the technical architecture of developing scalable systems is only one part of this book. Instead this book takes a holistic view of scalability from the ground up building from the staff that supports the scalable system, to what they do, and then how the actual systems are put together.
This review will cover a handful of the topics/tips from the book, however this book is highly recommend for those working in systems that need to scale. Click here to purchase the book on Amazon.
It is important to determine the headoom for your applications (the amount of free capacity in the application/system before you start to have problems. If you don’t start to analyze where your headroom is your system may be taken down by a surge in traffic to your application. In calculating headroom, make sure you’re looking at all components (firewalls, load balancers, database clusters, etc.
This book contains a short list of scalability related architectural principles including N+1 design (ensuring any component in the system has at least one additional component in case one of the components fails); designing for rollback, designing to be disable, designing to be monitored,designing for multiple live sites, asynchonous design (and how it is a superior type of design for scalable systems , stateless systems, and more.
JAD (Joint Application Design) and ARB (Architecture Review Board)
Here the book covers topics on what groups need to come together to take a collaborative approach to architecture and design, and who should be reviewing the architecture. The book also includes a JAD checking and a definition of JAD entry/exit criteria.
Performance and Stress Testing
There is decent coverage on the process of performance and stress testing.
TAD (Technology Agnostic Design)
Another acronym, TAD, describes designing architectures to be technology agnostic. Stay away from vendor terminology in your design, say “Load Balancer” instead of “F5 LTM” (even in your physical architectures!).
Fault Isolative Architectural Structures
Lots of good information on pods, shards, chunks, and other funky terminology.
Caching for Performance & Scale
How to utilize caching in your architectural strategy (especially important for web systems).
And much more…
And there’s much more this almost 600 page book covers including cloud and grid strategy, monitoring applications, multiple live data centers, etc.
I highly recommend this book for any architect or engineer that is working on large applications that need to scale (or may need to scale in the future).