This week I attended our AMIS Query on “How the Middle Tier is slowing the Database down†by renowned performance “problem solver†Anjo Kolk. When I saw the announcement for this AMIS Query I had no doubts I wanted to be there. It may seem a highly technical subject, yet, as a project manager, performance is often an issue I encounter. I like to know what’s going on and understand, if only a little, what issues may be in play. So, while I did not understand everything Anjo said, I learned a few valuable lessons. I paraphrase them in my own words. Any errors are therefore errors of mine.
A SAN may be a very modern part of the technical architecture. Yet: why put the cache far away from the database as a SAN cache and not as a cache on the database server. The SAN vendor certainly likes it (it is expensive). The connection between the DB server and the SAN is often high in bandwidth. The weakest link however is latency: how many requests per second can the line process. This puts the bottleneck
far below the possibilities of the SAN and the bandwidth and make any further investments to improve this, pure nonsense. A good lesson for a project manager when issues arise and vendors may have ulterior motives.
Performance issues are often analyzed in each domain or tier and rarely with a complete overview of the whole application. That is a grave mistake. Optimalization of one tier may greatly impact the performance of other tiers. In the Java world, the database is often treated as a simple supplier of data. By optimizing the Application Server (more processes) that seems to perform OK, yet this creates a greater problem in the database. View a performance problem as an integral problem and make your choices accordingly. To me, this sounds like a very obvious truth, yet lack of knowledge with developers, AS and SAN Adminstrators, and ulterior motives of vendors complicate matters. It is good to be aware of that.
Many Java developers have no sense of the database impact of their action. They may issue SQL-statements than can be better optimized. Yet: the fastest SQL-statement is the one you do not execute! Critically examine the need for database interaction and when you interact, obviously write an optimal statement. Here as well, the development of the application needs to be executed with the whole picture in mind. The examples Anjo gave, made me aware of huge potential problems in this area. Problems I may now help avoid by enabling project teams to look across their own borders.
In short: I went home after a very entertaining evening and armed with crucial new knowledge that will help me deliver projects more successfully.
Every project manager should have been there. Strange that there was only one…
We are a project managers in disguise (you have to realize it). So you were not alone… 😉