Validating a software architecture can be as demanding, in terms of time and resources, as validating the final system itself. Fortunately, most of the systems are variations of existing systems that use proven architectures. Very often, once the architect decides on the software architecture, she can find technologies that support that architecture and benchmarks on their qualities, like performance, scalability, etc. For instance, for web application there are a set of frameworks, like Playor Django, that can be used to support the architecture and implement the system. However, when the system requirements push the existing technology to the limits it is necessary to design software architectures that need to be systematically validated, though, fortunately, it occurs in an iterative process where the limits are identified on a need basis. For instance, the first architecture for Facebook is different from the current architecture, and it would be difficult to design the current architecture from scratch, it is more feasible to do it through several evolutionary stages.