What design patterns or techniques have you used that are specifically geared toward scalability?
Patterns such as t
Nothing is free - it comes down to what are the acceptable compromises in order to meet your business objectives. The main variables being:
An excellent paper to read on the subject.
I believe a good metric would be to examine the "cost/user" curve and try maintaining it to linear progression (assuming the acceptable cost per user is a known parameter :-)
The Design Patterns do play a role but it is the overarching architecture that matters most. One might have been very thorough at the module level but missed network level constraints and scalability suffers as a consequence.
At the end of the day, I believe one must ask himself (herself): for failure type X, how many "users" can be affected and for how long?
There will always be a SPOF (Single Point Of Failure) somewhere but one can engineer a system such that this SPOF is moved closer to the end-points (e.g. users). In many cases though, the SPOF is out of the control of the application e.g. network POP unavailable.
Anyway, I could spend hours on the subject...