The Infosys Labs research blog tracks trends in technology with a focus on applied research in Information and Communication Technology (ICT)

« June 2010 | Main | August 2010 »

July 23, 2010

Why performance plays a significant role in success of any Business Critical Enterprise Application?

Yes, accuracy of functionality is a vital factor when creating any application. But, is adequate importance given to the non-functional requirements of the application!? Especially performance!? If given, are advanced methodologies being followed to achieve the performance requirements of the application?

Though, at a very higher level, enterprises are acquainted with the importance of performance as a key benefactor for success of any application, projects are failing till date due to performance issues. Few analogies of performance issues are as under:


·         An internet banking web application, undergoing down time during peak business period due to not being able to handle high user load; Performance issue! Result, huge business losses, operational overhead and dissatisfied customers.

·         Consider a performance intensive application, like, air traffic control system.  Delay in response time of few seconds would result in application being completely unusable. Upshot; delays in delivery,  enormous amount of re-work and system tuning effort, slippage of budget, preventable hardware acquisition costs,  dissatisfied customers OR in worst cases scraping off the entire project.


In most of the projects, performance engineering activities would either be of low key OR would begin at final stages of SDLC. In few cases, although performance engineering activities would start at the earlier phases of SDLC, appropriate methodologies would not be pursued!


Ideally, performance engineering activities should begin right from the requirements gathering phase and should be methodically followed in the subsequent stages. Infosys CASPER (Capacity Assessment and Performance Engineering framework) offers comprehensive framework consisting of Standards, Methodologies, Templates, Best Practices and a set of tools for engineering and managing performance during the evolution and post-deployment phases.

July 19, 2010

Workload Modeling of SaaS based Multi-tenant Applications

One of the technical challenges of SaaS based Multi-tenant Application is to ensure that multi-tenant application addresses performance requirements of all the tenant accessing the application.


Major performance problems of Web Application including SaaS based Multi-tenant Web Application can only be corrected by recreating the production scenario in a controlled environment and arrive at the solution through performance testing and analysis. The key to this approach lies in accurately identifying parameters like Hits/second, response time per request, number of concurrent uses, think time etc.  per tenant by Mining of Web Server access logs that can help recreate the production workload for load testing.


One of the key challenges is identifying tenant specific above mentioned parameters from centralized log files maintained by Web Server of Multi-tenant SaaS Application.  With logfile analysis, information not normally collected by the web server can only be recorded by modifying the URL. As long as URL of the multi-tenant SaaS Application contains tenant identifier we can track tenant specific above mentioned parameters.  But many SaaS Application providers also use session mechanism to track tenant instead of appending tenant identifier to each of the URL.


One of the approaches to address this challenge is to capture user name information logged by Web Server for each of the request and use User to Tenant mapping data used by SaaS Application to figure out tenant to whom the user belongs. Like this we can categorize each of the requests into group of tenant specific requests. Once we form group of request for each of the tenant, we can mined the data to arrive at tenant specific parameters like Hits/second, response time per request, number of concurrent uses, think time etc.


This approach will fail in scenarios where one user belongs to multiple tenants. Other approach is to use Page Tagging technique to obtain tenant specific parameters like Hits/second, response time per request, number of concurrent uses, think time etc.  Are there any other approaches to address this challenge?