Flying Blind
I am often called upon to review a design. The first things that I ask for are the performance goals and the scaling assumptions, often called the Load Model. More than half the time, they don’t exist, or they are pure fantasy. (I have heard business types specify sub-second response and infinite scalability.) The Load Model tells us how many transactions, page hits, orders, etc. a system will be experiencing per unit of time for a certain number of years in the future, often the next 5 years. This table or graph will determine the type of design that you have to create. Without it you are “Flying Blind”. For example, if you are told that you will have 45 orders per hour at peak then you have any number of ways that a system could be built. In fact, almost any design can handle such a light load. On the other hand, if you are told that you will have 45,000 order per hour you will have to examine every aspect of the design to detect bottlenecks as quickly as possible. Many times, no one really knows what the load numbers will be. Often, the business people will try to pawn the estimation off on the technical people. Resist this! You must make the business people take the bottom line for this. If you don’t, you will be accepting the risk that the business people are paid to accept. If you create the Load Model yourself, you will be ultimately responsible for its correctness. This is especially important when the load is unknowable. In that case, the business must pick a number out of the air. Once picked, you should ensure that everyone agrees to design to it. Later, if your approach is correct for the assumed load, but incorrect for the actual load, you will be able to defend the design.
