When scaling any system, four things are guaranteed:
Architectural design is not simply understanding a technical challenge and devising a blueprint. Both the approach and the final design will be influenced dramatically by the four factors listed previously.
Every business will take its stance on the actual price of these four happenings. Dot-com companies and small-to-medium Internet-based businesses tend to place emphasis on reducing up-front investment and time to implementation. Large companies like to minimize risk and thus concentrate on maximizing the simplicity and maintainability of their systems.
The real world is a different environment from that of academic institutions, online courses, textbooks, and white papers. The latter tell a story or demonstrate a concept but seldom in a rapidly changing environment.
The real world changes, and it changes quickly. My team of system administrators (SAs) and I constantly find ourselves posed with architectural challenges. Customers come in with seemingly simple requests that often require substantial planning and engineering. Combine that with a tight deadline, and you have a recipe for disaster.
Understanding the scope of the problem and being able to step outside the current solution is essential to building efficient systems. The initial solution to a problem may be the entirely wrong approach to the problem as it evolves. Chapter 10, "The Right Tool for the Job," discusses the process of rethinking and reengineering a solution to meet new demands.