Best Practices in Developing High Performance Java ApplicationsA Perspective
Keynote at Silicon India
Rajgopal KishoreVice President and Global Head of BI & Analytics,
Agenda
• Business Implication of System Performance
• Understanding Performance Requirements
• Sharing Some War Stories
• Best Practices
Business Implications of System Performance
• We all want a nice user experience
• We won’t tolerate slow pages (we have options); lesser still any downtime– 500 ms slower = 20% drop in traffic (Google)– 100 ms slower = 1% drop in sales (Amazon)
• Slower Warehouse management system – lower warehouse throughput!
• Any downtime in a trading system - $m lost
What is Performance? Is a subset of NFR…
• On-line applications -– Response time– Maintaining response time with increasing load –
scalability– Throughput– Handles user expectations/frustration– Availability
• Batch applications– Runs in the batch window – which is constantly shrinking!– Does not slow down other on-line work to an
unacceptable level
Biggest Cause of Performance Failures..
• Not understanding performance requirements (implicit, explicit, real, or expectation)
• Not setting expectations early enough
• Not understanding and explaining trade-offs between performance and $ (infrastructure), and time
Performance Requirements Capture – Sample
• The application will be optimized for high throughput. Traffic is to be tested for 250 concurrent users and 24/7 operations
• All simple transactions will have a response time of less than 5 seconds. Complex transactions will have a response time of 15 seconds
• The response time of all the pages would be less than 3 seconds
Consequently …
• Performance requirements captured are insubstantial; Work pattern and user behavior is not understood
• Infrastructure is suggested with out any basis
• No performance benchmarking done till the system integration phase of the project
• Benchmarking goals are not defined
What are Performance Requirements? - Multiple dimensions
• Infrastructure model– Boxes, routers, IP splitters, CPUs, RAM, bandwidth
• Transaction model– Transaction arrivals rates, think time, variation across the day
• External transaction model– Any messages, file uploads
• Data retention model– # years, hot, warm and cold areas, read-only or read-write
Some War Stories
Deathcare Major in the US …
• 15000 users• Complex application• Low bandwidth network – 128K• 7 seconds response time needs – set after a
discussion
Major Retailer …
• Large and complex application for assortment planning
• Board level visibility
Large fashion Retailer…
• Big brand• Wanted a 2 second response time for a
planning application
At a mid size Telecom company…
• Need to “validate” capacity plan of their boxes for a MLM solution roll-out
Summarizing Some Best Practices in development high performance apps…
What you will not get on the Internet
Best Practices …
• Understand, set and control expectations.
• Always attempt to understand real business need as opposed to articulated performance requirements
• Big picture first – infrastructure capacity planning
• Then optimize the application – create an app where the only bottleneck is the infrastructure …
Best Practices …
• Abstraction is not good for performance …. Including Virtualization!!!
• Do not use the same APIS for batch and on-line programs
• Early stage performance prototyping….
Questions!
Top Related