SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Downloaden Sie, um offline zu lesen
A Challenging Craft
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
Is A Craft
 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
Is A Challenge
 Can‘t we do anything before
 production?

 We want to deliver something,   Let users test?
 which works perfectly!
 Optimizations might have
 no impact

 Micro-Optimizations are    Missed Target
 dangerous
 Soft Measure


 Works good for code quality
                                          Sonar



 Are there performance best practices?
 Yahoo Best Practices


 Google Best Practices


 Plenty of tools
                          Good Waterfalls

 Work well
 Naive implementation looks fine




 But is not multithreaded
 This is threadsafe




 But slow
 This is correct




 Correct synchronisation is hard
 Check Log Level (Ugly)




 Check Log Level (Nicer)
 Static SimpleDateFormat is wrong




 Working with Dates
 and Calendars is
 very expensive!
 Some people misuse it as loop




 Results are unexpected behavior or slow execution
 Analyzes Java Bytecode


 Knows 58 Performance Bugs


 Most are rather trivial
                              Indeed finds bugs
 Detecting deadlocks
 is difficult

 Many thesis's on deadlock
 detection
                              Verifies Java
 Few code
 Hidden Gem


 Tries to cause Deadlocks



                                   IBM
                             Support Assistant
 We need more and reliable
   Code Performance Metrics
   Best Practices
   Tools
Is A Challenging Craft
Q&A
   Art                                                  YSlow
    flickr.com/photos/37202375@N03/3490107873             developer.yahoo.com/yslow
   Magic                                                Pagespeed
    flickr.com/photos/princes_milady/4238912548           code.google.com/speed/page-speed
   Crossroads                                           Java Locking
    flickr.com/photos/40481200@N06/4857965280             en.wikipedia.org/wiki/Double-checked_locking
   Envelopes                                            PHP Ternary Operator
    flickr.com/photos/creatingmotherhood/3663914542       fabien.potencier.org/article/48/the-php-ternary-
                                                          operator-fast-or-not
   Test
    flickr.com/photos/cayusa/2159980025                  JavaScript for .. In
                                                          stackoverflow.com/questions/500504/javascript-for-
   Scales                                                in-with-arrays
    flickr.com/photos/reinvented/309512320
                                                         Findbugs
   Tape Measure                                          findbugs.sourceforge.net
    flickr.com/photos/hippie/2466583497
                                                         Jlint
   World                                                 jlint.sourceforge.net
    flickr.com/photos/heimdahlrecounts/4346082743
                                                         IBM Multicore SDK
   Toys                                                  www-
    flickr.com/photos/sbluerock/364123380                 01.ibm.com/support/docview.wss?uid=swg21456945
   TPS
    flickr.com/photos/twitteroffice/5681263084
   Bananas
    flickr.com/photos/design-dog/1249337589
   Dart
    flickr.com/photos/malavoda/2369876508

Weitere ähnliche Inhalte

Was ist angesagt?

Measuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb EditionMeasuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb EditionDave Olsen
 
Application compatibility final
Application compatibility finalApplication compatibility final
Application compatibility finalHarold Wong
 
Adam carmi
Adam carmiAdam carmi
Adam carmiCodeFest
 
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...Dave Olsen
 
Engineering culture
Engineering cultureEngineering culture
Engineering culturePamela Fox
 
Justin Ison
Justin IsonJustin Ison
Justin IsonCodeFest
 
Observability for Emerging Infra (what got you here won't get you there)
Observability for Emerging Infra (what got you here won't get you there)Observability for Emerging Infra (what got you here won't get you there)
Observability for Emerging Infra (what got you here won't get you there)Charity Majors
 
Automated Battle Scars Se Conf 2011
Automated Battle Scars Se Conf 2011Automated Battle Scars Se Conf 2011
Automated Battle Scars Se Conf 2011Adam Christian
 
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...Burr Sutter
 
Bootstrap cheat-sheet-websitesetup.org
Bootstrap cheat-sheet-websitesetup.org Bootstrap cheat-sheet-websitesetup.org
Bootstrap cheat-sheet-websitesetup.org Ali Bakhtiari
 
A call to JS Developers - Let’s stop trying to impress each other and start b...
A call to JS Developers - Let’s stop trying to impress each other and start b...A call to JS Developers - Let’s stop trying to impress each other and start b...
A call to JS Developers - Let’s stop trying to impress each other and start b...Christian Heilmann
 
Chaos Engineering
Chaos EngineeringChaos Engineering
Chaos EngineeringYury Roa
 
Be a Quality Evangelist
Be a Quality EvangelistBe a Quality Evangelist
Be a Quality Evangelistyusra123
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at FlickrJohn Allspaw
 
Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?Thoughtworks
 
Chaos Engineering: Injecting Failure for Building Resilience in Systems
Chaos Engineering: Injecting Failure for Building Resilience in SystemsChaos Engineering: Injecting Failure for Building Resilience in Systems
Chaos Engineering: Injecting Failure for Building Resilience in SystemsYury Roa
 
Failure the-good-parts
Failure the-good-partsFailure the-good-parts
Failure the-good-partslegendofklang
 

Was ist angesagt? (19)

Measuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb EditionMeasuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb Edition
 
DevOps Note 20120224
DevOps Note 20120224DevOps Note 20120224
DevOps Note 20120224
 
Application compatibility final
Application compatibility finalApplication compatibility final
Application compatibility final
 
Adam carmi
Adam carmiAdam carmi
Adam carmi
 
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...
 
Engineering culture
Engineering cultureEngineering culture
Engineering culture
 
Justin Ison
Justin IsonJustin Ison
Justin Ison
 
Website qa
Website qaWebsite qa
Website qa
 
Observability for Emerging Infra (what got you here won't get you there)
Observability for Emerging Infra (what got you here won't get you there)Observability for Emerging Infra (what got you here won't get you there)
Observability for Emerging Infra (what got you here won't get you there)
 
Automated Battle Scars Se Conf 2011
Automated Battle Scars Se Conf 2011Automated Battle Scars Se Conf 2011
Automated Battle Scars Se Conf 2011
 
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
 
Bootstrap cheat-sheet-websitesetup.org
Bootstrap cheat-sheet-websitesetup.org Bootstrap cheat-sheet-websitesetup.org
Bootstrap cheat-sheet-websitesetup.org
 
A call to JS Developers - Let’s stop trying to impress each other and start b...
A call to JS Developers - Let’s stop trying to impress each other and start b...A call to JS Developers - Let’s stop trying to impress each other and start b...
A call to JS Developers - Let’s stop trying to impress each other and start b...
 
Chaos Engineering
Chaos EngineeringChaos Engineering
Chaos Engineering
 
Be a Quality Evangelist
Be a Quality EvangelistBe a Quality Evangelist
Be a Quality Evangelist
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
 
Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?
 
Chaos Engineering: Injecting Failure for Building Resilience in Systems
Chaos Engineering: Injecting Failure for Building Resilience in SystemsChaos Engineering: Injecting Failure for Building Resilience in Systems
Chaos Engineering: Injecting Failure for Building Resilience in Systems
 
Failure the-good-parts
Failure the-good-partsFailure the-good-parts
Failure the-good-parts
 

Andere mochten auch

Eclipse Rich Ajax Platform
Eclipse Rich Ajax PlatformEclipse Rich Ajax Platform
Eclipse Rich Ajax PlatformFabian Lange
 
#smabuja: SEO, Blogs and LinkedIn
#smabuja: SEO, Blogs and LinkedIn#smabuja: SEO, Blogs and LinkedIn
#smabuja: SEO, Blogs and LinkedInSeismonaut
 
Kunde ist nicht gleich Kunde. Kunden Profiling und Kundenanalyse.
Kunde ist nicht gleich Kunde. Kunden Profiling und Kundenanalyse.Kunde ist nicht gleich Kunde. Kunden Profiling und Kundenanalyse.
Kunde ist nicht gleich Kunde. Kunden Profiling und Kundenanalyse.MAX2014DACH
 
SPDY - http reloaded - WebTechConference 2012
SPDY - http reloaded - WebTechConference 2012SPDY - http reloaded - WebTechConference 2012
SPDY - http reloaded - WebTechConference 2012Fabian Lange
 
Aspects of modern APM solutions
Aspects of modern APM solutionsAspects of modern APM solutions
Aspects of modern APM solutionsFabian Lange
 
Web Performance Optimization - JAX 2011 Talk
Web Performance Optimization - JAX 2011 TalkWeb Performance Optimization - JAX 2011 Talk
Web Performance Optimization - JAX 2011 TalkFabian Lange
 

Andere mochten auch (6)

Eclipse Rich Ajax Platform
Eclipse Rich Ajax PlatformEclipse Rich Ajax Platform
Eclipse Rich Ajax Platform
 
#smabuja: SEO, Blogs and LinkedIn
#smabuja: SEO, Blogs and LinkedIn#smabuja: SEO, Blogs and LinkedIn
#smabuja: SEO, Blogs and LinkedIn
 
Kunde ist nicht gleich Kunde. Kunden Profiling und Kundenanalyse.
Kunde ist nicht gleich Kunde. Kunden Profiling und Kundenanalyse.Kunde ist nicht gleich Kunde. Kunden Profiling und Kundenanalyse.
Kunde ist nicht gleich Kunde. Kunden Profiling und Kundenanalyse.
 
SPDY - http reloaded - WebTechConference 2012
SPDY - http reloaded - WebTechConference 2012SPDY - http reloaded - WebTechConference 2012
SPDY - http reloaded - WebTechConference 2012
 
Aspects of modern APM solutions
Aspects of modern APM solutionsAspects of modern APM solutions
Aspects of modern APM solutions
 
Web Performance Optimization - JAX 2011 Talk
Web Performance Optimization - JAX 2011 TalkWeb Performance Optimization - JAX 2011 Talk
Web Performance Optimization - JAX 2011 Talk
 

Ähnlich wie Performance - a challenging craft

Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!Edureka!
 
Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!Edureka!
 
XRebel - Real Time Insight, Faster Apps
XRebel - Real Time Insight, Faster AppsXRebel - Real Time Insight, Faster Apps
XRebel - Real Time Insight, Faster AppsZeroTurnaround
 
Designing Self-maintaining UI Tests for Web Applications
Designing Self-maintaining UI Tests for Web ApplicationsDesigning Self-maintaining UI Tests for Web Applications
Designing Self-maintaining UI Tests for Web ApplicationsTechWell
 
10 Ways To Improve Your Code( Neal Ford)
10  Ways To  Improve  Your  Code( Neal  Ford)10  Ways To  Improve  Your  Code( Neal  Ford)
10 Ways To Improve Your Code( Neal Ford)guestebde
 
Testing in a glance
Testing in a glanceTesting in a glance
Testing in a glanceRajesh Kumar
 
Virtual Data : Eliminating the data constraint in Application Development
Virtual Data :  Eliminating the data constraint in Application DevelopmentVirtual Data :  Eliminating the data constraint in Application Development
Virtual Data : Eliminating the data constraint in Application DevelopmentKyle Hailey
 
Quality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceQuality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceThomas Zimmermann
 
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...Andreas Grabner
 
BTD2015 - Your Place In DevTOps is Finding Solutions - Not Just Bugs!
BTD2015 - Your Place In DevTOps is Finding Solutions - Not Just Bugs!BTD2015 - Your Place In DevTOps is Finding Solutions - Not Just Bugs!
BTD2015 - Your Place In DevTOps is Finding Solutions - Not Just Bugs!Andreas Grabner
 
I Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application TestingI Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application TestingPeter Presnell
 
Chaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just ChaosChaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just ChaosCharity Majors
 
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in FlexassertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flexmichael.labriola
 
Taming the Testing Beast - AgileDC 2012
Taming the Testing Beast - AgileDC 2012Taming the Testing Beast - AgileDC 2012
Taming the Testing Beast - AgileDC 2012Daniel Doubrovkine
 
Zagat.com Case Study (DrupalCon Denver 2012)
Zagat.com Case Study (DrupalCon Denver 2012)Zagat.com Case Study (DrupalCon Denver 2012)
Zagat.com Case Study (DrupalCon Denver 2012)Phase2
 

Ähnlich wie Performance - a challenging craft (20)

Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!
 
Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!Learn why use selenium with 3 million dollar bugs!
Learn why use selenium with 3 million dollar bugs!
 
XRebel - Real Time Insight, Faster Apps
XRebel - Real Time Insight, Faster AppsXRebel - Real Time Insight, Faster Apps
XRebel - Real Time Insight, Faster Apps
 
Designing Self-maintaining UI Tests for Web Applications
Designing Self-maintaining UI Tests for Web ApplicationsDesigning Self-maintaining UI Tests for Web Applications
Designing Self-maintaining UI Tests for Web Applications
 
10 Ways To Improve Your Code( Neal Ford)
10  Ways To  Improve  Your  Code( Neal  Ford)10  Ways To  Improve  Your  Code( Neal  Ford)
10 Ways To Improve Your Code( Neal Ford)
 
Tec314f
Tec314fTec314f
Tec314f
 
Testing in a glance
Testing in a glanceTesting in a glance
Testing in a glance
 
10 Ways To Improve Your Code
10 Ways To Improve Your Code10 Ways To Improve Your Code
10 Ways To Improve Your Code
 
Virtual Data : Eliminating the data constraint in Application Development
Virtual Data :  Eliminating the data constraint in Application DevelopmentVirtual Data :  Eliminating the data constraint in Application Development
Virtual Data : Eliminating the data constraint in Application Development
 
Tec314
Tec314Tec314
Tec314
 
Quality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceQuality of Bug Reports in Open Source
Quality of Bug Reports in Open Source
 
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
Performance Quality Metrics for Mobile Web and Mobile Native - Agile Testing ...
 
TxJS 2011
TxJS 2011TxJS 2011
TxJS 2011
 
BTD2015 - Your Place In DevTOps is Finding Solutions - Not Just Bugs!
BTD2015 - Your Place In DevTOps is Finding Solutions - Not Just Bugs!BTD2015 - Your Place In DevTOps is Finding Solutions - Not Just Bugs!
BTD2015 - Your Place In DevTOps is Finding Solutions - Not Just Bugs!
 
I Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application TestingI Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application Testing
 
Chaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just ChaosChaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just Chaos
 
Why test with flex unit
Why test with flex unitWhy test with flex unit
Why test with flex unit
 
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in FlexassertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
 
Taming the Testing Beast - AgileDC 2012
Taming the Testing Beast - AgileDC 2012Taming the Testing Beast - AgileDC 2012
Taming the Testing Beast - AgileDC 2012
 
Zagat.com Case Study (DrupalCon Denver 2012)
Zagat.com Case Study (DrupalCon Denver 2012)Zagat.com Case Study (DrupalCon Denver 2012)
Zagat.com Case Study (DrupalCon Denver 2012)
 

Mehr von Fabian Lange

Web Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 TalkWeb Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 TalkFabian Lange
 
Agile Development of High Performance Applications
Agile Development of High Performance ApplicationsAgile Development of High Performance Applications
Agile Development of High Performance ApplicationsFabian Lange
 
Rich Ajax Platform - Programming for Web and Rich Client
Rich Ajax Platform - Programming for Web and Rich ClientRich Ajax Platform - Programming for Web and Rich Client
Rich Ajax Platform - Programming for Web and Rich ClientFabian Lange
 
Codecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San JoseCodecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San JoseFabian Lange
 
Full Stack Web Application Performance Tuning
Full Stack Web Application Performance TuningFull Stack Web Application Performance Tuning
Full Stack Web Application Performance TuningFabian Lange
 

Mehr von Fabian Lange (7)

The SPDY Protocol
The SPDY ProtocolThe SPDY Protocol
The SPDY Protocol
 
Web Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 TalkWeb Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 Talk
 
Agile Development of High Performance Applications
Agile Development of High Performance ApplicationsAgile Development of High Performance Applications
Agile Development of High Performance Applications
 
Rich Ajax Platform - Programming for Web and Rich Client
Rich Ajax Platform - Programming for Web and Rich ClientRich Ajax Platform - Programming for Web and Rich Client
Rich Ajax Platform - Programming for Web and Rich Client
 
Ant Maven
Ant MavenAnt Maven
Ant Maven
 
Codecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San JoseCodecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San Jose
 
Full Stack Web Application Performance Tuning
Full Stack Web Application Performance TuningFull Stack Web Application Performance Tuning
Full Stack Web Application Performance Tuning
 

Kürzlich hochgeladen

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Kürzlich hochgeladen (20)

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

Performance - a challenging craft

  • 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
  • 6.  Correctness in detail  Research and verification Craft
  • 7.  All types share  Passion  Learning  Experience Which way?
  • 8.
  • 9.
  • 10.
  • 11.  Value == Money  We need a business case for performance Money  What is the impact of (in parts of the world) bad performance?
  • 12.  Amazon measured the impact of 100ms delay  Sales dropped by 1%  In a year that would be Typical (?) retailer 245 Million USD
  • 13.  Instable or slow software delays time to market  Slow software is no longer accepted by customers New?
  • 14.  Insurances like to send paper via mail  Not meeting deadlines can cause  Legal issues Snail Mail  Canceled contracts  Loss of money
  • 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
  • 31.  Can‘t we do anything before production?  We want to deliver something, Let users test? which works perfectly!
  • 32.  Optimizations might have no impact  Micro-Optimizations are Missed Target dangerous
  • 33.  Soft Measure  Works good for code quality Sonar  Are there performance best practices?
  • 34.  Yahoo Best Practices  Google Best Practices  Plenty of tools Good Waterfalls  Work well
  • 35.  Naive implementation looks fine  But is not multithreaded
  • 36.  This is threadsafe  But slow
  • 37.  This is correct  Correct synchronisation is hard
  • 38.  Check Log Level (Ugly)  Check Log Level (Nicer)
  • 39.  Static SimpleDateFormat is wrong  Working with Dates and Calendars is very expensive!
  • 40.
  • 41.  Some people misuse it as loop  Results are unexpected behavior or slow execution
  • 42.  Analyzes Java Bytecode  Knows 58 Performance Bugs  Most are rather trivial Indeed finds bugs
  • 43.  Detecting deadlocks is difficult  Many thesis's on deadlock detection Verifies Java  Few code
  • 44.  Hidden Gem  Tries to cause Deadlocks IBM Support Assistant
  • 45.  We need more and reliable  Code Performance Metrics  Best Practices  Tools
  • 47. Q&A
  • 48. Art  YSlow flickr.com/photos/37202375@N03/3490107873 developer.yahoo.com/yslow  Magic  Pagespeed flickr.com/photos/princes_milady/4238912548 code.google.com/speed/page-speed  Crossroads  Java Locking flickr.com/photos/40481200@N06/4857965280 en.wikipedia.org/wiki/Double-checked_locking  Envelopes  PHP Ternary Operator flickr.com/photos/creatingmotherhood/3663914542 fabien.potencier.org/article/48/the-php-ternary- operator-fast-or-not  Test flickr.com/photos/cayusa/2159980025  JavaScript for .. In stackoverflow.com/questions/500504/javascript-for-  Scales in-with-arrays flickr.com/photos/reinvented/309512320  Findbugs  Tape Measure findbugs.sourceforge.net flickr.com/photos/hippie/2466583497  Jlint  World jlint.sourceforge.net flickr.com/photos/heimdahlrecounts/4346082743  IBM Multicore SDK  Toys www- flickr.com/photos/sbluerock/364123380 01.ibm.com/support/docview.wss?uid=swg21456945  TPS flickr.com/photos/twitteroffice/5681263084  Bananas flickr.com/photos/design-dog/1249337589  Dart flickr.com/photos/malavoda/2369876508