Lesson 3a – Performance Engineering Concepts : Architecture & Design for Performance
Hi Dr. Rajesh,
Great course – I’m really enjoying it.
In lesson 3a you touch on performance targets for developers. If I provide a target service time for, say, a method call do I need to give the developer just that target, or do I need to also give the rate of calls to that method? Is providing consistent performance over a varying load just an infrastructure and maybe database design issue rather than a software design issue?
Thanks and regards…Paul
Most developers are used to unit testing under single user mode. So to start off it makes best sense to provide a single service time target for any given method and let them prove that they can meet it in their dev environment. Once they clear this first gate and if there is time for component level PT, then they can next assert that they are able to meet the component level throughput targets. This is usually not done in practice because PT starts after Integration testing and there is a race to release the s/w asap. Nevertheless even in PT it is advisable to track component level throughputs so that there is an easy way to trace back to the set of developers when it comes to code fixes.
If there is no inherent contention for software resources then consistent performance will be determined by h/w and DB design for sure. In reality though most applications are quite complex and software bottlenecks are prevalent all over the place given the popularity of Java developers. So it is typical to have synchronized methods in Java, typical for cache contention in the app server, etc. Hence it is important to review the software architecture and design for performance and scalability, well before you move on to coding.
Hope this helps.