A while back, I realized that you can break down the requirements for writing a large-scale system into five areas: scalability, availability, security, managability, and everything else. I often use this breakdown when consulting, and you'd be surprised to see how obvious it makes what people are missing.
I wrote up my results in a little whitepaper a while back, which I've since updated with some refinements around security. I've converted it to HTML and put it here.
Looks really interesting.Ii can't wait to delve in to this. right after work that is..