The Art of Scalability
Martijn de Boer writes "Creating high performance growing networks is really a special skill managers and network architects should possess to be ready for the future. The Art of Scalability is a book written for these kinds of functions, and prepares you for the present and the imminent future. Scalability is achieved by principles that work on many levels within enterprises, whether it's processes, organizational structure or setting up your project, this book covers it all." Read on for the rest of Martijn's review.
The Art of Scalability
author
Martin L. Abbott and Michael T. Fisher
pages
592
publisher
Addison Wesley
rating
8
reviewer
Martijn de Boer
ISBN
0-13-703042-8
summary
Explains everything from organizational processes to the techniques used to accomplish a scalable high performance project.
The sub-title for this book is "Scalable Web Architecture, Processes and Organizations for the Modern Enterprise" which is basically a catchy title for project managers and decision makers. It's just catchy enough to grab the book from a shelf and start digging into the table of contents, which is exactly the spot where you get hooked and decide to get the book. The book is written by two experts on the subject; both of them have a strong background in large corporations dealing with scalability. Throughout the book the authors shine a good light on tools and cases used for making a project scalable.
The book is divided into four sections which follow the process of starting a scalable project. First off you will need to know everything about strategy, organizational structure, the kind of people your organization needs and how to manage your team. The second part focuses on the how's and why's of scalability, aspects of planning for continuity, crisis and incident management. The later chapters in this second part talk about risks, how to value risk and the importance of testing to make educated conclusions about how far to scale your project, a notable mention here is chapter 19 which focuses on trade-offs in development speed or doing things the right way, often an underestimated point in these businesses. Architecting scalable solutions is the third part of the book, mainly taking a more technical approach to the matter. This part talks about containing faults and breaking up applications so they scale well. This goes all the way to scaling the database backend for your application to caching objects and making synchronous versus asynchronous calls to your application.
While most of the book is good for preparation, I think the fourth part of the book crosses the boundary from preparation to being very useful during the process as a fallback to your knowledge. It's titled accordingly "Solving other issues and challenges" and mainly focuses on things you will come across during the first and perhaps even later stages, providing solutions for unforeseen costs of data storage to monitoring your application for user experience, speed and the processes you will have to implement for this.
If you have read this far, and are thinking about how complex scalability really is, then you have found the right book. The clear writing style and detailed writing of numerous pitfalls for such big projects make this book a valuable asset to your knowledge base. It's also written in a challenging way, and between the lines there is also some humor (evident for instance in the reference to Rain Man in chapter 18), making it a fun way to learn or build upon a great skill set needed by organizations in the not so distant future. I feel very positively about the writing style of the book, but despite there being some illustrations there could be some more diagrams of organizational structure and the architecture of projects as I didn't find the illustrations adding much to the context.
The short appendixes to the book are mostly about calculating capacity for cpu power, bandwidth, etcetera. These appendixes actually provide sample calculations which are useful to backup your analysis when you need to make a bill of materials for your superiors and can also be used to better grasp the size of a project. Numbers mostly provide a context for the people above you, and I think these extra pieces of content could have deserved another part in the book, but perhaps it's better off as some food for thought.
Before starting with this book, I had not much prior knowledge about scaling projects other then some technical ideas of implementation. I always hate it when I know I'm just scratching the surface of something, and need to satisfy my urge to learn more about the subject. The Art of Scalability really helped me accomplish that, and provided much more background information then I expected. I was really surprised by the pieces about cloud computing, it's such a buzzword nowadays but the texts give it a real context.
If you are looking to set up a project or are generally interested by the concepts of scalability, then this is the right book for you. It's an appropriate recommendation for most businesses, because this knowledge can only be used to your advantage and just takes a little bit of time to read trough. It's a heavy subject, but once you finish the book you will be able to make a decision about architecture based on a good foundation of background information rooted in real situations.
You can purchase The Art of Scalability from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
The book is divided into four sections which follow the process of starting a scalable project. First off you will need to know everything about strategy, organizational structure, the kind of people your organization needs and how to manage your team. The second part focuses on the how's and why's of scalability, aspects of planning for continuity, crisis and incident management. The later chapters in this second part talk about risks, how to value risk and the importance of testing to make educated conclusions about how far to scale your project, a notable mention here is chapter 19 which focuses on trade-offs in development speed or doing things the right way, often an underestimated point in these businesses. Architecting scalable solutions is the third part of the book, mainly taking a more technical approach to the matter. This part talks about containing faults and breaking up applications so they scale well. This goes all the way to scaling the database backend for your application to caching objects and making synchronous versus asynchronous calls to your application.
While most of the book is good for preparation, I think the fourth part of the book crosses the boundary from preparation to being very useful during the process as a fallback to your knowledge. It's titled accordingly "Solving other issues and challenges" and mainly focuses on things you will come across during the first and perhaps even later stages, providing solutions for unforeseen costs of data storage to monitoring your application for user experience, speed and the processes you will have to implement for this.
If you have read this far, and are thinking about how complex scalability really is, then you have found the right book. The clear writing style and detailed writing of numerous pitfalls for such big projects make this book a valuable asset to your knowledge base. It's also written in a challenging way, and between the lines there is also some humor (evident for instance in the reference to Rain Man in chapter 18), making it a fun way to learn or build upon a great skill set needed by organizations in the not so distant future. I feel very positively about the writing style of the book, but despite there being some illustrations there could be some more diagrams of organizational structure and the architecture of projects as I didn't find the illustrations adding much to the context.
The short appendixes to the book are mostly about calculating capacity for cpu power, bandwidth, etcetera. These appendixes actually provide sample calculations which are useful to backup your analysis when you need to make a bill of materials for your superiors and can also be used to better grasp the size of a project. Numbers mostly provide a context for the people above you, and I think these extra pieces of content could have deserved another part in the book, but perhaps it's better off as some food for thought.
Before starting with this book, I had not much prior knowledge about scaling projects other then some technical ideas of implementation. I always hate it when I know I'm just scratching the surface of something, and need to satisfy my urge to learn more about the subject. The Art of Scalability really helped me accomplish that, and provided much more background information then I expected. I was really surprised by the pieces about cloud computing, it's such a buzzword nowadays but the texts give it a real context.
If you are looking to set up a project or are generally interested by the concepts of scalability, then this is the right book for you. It's an appropriate recommendation for most businesses, because this knowledge can only be used to your advantage and just takes a little bit of time to read trough. It's a heavy subject, but once you finish the book you will be able to make a decision about architecture based on a good foundation of background information rooted in real situations.
You can purchase The Art of Scalability from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Didn't we just go thru this with the slime mold that grows perfect networks?
http://science.slashdot.org/article.pl?sid=10/01/22/1715229
So if this is so hard for humans and they need new books to work it out, why can slime mold do it?
Is there a slime mold chapter in this book or is that coming in next release?
I'm not sure that scalability will be all that relevant as long as Moore's Law continues to hold. IIRC it has taken on average less than 10 years for the computing power of a top10 supercomuter to be available in a consumer laptop. As computational resources on the market continue to expand, I would suspect that we could soon come to see the opposite of scalability becoming more important - getting more done with less space and energy.
That said, any admin worth their salt who focused on scalability should still be an excellent sys admin anyways, so they shouldn't be heading towards the bread line. I'm just not convinced that focusing on learning skills for network scaling is the best idea unless you want to build clusters for research groups.
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
are not going to happen in large organizations.
Nobody ever knows everything about the strategy or organizational structure, and the people and managers change places and responsibilities faster than any project can proceed.
And continuity, crisis and incident management are only longed for when the systems are down and eveybody is expected to work continuously until they're fixed, but never when it's time to pay for it.
This reminds me of the original Zelda where you go in the cave and pay money...
Gates: Give us all your personal information and we will use this to make recommendations for you /me gives
User:
Gates: We recommend that you be less gullible
-- I was raised on the command line, bitch
ERRRRRR
Sorry buddy, better luck next time. Wrong thread.
Sewage Treatment Facilities - "Our duty is clear."
In any organization, there will always be one person who knows what's going on. That person must be fired
As computational resources on the market continue to expand, I would suspect that we could soon come to see the opposite of scalability becoming more important - getting more done with less space and energy.
If you think the solution to scaling issues is to 'throw more silicone' at the problem, you are about the worse programmer in the universe. This talent is incredibly handy, as any site shut down by Slashdot's ravening hordes would attest. What you are suggesting is akin to 'Bubble sorts are a great algorithm if you do them an a fast CPU'. Any tech company that hopes to achieve more than a small audience will need people with this skill set.
With databases hitting petabyte sizes, and a world wide Internet audience in the hundreds of millions and growing, I very much doubt that scaling issues will be resolved by simple hardware solutions anytime in the foreseeable future.
HA! I just wasted some of your bandwidth with a frivolous sig!
Unless you are actually working on a web site that needs to be scalable, thinking about scalability is both a waste of time and harmful. A totally unscalabe web app where each page view takes 1 second, can sustain 86k page hits per day or 2.5 million page hits per month. Will your web site see that much traffic? Really? If not, your main objective should be to get the site out of the door as soon as possible to keep development costs down. Hopefully, users flock to your site, melting the servers under huge loads of traffic. Good for you, you'll have a very profitable job designing the next scalable version of the site.
Or you get no traffic because the site idea was stupid to begin with. That sucks, but much less so than if you had spent months of effort making it scalable. "Scalable architecture" is merely a different form of premature optimization, and it is just as harmful.
Football Odds
Now there's a cool name.
Pretty good is actually pretty bad.
Creating high performance growing networks is really a special skill managers and network architects should posses to be ready for the future.
Most software/network designers will never work on any project that has so much traffic that it needs to scale to the levels discussed in this book. In fact, most (note I say most) businesses don't actually need the amount of scalability currently built into their current out-of-the-box hardware and software solutions. Just saying...
That is all.
A totally unscalabe web app where each page view takes 1 second
That's latency, not throughput. Scalability is throughput. Latency is how shitty it is to use.
I can scale your 1 second web app by adding 1000 processes per server and 1000 servers. That's a million page views per second throughput. But it'll still be a 1 second latency piece of shit application.
Deleted
"This book is much more than you may think it is. Scale is not just about designing Web sites that don't crash when lots of users show up. It is about designing your company so that it doesn't crash when your business needs to grow. These guys have been there on the front lines of some of the most successful Internet companies of our time, and they share the good, the bad, and the ugly about how to not just survive, but thrive." -- Marty Cagan, Founder, Silicon Valley Product Group
From the somehow omitted site for the book.
(Also... is there some kind of Martin conspiracy going on here? The author is named Martin, the reviewer is named Martijn, the guy I just quoted is presumably a Martin...)
Tweet, tweet.
Ok, let me get this straight. You wrote a book about scalability, and for the cover image you picked... a bonsai? Really?
Does that mean that all of the book's advice boils down to a paraphrasing of "If you want your tree to grow large, then stop cutting off its roots, asshole!"
There's nothing wrong with having a bonsai tree on the cover of a book about software development. But he's still a copycat ;)
Visit http://ringbreak.dnd.utwente.nl/~mrjb/growingbettersoftware to download your free copy of the book