We recently hired a DBA here at Geonetric to fill a much needed niche. While we have several better than average developers in terms of SQL, I'm excited to see what very SQL specific optimizations (ie indexes, normalization, filegroups) that Jason (DBA) can bring to the table. Thinking about the optimizations that will be handled at the database level, I stopped to think of the "stack" to deliver a web application. Here's my first-pass list:
- HTML
- Javascript
- CSS
- Presentational Logic
- Business Logic
- Data Acess Logic
- Data Access
Looking at the list above. Optimizing a single layer in no way gets you great performance across the entire application, however a poorly built/optimized layer can ruin the entire application. What's the saying? A bad apple spoils the bunch?
We can optimize to make all queries fast and performant but negate that optimization by serving up CSS in a style block (rather than externalizing into a CSS file). We can use Ajax to avoid fullpage postback, but if backed by a slow web method the performance gain sought by using Ajax is nullified. The point is that if performance is a goal you have to pay attention to the whole stack. Paying attention to just one piece while disregarding the others will ultimately not produce the performance you desire.