I love being quoted by that coffee-roasting, free-diving, Hawai'i living, .NET expert Larry O'Brien, so I was quite please to read my name in his latest SD Times column. He quoted a tweet (yes, I love Twitter) where I quoted a fellow CloudCamp attendee saying "Designing your app to scale is guaranteed failure—it will take too long to write."
Unfortunately (and due primarily to the 140 character Twitter limit), Larry didn't realize that I didn't agree with the guy I was quoting -- I just found it amusing.
I've actually blogged quite a few times about designing scalability into an app. In a 2005 post (Of course scalability matters!), I said this:
Most importantly, [designing scalable software] means acknowledging the possibility, however remote, that you may actually succeed and build something that people eventually use. Many people.I followed that up with a post a month later, and I was quite pleased to learn that Werner Vogels's viewpoint coincided with my own.
This point applies equally to those designing web sites and those planning on deploying SaaS. If you are going to make it available on the web, and you're not designing for scalability, then you just aren't planning for success: you're planning for failure.
So I wholeheartedly agree with Larry's sentiment:
However, I’m uncomfortable with the idea of dealing with scaling only when it becomes a problem. While laissez-faire attitudes have come to dominate code and design approaches, I still resist the idea of abandoning upfront architectural work.In fact, when I overheard the comment at CloudCamp, my first reaction was this: the only reason building scalability into your product would hurt you is if your idea is so unoriginal that someone else is 5 minutes behind you.
So: thanks for the mention, Larry. I'm on your side.
(And I really am going to ride over to Sweet Maria's next week, so send me an e-mail)