Everybody wants something for nothing, but we all know that this is not realistic. Architects know that their job is one of evaluating trade-offs. Often developers get into the trap of thinking that performance is the only thing that matters and if this is true, well then turning off authentication results in really great performance but at the expense of security. You get the point right?
In the Shadowfax project we have been making some trade-offs as well. You have to when creating a reference architecture. In our case, we have been making choices that consistently optimize for flexibility in the framework and in deployment. We believe that this framework like those it was based on will result in better solutions built faster with more consistently good architecture. Developers will be more productive because the architecture enables them to write business logic that does not involve itself in the details of plumbing…but here’s the rub.
At what point do the benefits of elegant architecture, flexible deployment and developer productivity fall down because of the performance price you pay for these things?
One of the advantages of shipping a reference architecture with full source code is that it allows the users to make modifications which can optimize the end result for their values. One customer who has been evaluating Shadowfax decided that they did not need all of the flexibility and by removing some of it were able to gain back some of the lost performance.
Now before you tell me that class architects answer “It depends” let’s think for a minute…
I suppose the bottom line answer is – if you can meet your performance objectives, and the architecture delivers on its promise of added value then you will gladly pay the performance price.
After all – anyone creating web applications knows that there are faster ways to serve up pages than coding them in ASP.NET. You could write an ISAPI extension in C++ that would be faster, yet you don’t do this because in the long run you know that you can meet your performance objectives with ASP.NET while still being amazingly productive.
So here is my question to you…What price would you pay (in terms of performance) and what gains would you need to get to consider this trade a “fair deal”