In my talk at socrates 2011, I descrived why performance is a craft and what to do to ensure great performance. I concluded with a few best practies and wonder if there are more
2. 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
3.
4. Some say:
„creating software is art“
Art and software development
need creativity
Art
5. Fixing performance is
often considered magic
Magic is something
only you understand
you do in a hard to
Magic
follow fashion
16. 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
17. We prove functional
correctness with automated
tests
High coverage
Look closely
Run examples and see if they are fast
18. Done late in project
If done at all
How much load
breaks the system?
No chance to fix anything
19. Avoid human errors
Require machine decidable
fail / pass check
What is the measure? 42cm are fast?
20. Functionality is independent
of the environment
Performance characteristics
can vary
Unusable slow
Our Environment
Lightning fast
21. Underpowered hardware
Loaded with tools
and stuff
Developers
Luckily not the production driving fast
environment
22. 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
23. Real performance tests
need real systems
Test in production
Clone production Stop playing
infrastructure
24. Amount of data is
unpredictable
Application usage is
unpredictable
Tweets per second
How thought of using Twitter for build notification?
25. Dev Prod
Test Test1 Fabian Lange
Test Test2 Uwe Friedrichsen
Test Test3 Mirko Novakovic
Showing 3/3 Showing 3/6,434,867
26. 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
27. Real usage cannot
be generated
Real usage can be
captured & replayed
Live Systems are live
Be careful
28. Continous performance tests
Close to real setup
App Monitor
Observe production behavior
Fix issues fast
29. Conflicting interests
Development: Change
Operations: Stability
Another Movement
Need to work together