That‘s me My day to day job is to help customers fixing software performance Fabian People really struggle with performance But most of them struggle with coding as well If creating good software is a craft, performance should be one as well Customer
Some say: „creating software is art“ Art and software development need creativity Art
Fixing performance is often considered magic Magic is something only you understand you do in a hard to Magic follow fashion
Correctness in detail Research and verification Craft
All types share Passion Learning Experience Which way?
Value == Money We need a business case for performance Money What is the impact of (in parts of the world) bad performance?
Amazon measured the impact of 100ms delay Sales dropped by 1% In a year that would be Typical (?) retailer 245 Million USD
Instable or slow software delays time to market Slow software is no longer accepted by customers New?
Insurances like to send paper via mail Not meeting deadlines can cause Legal issues Snail Mail Canceled contracts Loss of money
Calculate Execution Time Code x = 5ms Code y = 2*x = 10ms Know code in advance Waterfall approach Performance Engineering Proving the performance of software is more difficult than proving the correct function
We prove functional correctness with automated tests High coverage Look closely Run examples and see if they are fast
Done late in project If done at all How much load breaks the system? No chance to fix anything
Avoid human errors Require machine decidable fail / pass check What is the measure? 42cm are fast?
Functionality is independent of the environment Performance characteristics can vary Unusable slow Our Environment Lightning fast
Underpowered hardware Loaded with tools and stuff Developers Luckily not the production driving fast environment
More power But also more load How much faster is production than development? Crawling Production Any estimation on how much better or worse the environments are is incorrect
Real performance tests need real systems Test in production Clone production Stop playing infrastructure
Amount of data is unpredictable Application usage is unpredictable Tweets per second How thought of using Twitter for build notification?
Dev Prod Test Test1 Fabian Lange Test Test2 Uwe Friedrichsen Test Test3 Mirko Novakovic Showing 3/3 Showing 3/6,434,867
Syntethic load tests are unrealistic No application has hundreds of users doing the same procedure again and again Load Baselines Understanding real load is difficult
Real usage cannot be generated Real usage can be captured & replayed Live Systems are live Be careful
Continous performance tests Close to real setup App Monitor Observe production behavior Fix issues fast
Conflicting interests Development: Change Operations: Stability Another Movement Need to work together