SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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
 

Destacado

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
 

Destacado (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
 

Similar a 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
 

Similar a 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)
 

Más de 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
 

Más de 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
 

Último

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
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
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
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
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
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
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
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
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
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 

Último (20)

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
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
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
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
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
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
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
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
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
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 

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