SlideShare ist ein Scribd-Unternehmen logo
1 von 50
Downloaden Sie, um offline zu lesen
Performance? That's what version 2 is for!


 Eduard Tudenhöfner
Performance? That's what version 2 is for!

Overview
►   Introduction / Motivation

►   Performance Issues & Solution Strategies


►   How to proactively reduce risk of Performance Issues?


►   Conclusion
Introduction / Motivation
Why is performance important?



                              Trustworthy
     Real User Experience
                                        USABILITY
                          Profit
         Performance

                                     SPEED MATTERS
                 Stress
                                Revenue
Why is performance important?



                                   Trustworthy
        Real User Experience
                                             USABILITY
                               Profit
             Performance                                 Monitoring
                 Maintenance              SPEED MATTERS
Success Factor   Stress
      Bottlenecks
                                     Revenue
                Efficiency
Why is performance important?



                                   Trustworthy
        Real User Experience
                                             USABILITY
                               Profit
             Performance                                      Monitoring
                 Maintenance              SPEED MATTERS
Success Factor   Stress
      Bottlenecks
                                     Revenue           Economical
                Efficiency
     Less Resources             Stability          Security

  Conversion Rate FASTER                   More SPEED SLA Monitoring
Why is performance important?



                                      Trustworthy
        Real User Experience
                                                USABILITY
                               Profit
             Performance                                    Monitoring
                 Maintenance                 SPEED MATTERS
Success Factor   Stress
      Bottlenecks
                                           Revenue      Economical
                Efficiency
     Less Resources             Stability      Security

  Conversion Rate FASTER                More SPEED SLA Monitoring
                        Satisfied customers
                  Higher Fault Tolerance      BETTER
     Key Performance Indicators               Reputation
                                           SALES
Why is performance important?



A page that was 2 seconds slower      400 ms delay cause 0.59% drop
         results in a 4.3%                   in searches/user
      drop in revenue/user
              (Bing)                             (Google)


    400 ms slowdown cause           Introducing gzip compression resulted
   5-9% drop in full-page traffic   in 13-25% speedup and cut outbound
                                            network traffic by 50%
             (Yahoo)                               (Netflix)
                                                            Source: www.stevesouders.com




                  Investing in Performance
                        really pays off
Consequences of Poor Performance

Consequences
►   Damaged customer relations
      –   Reputation of the company suffers
      –   People will continue to associate poor performance with the product, even when
          the issue is fixed later on


►   Lost income & Delayed project schedules
      –   Revenue is lost
      –   Penalties have to be paid due to late delivery


►   Increased development & maintenance costs
      –   Delivering features requires more time and effort if performance issues are
          hindering the acceptance of those features
      –   Additional time and resources are required if performance issues are found
Consequences of Poor Performance

The cost to fix a performance issue
►   Is a Technical Debt (defined by Ward
    Cunningham)
       – doing things the quick&dirty way sets us
          up with technical debt


      –   technical debt incurs interest payments
          (in the form of additional effort)


      –   The later technical debt is payed         Source: Steven Haines. Pro Java EE 5: Performance Management
                                                                            and Optimization
          back, the higher the interest will be


►   So should we pay huge interest at the end or
    pay back technical debt every development
    cycle?
Performance Issues & Solution Strategies
Performance Issues & Solution Strategies



                      Application Server




 Client




              Databases
                                     Legacy Systems / Service Provider
Performance Issues & Solution Strategies



                      Application Server




                                                     Application
 Client




              Databases
                                     Legacy Systems / Service Provider
Performance Issues & Solution Strategies



                      Application Server




                                                     Application
 Client




              Databases
                                     Legacy Systems / Service Provider
Performance Issues & Solution Strategies

Client (UI / Browser)
►   Bloated Clients


►   Too many requests required until a page is fully loaded
      – Time to first impression



►   Very expensive DOM manipulations


►   Unsuitable communication patterns
      –   long running synchronous calls that block the UI


►   Network bandwidth
      –   especially in the mobile area
Performance Issues & Solution Strategies
                                           done with: www.webpagetest.org
                                           Chrome / DSL (1.5 Mbps/384Kbps)
                                                   50ms RTT
Performance Issues & Solution Strategies
                                                    done with: www.webpagetest.org
                                                    Chrome / DSL (1.5 Mbps/384Kbps)
                                                            50ms RTT

                                     DOM complete
                                      after 2.6 s




                                               Rendering starts
                                                  after 3.4 s


                 49 requests
                                                two uncompressed
                                                     images



                                                       3.9 s till page
                                                       is fully loaded
Performance Issues & Solution Strategies

Solution Approaches
►   Reducing RTTs by
      – Reducing number of resources

      –   Avoiding bad requests
      –   Combining CSS / JS resources (e.g. during build process)


►   Reducing Request overhead by
      –   Using compression (gzip, deflate, Zopfli)
      –   Minifying CSS / JS resources (cssminifier.com, jscompress.com)
Performance Issues & Solution Strategies

Solution Approaches
►   Placement of CSS and JS files
       – CSS at the top / JS at the bottom

      –   browser should start rendering as early as possible (user perceives a
          faster loading page)
      –   anything below the script is blocked from rendering and downloading until
          after the script is loaded (even when threads are available)→ entire page
          is delayed
Performance Issues & Solution Strategies




       How to achieve that in Java (e.g. in JSF)?
Performance Issues & Solution Strategies

How to achieve that in Java (e.g. in JSF)?
►   JAWR (jawr.java.net)
      – Built-in minification

      –   Enforced caching
      –   Bundling of resources
      –   CSS image sprite generation
      –   Can be integrated in Ant / Maven
      –   Can be used with JSF, Spring MVC, Wicket, Grails, ...
Performance Issues & Solution Strategies
                                                         source: jawr.java.net

   JAWR




What we would     How we want             How we can define
like to achieve    to structure             files bundles
                     our work
Performance Issues & Solution Strategies



                      Application Server




                                                     Application
 Client




              Databases
                                     Legacy Systems / Service Provider
Performance Issues & Solution Strategies

Memory
►   Memory leaks / OutOfMemoryErrors (but not every leak leads to
    OOME)

►   Unnecessary creation of expensive objects


►   inappropriate GC strategy / Heap sizing (for generational GC)
Performance Issues & Solution Strategies

Solution Approaches (Memory)
►   Generation sizing (for generational GC)
      – -XX:NewRatio=3 → 1:3 (Young:Old) → Young takes ¼ of what was specified with
        -Xmx
      –   Sizing proportion between Old/Young generation is important for performance
      –   e.g. if too many short-lived objects are created, they are moved to the old generation
      –   An oversized young generation can also cause performance problems
           ●
               JVM guarantees that GC runs on young generation
           ●
               space on old generation is reserved for emergencies (so that all objects can be
               copied)
      –   Memory analysis with e.g. VisualVM, -verbose:gc
Performance Issues & Solution Strategies

VisualVM with VisualGC Plugin
Performance Issues & Solution Strategies

Caching
►   Wrong caching strategy


►   Too much or the wrong stuff is cached


►   Inappropriate cache sizes (too small / too big)
Performance Issues & Solution Strategies

Solution Approaches (Caching)
►   What do we want at the end of the day?
     – Efficient caching to maximize cache hit ratio that also meets:

           ●
               Storage constraints
           ●
               Availability constraints
           ●
               Tolerance for staleness
►   What to cache?
      –   Easy: Slow-changing / mostly read-only data (metadata, configurations, …)
      –   Challenging: rapidly changing read-write data
      –   There will always be tradeoffs
►   Caching is not solution to everything
      –   Bigger cache → less memory available for servicing user requests
Performance Issues & Solution Strategies

Remote Boundaries
►   Remote boundaries too fine-grained → too chatty


►   remote communication often done transparently for the developer


►   increased round trips


►   increased serializations/deserializations


►   and of course: more memory usage
Performance Issues & Solution Strategies

Solution Approaches (Remote Boundaries)
►   Decrease number of remote calls → „The best call is the call that is not done“


►   Boundaries should be more coarse-grained e.g. by using wrapper classes (of
    course that contain only the really required information)

►   Depending on the communication parties (heterogeneous/homogeneous), the
    right protocol should be used
Performance Issues & Solution Strategies



                      Application Server




                                                     Application
 Client




              Databases
                                     Legacy Systems / Service Provider
Performance Issues & Solution Strategies

Databases (from an application's point-of-view)
►   More / Less data is retrieved than actually required


►   Same data is retrieved over and over again (n+1 query problem)

►   High normalization good for reducing redundancy, but bad for performance


►   Inappropriate connection pool sizes


►   Usage of O/R mappers
      – can lead to unexpected behavior if used in a wrong way

      –   possibilities of JPA framework not known or not used efficiently
Performance Issues & Solution Strategies

Solution Approaches (Databases / OR Mapper)
►   Data Retrieval
      – Read-Only queries (query.setHint(“eclipselink.read-only“, “true“))

           ●   improves performance by avoiding copying and change tracking the objects
      –   Fetch Joins
      –   Batch Reads
      –   Other loading optimizations
           ●   Use projection queries where appropriate
           ●   Use pagination for large result sets (query.setMaxResults(), query.setFirstResults())
           ●   Use named queries (likely to be precompiled by provider, reusability)


►   Updating Data
      –   Batch Update
           ●   allows a bunch of update operations to be performed as a single DB access
           ●   reduces round trips to the database
           <property name="eclipselink.jdbc.batch-writing" value="Oracle-JDBC"/>
Performance Issues & Solution Strategies

 Fetch Joins - Example
Query query = em.createQuery(“SELECT po from PurchaseOrder po WHERE
             po.status = 'ACTIVE' AND po.customer.address.city = 'Stuttgart'”);

List<PurchaseOrder> orders = query.getResultList();

for (PurchaseOrder order: orders) {
   order.getCustomer().getName();
}
Performance Issues & Solution Strategies

 Fetch Joins - Example
Query query = em.createQuery(“SELECT po from PurchaseOrder po WHERE
             po.status = 'ACTIVE' AND po.customer.address.city = 'Stuttgart'”);

List<PurchaseOrder> orders = query.getResultList();

for (PurchaseOrder order: orders) {
   order.getCustomer().getName();
}


         {returns N purchase orders} → 100 positions = 101 SQLs
Performance Issues & Solution Strategies

 Fetch Joins - Example
Query query = em.createQuery(“SELECT po from PurchaseOrder po WHERE
             po.status = 'ACTIVE' AND po.customer.address.city = 'Stuttgart'”);

List<PurchaseOrder> orders = query.getResultList();

for (PurchaseOrder order: orders) {
   order.getCustomer().getName();
}


         {returns N purchase orders} → 100 positions = 101 SQLs


         Better:
SELECT po from PurchaseOrder po FETCH JOIN po.customer...
Performance Issues & Solution Strategies

 Fetch Joins - Example
Query query = em.createQuery(“SELECT po from PurchaseOrder po WHERE
             po.status = 'ACTIVE' AND po.customer.address.city = 'Stuttgart'”);

List<PurchaseOrder> orders = query.getResultList();

for (PurchaseOrder order: orders) {
   order.getCustomer().getName();
}


         {returns N purchase orders} → 100 positions = 101 SQLs


         Better:
SELECT po from PurchaseOrder po FETCH JOIN po.customer...


          {returns N purchase orders} → 100 positions = 1 SQL

→ related objects will be joined into the query instead of being queried independently
Performance Issues & Solution Strategies

 Batch Reads - Example
Query query = em.createQuery(“SELECT po from PurchaseOrder po WHERE
             po.status = 'ACTIVE' AND po.customer.address.city = 'Stuttgart'”);

query.setHint(“eclipselink.batch”, “po.customer”);

...
Performance Issues & Solution Strategies

 Batch Reads - Example
Query query = em.createQuery(“SELECT po from PurchaseOrder po WHERE
             po.status = 'ACTIVE' AND po.customer.address.city = 'Stuttgart'”);

query.setHint(“eclipselink.batch”, “po.customer”);

...

         {returns N purchase orders} → 100 positions = 2 SQLs
                                       (one additional for each relationship)



 → subsequent queries of related objects can be optimized in batches instead of
    being retrieved one-by-one


 → Batch reading is more efficient than joining because it avoids reading
    duplicate data.
Performance Issues & Solution Strategies

Solution Approaches
►   Data Retrieval
      – Read-Only queries (query.setHint(“eclipselink.read-only“, “true“))

           ●   improves performance by avoiding copying and change tracking the objects
      –   Fetch Joins
      –   Batch Reads
      –   Other loading optimizations
           ●   Use projection queries where appropriate
           ●   Use pagination for large result sets (query.setMaxResults(), query.setFirstResults())
           ●   Use named queries (likely to be precompiled by provider, reusability)


►   Updating Data
      –   Batch Update
           ●   allows a bunch of update operations to be performed as a single DB access
           ●   reduces round trips to the database
           <property name="eclipselink.jdbc.batch-writing" value="Oracle-JDBC"/>
Performance Issues & Solution Strategies



                      Application Server




                                                     Application
 Client




              Databases
                                     Legacy Systems / Service Provider
Performance Issues & Solution Strategies

Legacy Systems / Service Provider
►   They are often out ouf our control


►   Legacy Systems
      – often very difficult to troubleshoot legacy systems

      –   running dinosaurs
      –   limited insight into those systems


►   Service Providers
      – No influence on them

      –   SLAs
      –   What do you do if your PaaS provider has connection issues or is down?
How to proactively reduce risk of Performance Issues?
How to proactively reduce risk of Performance Issues?

Pragmatic Solution Approach
►   1. From a general point-of-view
       – Define someone that is responsible for Performance Management in the
          project


      –   Identify Performance Risks early


      –   Define Performance Objectives (measurable & realistic)
           ●
               otherwise there is a risk that objectives are simply ignored because
               too difficult to achieve


      –   Conduct Architectural Reviews (continually)
           ●
               to find out whether the architecture is really capable of meeting
               performance objectives
How to proactively reduce risk of Performance Issues?

Pragmatic Solution Approach
►   1. From a general point-of-view
       – Do Performance Tests (before application goes to production)



      –   Monitor your Application (especially in PreProduction & Production)
           ●
               to find out how the application is really used (application usage
               pattterns)
           ●
               to identify trends (important for capacity planning)


      –   Know your users
How to proactively reduce risk of Performance Issues?

Pragmatic Solution Approach
►   2. From a technical point-of-view
       – Know the used technologies



      –   Always look out for possible performance improvements in those technical
          areas
           ●   Important: analyze the effects of „improvements“ and „Best Practices“


      –   Pay back technical debt as soon as possible


      –   Add small performance tests and not just unit tests (and automate them)
Conclusion
Conclusion

Conclusion
►   Investing time & money in performance really pays off


►   There needs to be someone responsible for APM


►   Performance issues can reside anywhere in an architecture
      – Architectural reviews, performance tests, aware
          developers/architects/testers can help in reducing the risk


►   From the managements point-of-view it seems that performance engineering
    seems to cause initially more costs than bringing value
      –   Problem: difficult to demonstrate success, but poorly performing
          applications are clearly observable as failures
          “Why do we have performance engineers
          if we don't have performance problems?”            by Connie U. Smith
eduard.tudenhoefner@adesso.de
www.adesso.de
@etudenhoefner at Twitter
             Performance Matters!
                                    http://goo.gl/zwML7
Thank you for your Attention!




eduard.tudenhoefner@adesso.de
www.adesso.de
@etudenhoefner at Twitter

Weitere ähnliche Inhalte

Was ist angesagt?

Impact 2012 1640 - BPM Design considerations when optimizing business process...
Impact 2012 1640 - BPM Design considerations when optimizing business process...Impact 2012 1640 - BPM Design considerations when optimizing business process...
Impact 2012 1640 - BPM Design considerations when optimizing business process...Brian Petrini
 
High Octane Productivity
High Octane ProductivityHigh Octane Productivity
High Octane ProductivityRaman Kannan
 
Cordys Cloud Harbor Webinar 15 Dec09
Cordys Cloud Harbor Webinar 15 Dec09Cordys Cloud Harbor Webinar 15 Dec09
Cordys Cloud Harbor Webinar 15 Dec09gaborfulop
 
ID114 - Wrestling the Snake: Performance Tuning 101
ID114 - Wrestling the Snake: Performance Tuning 101ID114 - Wrestling the Snake: Performance Tuning 101
ID114 - Wrestling the Snake: Performance Tuning 101Wes Morgan
 
BPM Model Preserving Strategy vs. Model Transforming Strategy
BPM Model Preserving Strategy vs. Model Transforming StrategyBPM Model Preserving Strategy vs. Model Transforming Strategy
BPM Model Preserving Strategy vs. Model Transforming StrategyKeith Swenson
 
Astute Business Solutions - Fast Track Impact Analysis for PeopleSoft 9.2 Upg...
Astute Business Solutions - Fast Track Impact Analysis for PeopleSoft 9.2 Upg...Astute Business Solutions - Fast Track Impact Analysis for PeopleSoft 9.2 Upg...
Astute Business Solutions - Fast Track Impact Analysis for PeopleSoft 9.2 Upg...Arvind Rajan
 
Veeam Product info - Backup Standard vs. Enterprise Edition
Veeam Product info -  Backup Standard vs. Enterprise EditionVeeam Product info -  Backup Standard vs. Enterprise Edition
Veeam Product info - Backup Standard vs. Enterprise EditionSuministros Obras y Sistemas
 
Ascentn AgilePoint 2009
Ascentn AgilePoint 2009Ascentn AgilePoint 2009
Ascentn AgilePoint 2009hanshantson
 
Elastic caching for scalability, dynamic growth and performance
Elastic caching for scalability, dynamic growth and performanceElastic caching for scalability, dynamic growth and performance
Elastic caching for scalability, dynamic growth and performancecathylums
 
Impact 2008 1994A - Exposing services people want to consume: a model-driven ...
Impact 2008 1994A - Exposing services people want to consume: a model-driven ...Impact 2008 1994A - Exposing services people want to consume: a model-driven ...
Impact 2008 1994A - Exposing services people want to consume: a model-driven ...Brian Petrini
 
2013 OTM EU SIG evolv applications Data Management
2013 OTM EU SIG evolv applications Data Management2013 OTM EU SIG evolv applications Data Management
2013 OTM EU SIG evolv applications Data ManagementMavenWire
 
Novell Success Stories: Endpoint Management in Education
Novell Success Stories: Endpoint Management in EducationNovell Success Stories: Endpoint Management in Education
Novell Success Stories: Endpoint Management in EducationNovell
 
Macleans - NZ Business taking on the world with a world class IT infrastructu...
Macleans - NZ Business taking on the world with a world class IT infrastructu...Macleans - NZ Business taking on the world with a world class IT infrastructu...
Macleans - NZ Business taking on the world with a world class IT infrastructu...Vincent Kwon
 
VMware View – Storage Considerations
VMware View – Storage ConsiderationsVMware View – Storage Considerations
VMware View – Storage ConsiderationsCalin Damian Tanase
 
Clm Deployment Options - Scaling the Collaborative Lifecycle Management (CLM)...
Clm Deployment Options - Scaling the Collaborative Lifecycle Management (CLM)...Clm Deployment Options - Scaling the Collaborative Lifecycle Management (CLM)...
Clm Deployment Options - Scaling the Collaborative Lifecycle Management (CLM)...Ralph Schoon
 
Plasma fusion(tm) bpm brochure
Plasma fusion(tm) bpm brochurePlasma fusion(tm) bpm brochure
Plasma fusion(tm) bpm brochureryanroberts1313
 

Was ist angesagt? (18)

Impact 2012 1640 - BPM Design considerations when optimizing business process...
Impact 2012 1640 - BPM Design considerations when optimizing business process...Impact 2012 1640 - BPM Design considerations when optimizing business process...
Impact 2012 1640 - BPM Design considerations when optimizing business process...
 
High Octane Productivity
High Octane ProductivityHigh Octane Productivity
High Octane Productivity
 
Cordys Cloud Harbor Webinar 15 Dec09
Cordys Cloud Harbor Webinar 15 Dec09Cordys Cloud Harbor Webinar 15 Dec09
Cordys Cloud Harbor Webinar 15 Dec09
 
ID114 - Wrestling the Snake: Performance Tuning 101
ID114 - Wrestling the Snake: Performance Tuning 101ID114 - Wrestling the Snake: Performance Tuning 101
ID114 - Wrestling the Snake: Performance Tuning 101
 
BPM Model Preserving Strategy vs. Model Transforming Strategy
BPM Model Preserving Strategy vs. Model Transforming StrategyBPM Model Preserving Strategy vs. Model Transforming Strategy
BPM Model Preserving Strategy vs. Model Transforming Strategy
 
Astute Business Solutions - Fast Track Impact Analysis for PeopleSoft 9.2 Upg...
Astute Business Solutions - Fast Track Impact Analysis for PeopleSoft 9.2 Upg...Astute Business Solutions - Fast Track Impact Analysis for PeopleSoft 9.2 Upg...
Astute Business Solutions - Fast Track Impact Analysis for PeopleSoft 9.2 Upg...
 
Veeam Product info - Backup Standard vs. Enterprise Edition
Veeam Product info -  Backup Standard vs. Enterprise EditionVeeam Product info -  Backup Standard vs. Enterprise Edition
Veeam Product info - Backup Standard vs. Enterprise Edition
 
Streamline it & save with virtualization
Streamline it & save with virtualizationStreamline it & save with virtualization
Streamline it & save with virtualization
 
Ascentn AgilePoint 2009
Ascentn AgilePoint 2009Ascentn AgilePoint 2009
Ascentn AgilePoint 2009
 
Elastic caching for scalability, dynamic growth and performance
Elastic caching for scalability, dynamic growth and performanceElastic caching for scalability, dynamic growth and performance
Elastic caching for scalability, dynamic growth and performance
 
Impact 2008 1994A - Exposing services people want to consume: a model-driven ...
Impact 2008 1994A - Exposing services people want to consume: a model-driven ...Impact 2008 1994A - Exposing services people want to consume: a model-driven ...
Impact 2008 1994A - Exposing services people want to consume: a model-driven ...
 
2013 OTM EU SIG evolv applications Data Management
2013 OTM EU SIG evolv applications Data Management2013 OTM EU SIG evolv applications Data Management
2013 OTM EU SIG evolv applications Data Management
 
Novell Success Stories: Endpoint Management in Education
Novell Success Stories: Endpoint Management in EducationNovell Success Stories: Endpoint Management in Education
Novell Success Stories: Endpoint Management in Education
 
Macleans - NZ Business taking on the world with a world class IT infrastructu...
Macleans - NZ Business taking on the world with a world class IT infrastructu...Macleans - NZ Business taking on the world with a world class IT infrastructu...
Macleans - NZ Business taking on the world with a world class IT infrastructu...
 
VMware View – Storage Considerations
VMware View – Storage ConsiderationsVMware View – Storage Considerations
VMware View – Storage Considerations
 
Clm Deployment Options - Scaling the Collaborative Lifecycle Management (CLM)...
Clm Deployment Options - Scaling the Collaborative Lifecycle Management (CLM)...Clm Deployment Options - Scaling the Collaborative Lifecycle Management (CLM)...
Clm Deployment Options - Scaling the Collaborative Lifecycle Management (CLM)...
 
How to Build a World-Class Back Office
How to Build a World-Class Back OfficeHow to Build a World-Class Back Office
How to Build a World-Class Back Office
 
Plasma fusion(tm) bpm brochure
Plasma fusion(tm) bpm brochurePlasma fusion(tm) bpm brochure
Plasma fusion(tm) bpm brochure
 

Andere mochten auch

Salla -in the middle of nowhere spring 2013
Salla -in the middle of nowhere spring 2013Salla -in the middle of nowhere spring 2013
Salla -in the middle of nowhere spring 2013visitsalla
 
Cpd ch 4 vision of career
Cpd ch 4 vision of careerCpd ch 4 vision of career
Cpd ch 4 vision of careerKamlesh Joshi
 
Irland
IrlandIrland
IrlandKwitti
 
66. Türkiye Jeoloji Kurultayı CVM Ltd. Şti. Bildirisi (4 Nisan 2013)
66. Türkiye Jeoloji Kurultayı CVM Ltd. Şti. Bildirisi (4 Nisan 2013)66. Türkiye Jeoloji Kurultayı CVM Ltd. Şti. Bildirisi (4 Nisan 2013)
66. Türkiye Jeoloji Kurultayı CVM Ltd. Şti. Bildirisi (4 Nisan 2013)Levent Sabah
 
Corp handyman presentation 2013
Corp handyman presentation   2013Corp handyman presentation   2013
Corp handyman presentation 2013Oldřich NAVRÁTIL
 
Introducing container as-a-service support to apache libcloud
Introducing container as-a-service support to apache libcloudIntroducing container as-a-service support to apache libcloud
Introducing container as-a-service support to apache libcloudAnthony Shaw
 
الموظفون الاشباح بوزارة التربية الوطنية
الموظفون الاشباح بوزارة التربية الوطنيةالموظفون الاشباح بوزارة التربية الوطنية
الموظفون الاشباح بوزارة التربية الوطنيةViral00Z
 
Generic Accutane for Treatment of Moderate to Severe Acne
Generic Accutane for Treatment of Moderate to Severe AcneGeneric Accutane for Treatment of Moderate to Severe Acne
Generic Accutane for Treatment of Moderate to Severe AcneThe Swiss Pharmacy
 
Pathopyshiology of Intestinal Obstruction CHIRANTAN MANDAL Medical College ko...
Pathopyshiology of Intestinal Obstruction CHIRANTAN MANDAL Medical College ko...Pathopyshiology of Intestinal Obstruction CHIRANTAN MANDAL Medical College ko...
Pathopyshiology of Intestinal Obstruction CHIRANTAN MANDAL Medical College ko...Chirantan MD
 
Slides gestão da força de vendas
Slides gestão da força de vendasSlides gestão da força de vendas
Slides gestão da força de vendasLiana Teixeira
 
Modalità di lavoro dei sistemi operativi
Modalità di lavoro dei sistemi operativiModalità di lavoro dei sistemi operativi
Modalità di lavoro dei sistemi operativiRodolfo
 
05 Westpac-Jan-2013_Spark Nomination by April Denton - Team Leader
05 Westpac-Jan-2013_Spark Nomination by April Denton - Team Leader05 Westpac-Jan-2013_Spark Nomination by April Denton - Team Leader
05 Westpac-Jan-2013_Spark Nomination by April Denton - Team LeaderMuhammad Mamun
 

Andere mochten auch (19)

Salla -in the middle of nowhere spring 2013
Salla -in the middle of nowhere spring 2013Salla -in the middle of nowhere spring 2013
Salla -in the middle of nowhere spring 2013
 
Cpd ch 4 vision of career
Cpd ch 4 vision of careerCpd ch 4 vision of career
Cpd ch 4 vision of career
 
Irland
IrlandIrland
Irland
 
Sesion de desastres
Sesion de desastresSesion de desastres
Sesion de desastres
 
SOFIT #1/2013
SOFIT #1/2013SOFIT #1/2013
SOFIT #1/2013
 
Ensayo final presentacion
Ensayo final presentacionEnsayo final presentacion
Ensayo final presentacion
 
66. Türkiye Jeoloji Kurultayı CVM Ltd. Şti. Bildirisi (4 Nisan 2013)
66. Türkiye Jeoloji Kurultayı CVM Ltd. Şti. Bildirisi (4 Nisan 2013)66. Türkiye Jeoloji Kurultayı CVM Ltd. Şti. Bildirisi (4 Nisan 2013)
66. Türkiye Jeoloji Kurultayı CVM Ltd. Şti. Bildirisi (4 Nisan 2013)
 
Eurogen v
Eurogen vEurogen v
Eurogen v
 
Rehabilitacion con d.t.m
Rehabilitacion con d.t.mRehabilitacion con d.t.m
Rehabilitacion con d.t.m
 
Corp handyman presentation 2013
Corp handyman presentation   2013Corp handyman presentation   2013
Corp handyman presentation 2013
 
Introducing container as-a-service support to apache libcloud
Introducing container as-a-service support to apache libcloudIntroducing container as-a-service support to apache libcloud
Introducing container as-a-service support to apache libcloud
 
الموظفون الاشباح بوزارة التربية الوطنية
الموظفون الاشباح بوزارة التربية الوطنيةالموظفون الاشباح بوزارة التربية الوطنية
الموظفون الاشباح بوزارة التربية الوطنية
 
Generic Accutane for Treatment of Moderate to Severe Acne
Generic Accutane for Treatment of Moderate to Severe AcneGeneric Accutane for Treatment of Moderate to Severe Acne
Generic Accutane for Treatment of Moderate to Severe Acne
 
Ecología y contaminación ambiental
Ecología y contaminación ambientalEcología y contaminación ambiental
Ecología y contaminación ambiental
 
Pathopyshiology of Intestinal Obstruction CHIRANTAN MANDAL Medical College ko...
Pathopyshiology of Intestinal Obstruction CHIRANTAN MANDAL Medical College ko...Pathopyshiology of Intestinal Obstruction CHIRANTAN MANDAL Medical College ko...
Pathopyshiology of Intestinal Obstruction CHIRANTAN MANDAL Medical College ko...
 
Glaucoma
GlaucomaGlaucoma
Glaucoma
 
Slides gestão da força de vendas
Slides gestão da força de vendasSlides gestão da força de vendas
Slides gestão da força de vendas
 
Modalità di lavoro dei sistemi operativi
Modalità di lavoro dei sistemi operativiModalità di lavoro dei sistemi operativi
Modalità di lavoro dei sistemi operativi
 
05 Westpac-Jan-2013_Spark Nomination by April Denton - Team Leader
05 Westpac-Jan-2013_Spark Nomination by April Denton - Team Leader05 Westpac-Jan-2013_Spark Nomination by April Denton - Team Leader
05 Westpac-Jan-2013_Spark Nomination by April Denton - Team Leader
 

Ähnlich wie Berlin Expert Days 2013 - Performance Talk

Performance? That's what version 2 is for!
Performance? That's what version 2 is for!Performance? That's what version 2 is for!
Performance? That's what version 2 is for!Eduard Tudenhoefner
 
Cloud native defined
Cloud native definedCloud native defined
Cloud native definedKim Clark
 
Performance Testing For Small Projects
Performance Testing For Small ProjectsPerformance Testing For Small Projects
Performance Testing For Small ProjectsMaksym Voitko
 
Application Lifecycle Management & VSTS
Application Lifecycle Management & VSTSApplication Lifecycle Management & VSTS
Application Lifecycle Management & VSTSMicrosoft Iceland
 
eG Enterprise Citrix XenDesktop Monitor Product Tour
eG Enterprise Citrix XenDesktop Monitor Product ToureG Enterprise Citrix XenDesktop Monitor Product Tour
eG Enterprise Citrix XenDesktop Monitor Product ToureG Innovations
 
Faster apps. faster time to market. faster mean time to repair
Faster apps. faster time to market. faster mean time to repairFaster apps. faster time to market. faster mean time to repair
Faster apps. faster time to market. faster mean time to repairCompuware ASEAN
 
From web interface to the database:Monitor all that matters
From web interface to the database:Monitor all that mattersFrom web interface to the database:Monitor all that matters
From web interface to the database:Monitor all that mattersManageEngine, Zoho Corporation
 
Application Acceleration: Faster Performance for End Users
Application Acceleration: Faster Performance for End Users	Application Acceleration: Faster Performance for End Users
Application Acceleration: Faster Performance for End Users Eric Kavanagh
 
T3 Consortium's Performance Center of Excellence
T3 Consortium's Performance Center of ExcellenceT3 Consortium's Performance Center of Excellence
T3 Consortium's Performance Center of Excellenceveehikle
 
Encontrando la Aguja en el Rendimiento de Aplicaciones
Encontrando la Aguja en el Rendimiento de AplicacionesEncontrando la Aguja en el Rendimiento de Aplicaciones
Encontrando la Aguja en el Rendimiento de AplicacionesSoftware Guru
 
Maximizing Virtualization ROI
Maximizing Virtualization ROIMaximizing Virtualization ROI
Maximizing Virtualization ROIstanyarbrough
 
Performance Testing from Scratch + JMeter intro
Performance Testing from Scratch + JMeter introPerformance Testing from Scratch + JMeter intro
Performance Testing from Scratch + JMeter introMykola Kovsh
 
Peter McTaggart - Renewtek - Achieving Hero Status with WebLogic Server
Peter McTaggart - Renewtek - Achieving Hero Status with WebLogic ServerPeter McTaggart - Renewtek - Achieving Hero Status with WebLogic Server
Peter McTaggart - Renewtek - Achieving Hero Status with WebLogic ServerSaul Cunningham
 
Микола Ковш “Performance Testing Implementation From Scratch. Why? When and H...
Микола Ковш “Performance Testing Implementation From Scratch. Why? When and H...Микола Ковш “Performance Testing Implementation From Scratch. Why? When and H...
Микола Ковш “Performance Testing Implementation From Scratch. Why? When and H...Dakiry
 
Performance Management In The New Frontier Of Rich Internet Applications
Performance Management In The New Frontier Of Rich Internet ApplicationsPerformance Management In The New Frontier Of Rich Internet Applications
Performance Management In The New Frontier Of Rich Internet ApplicationsBen Rushlo
 
Real User Experience Insight
Real User Experience InsightReal User Experience Insight
Real User Experience Insightruiruitang
 
Real User Experience Insight
Real User Experience InsightReal User Experience Insight
Real User Experience Insightruiruitang
 
Real User Experience Insight
Real User Experience InsightReal User Experience Insight
Real User Experience Insightruiruitang
 
Next Generation Datacenter Oracle - Alan Hartwell
Next Generation Datacenter Oracle - Alan HartwellNext Generation Datacenter Oracle - Alan Hartwell
Next Generation Datacenter Oracle - Alan HartwellHPDutchWorld
 
Oracle - Next Generation Datacenter - Alan Hartwell
Oracle - Next Generation Datacenter - Alan HartwellOracle - Next Generation Datacenter - Alan Hartwell
Oracle - Next Generation Datacenter - Alan HartwellHPDutchWorld
 

Ähnlich wie Berlin Expert Days 2013 - Performance Talk (20)

Performance? That's what version 2 is for!
Performance? That's what version 2 is for!Performance? That's what version 2 is for!
Performance? That's what version 2 is for!
 
Cloud native defined
Cloud native definedCloud native defined
Cloud native defined
 
Performance Testing For Small Projects
Performance Testing For Small ProjectsPerformance Testing For Small Projects
Performance Testing For Small Projects
 
Application Lifecycle Management & VSTS
Application Lifecycle Management & VSTSApplication Lifecycle Management & VSTS
Application Lifecycle Management & VSTS
 
eG Enterprise Citrix XenDesktop Monitor Product Tour
eG Enterprise Citrix XenDesktop Monitor Product ToureG Enterprise Citrix XenDesktop Monitor Product Tour
eG Enterprise Citrix XenDesktop Monitor Product Tour
 
Faster apps. faster time to market. faster mean time to repair
Faster apps. faster time to market. faster mean time to repairFaster apps. faster time to market. faster mean time to repair
Faster apps. faster time to market. faster mean time to repair
 
From web interface to the database:Monitor all that matters
From web interface to the database:Monitor all that mattersFrom web interface to the database:Monitor all that matters
From web interface to the database:Monitor all that matters
 
Application Acceleration: Faster Performance for End Users
Application Acceleration: Faster Performance for End Users	Application Acceleration: Faster Performance for End Users
Application Acceleration: Faster Performance for End Users
 
T3 Consortium's Performance Center of Excellence
T3 Consortium's Performance Center of ExcellenceT3 Consortium's Performance Center of Excellence
T3 Consortium's Performance Center of Excellence
 
Encontrando la Aguja en el Rendimiento de Aplicaciones
Encontrando la Aguja en el Rendimiento de AplicacionesEncontrando la Aguja en el Rendimiento de Aplicaciones
Encontrando la Aguja en el Rendimiento de Aplicaciones
 
Maximizing Virtualization ROI
Maximizing Virtualization ROIMaximizing Virtualization ROI
Maximizing Virtualization ROI
 
Performance Testing from Scratch + JMeter intro
Performance Testing from Scratch + JMeter introPerformance Testing from Scratch + JMeter intro
Performance Testing from Scratch + JMeter intro
 
Peter McTaggart - Renewtek - Achieving Hero Status with WebLogic Server
Peter McTaggart - Renewtek - Achieving Hero Status with WebLogic ServerPeter McTaggart - Renewtek - Achieving Hero Status with WebLogic Server
Peter McTaggart - Renewtek - Achieving Hero Status with WebLogic Server
 
Микола Ковш “Performance Testing Implementation From Scratch. Why? When and H...
Микола Ковш “Performance Testing Implementation From Scratch. Why? When and H...Микола Ковш “Performance Testing Implementation From Scratch. Why? When and H...
Микола Ковш “Performance Testing Implementation From Scratch. Why? When and H...
 
Performance Management In The New Frontier Of Rich Internet Applications
Performance Management In The New Frontier Of Rich Internet ApplicationsPerformance Management In The New Frontier Of Rich Internet Applications
Performance Management In The New Frontier Of Rich Internet Applications
 
Real User Experience Insight
Real User Experience InsightReal User Experience Insight
Real User Experience Insight
 
Real User Experience Insight
Real User Experience InsightReal User Experience Insight
Real User Experience Insight
 
Real User Experience Insight
Real User Experience InsightReal User Experience Insight
Real User Experience Insight
 
Next Generation Datacenter Oracle - Alan Hartwell
Next Generation Datacenter Oracle - Alan HartwellNext Generation Datacenter Oracle - Alan Hartwell
Next Generation Datacenter Oracle - Alan Hartwell
 
Oracle - Next Generation Datacenter - Alan Hartwell
Oracle - Next Generation Datacenter - Alan HartwellOracle - Next Generation Datacenter - Alan Hartwell
Oracle - Next Generation Datacenter - Alan Hartwell
 

Berlin Expert Days 2013 - Performance Talk

  • 1. Performance? That's what version 2 is for! Eduard Tudenhöfner
  • 2. Performance? That's what version 2 is for! Overview ► Introduction / Motivation ► Performance Issues & Solution Strategies ► How to proactively reduce risk of Performance Issues? ► Conclusion
  • 4. Why is performance important? Trustworthy Real User Experience USABILITY Profit Performance SPEED MATTERS Stress Revenue
  • 5. Why is performance important? Trustworthy Real User Experience USABILITY Profit Performance Monitoring Maintenance SPEED MATTERS Success Factor Stress Bottlenecks Revenue Efficiency
  • 6. Why is performance important? Trustworthy Real User Experience USABILITY Profit Performance Monitoring Maintenance SPEED MATTERS Success Factor Stress Bottlenecks Revenue Economical Efficiency Less Resources Stability Security Conversion Rate FASTER More SPEED SLA Monitoring
  • 7. Why is performance important? Trustworthy Real User Experience USABILITY Profit Performance Monitoring Maintenance SPEED MATTERS Success Factor Stress Bottlenecks Revenue Economical Efficiency Less Resources Stability Security Conversion Rate FASTER More SPEED SLA Monitoring Satisfied customers Higher Fault Tolerance BETTER Key Performance Indicators Reputation SALES
  • 8. Why is performance important? A page that was 2 seconds slower 400 ms delay cause 0.59% drop results in a 4.3% in searches/user drop in revenue/user (Bing) (Google) 400 ms slowdown cause Introducing gzip compression resulted 5-9% drop in full-page traffic in 13-25% speedup and cut outbound network traffic by 50% (Yahoo) (Netflix) Source: www.stevesouders.com Investing in Performance really pays off
  • 9. Consequences of Poor Performance Consequences ► Damaged customer relations – Reputation of the company suffers – People will continue to associate poor performance with the product, even when the issue is fixed later on ► Lost income & Delayed project schedules – Revenue is lost – Penalties have to be paid due to late delivery ► Increased development & maintenance costs – Delivering features requires more time and effort if performance issues are hindering the acceptance of those features – Additional time and resources are required if performance issues are found
  • 10. Consequences of Poor Performance The cost to fix a performance issue ► Is a Technical Debt (defined by Ward Cunningham) – doing things the quick&dirty way sets us up with technical debt – technical debt incurs interest payments (in the form of additional effort) – The later technical debt is payed Source: Steven Haines. Pro Java EE 5: Performance Management and Optimization back, the higher the interest will be ► So should we pay huge interest at the end or pay back technical debt every development cycle?
  • 11. Performance Issues & Solution Strategies
  • 12. Performance Issues & Solution Strategies Application Server Client Databases Legacy Systems / Service Provider
  • 13. Performance Issues & Solution Strategies Application Server Application Client Databases Legacy Systems / Service Provider
  • 14. Performance Issues & Solution Strategies Application Server Application Client Databases Legacy Systems / Service Provider
  • 15. Performance Issues & Solution Strategies Client (UI / Browser) ► Bloated Clients ► Too many requests required until a page is fully loaded – Time to first impression ► Very expensive DOM manipulations ► Unsuitable communication patterns – long running synchronous calls that block the UI ► Network bandwidth – especially in the mobile area
  • 16. Performance Issues & Solution Strategies done with: www.webpagetest.org Chrome / DSL (1.5 Mbps/384Kbps) 50ms RTT
  • 17. Performance Issues & Solution Strategies done with: www.webpagetest.org Chrome / DSL (1.5 Mbps/384Kbps) 50ms RTT DOM complete after 2.6 s Rendering starts after 3.4 s 49 requests two uncompressed images 3.9 s till page is fully loaded
  • 18. Performance Issues & Solution Strategies Solution Approaches ► Reducing RTTs by – Reducing number of resources – Avoiding bad requests – Combining CSS / JS resources (e.g. during build process) ► Reducing Request overhead by – Using compression (gzip, deflate, Zopfli) – Minifying CSS / JS resources (cssminifier.com, jscompress.com)
  • 19. Performance Issues & Solution Strategies Solution Approaches ► Placement of CSS and JS files – CSS at the top / JS at the bottom – browser should start rendering as early as possible (user perceives a faster loading page) – anything below the script is blocked from rendering and downloading until after the script is loaded (even when threads are available)→ entire page is delayed
  • 20. Performance Issues & Solution Strategies How to achieve that in Java (e.g. in JSF)?
  • 21. Performance Issues & Solution Strategies How to achieve that in Java (e.g. in JSF)? ► JAWR (jawr.java.net) – Built-in minification – Enforced caching – Bundling of resources – CSS image sprite generation – Can be integrated in Ant / Maven – Can be used with JSF, Spring MVC, Wicket, Grails, ...
  • 22. Performance Issues & Solution Strategies source: jawr.java.net JAWR What we would How we want How we can define like to achieve to structure files bundles our work
  • 23. Performance Issues & Solution Strategies Application Server Application Client Databases Legacy Systems / Service Provider
  • 24. Performance Issues & Solution Strategies Memory ► Memory leaks / OutOfMemoryErrors (but not every leak leads to OOME) ► Unnecessary creation of expensive objects ► inappropriate GC strategy / Heap sizing (for generational GC)
  • 25. Performance Issues & Solution Strategies Solution Approaches (Memory) ► Generation sizing (for generational GC) – -XX:NewRatio=3 → 1:3 (Young:Old) → Young takes ¼ of what was specified with -Xmx – Sizing proportion between Old/Young generation is important for performance – e.g. if too many short-lived objects are created, they are moved to the old generation – An oversized young generation can also cause performance problems ● JVM guarantees that GC runs on young generation ● space on old generation is reserved for emergencies (so that all objects can be copied) – Memory analysis with e.g. VisualVM, -verbose:gc
  • 26. Performance Issues & Solution Strategies VisualVM with VisualGC Plugin
  • 27. Performance Issues & Solution Strategies Caching ► Wrong caching strategy ► Too much or the wrong stuff is cached ► Inappropriate cache sizes (too small / too big)
  • 28. Performance Issues & Solution Strategies Solution Approaches (Caching) ► What do we want at the end of the day? – Efficient caching to maximize cache hit ratio that also meets: ● Storage constraints ● Availability constraints ● Tolerance for staleness ► What to cache? – Easy: Slow-changing / mostly read-only data (metadata, configurations, …) – Challenging: rapidly changing read-write data – There will always be tradeoffs ► Caching is not solution to everything – Bigger cache → less memory available for servicing user requests
  • 29. Performance Issues & Solution Strategies Remote Boundaries ► Remote boundaries too fine-grained → too chatty ► remote communication often done transparently for the developer ► increased round trips ► increased serializations/deserializations ► and of course: more memory usage
  • 30. Performance Issues & Solution Strategies Solution Approaches (Remote Boundaries) ► Decrease number of remote calls → „The best call is the call that is not done“ ► Boundaries should be more coarse-grained e.g. by using wrapper classes (of course that contain only the really required information) ► Depending on the communication parties (heterogeneous/homogeneous), the right protocol should be used
  • 31. Performance Issues & Solution Strategies Application Server Application Client Databases Legacy Systems / Service Provider
  • 32. Performance Issues & Solution Strategies Databases (from an application's point-of-view) ► More / Less data is retrieved than actually required ► Same data is retrieved over and over again (n+1 query problem) ► High normalization good for reducing redundancy, but bad for performance ► Inappropriate connection pool sizes ► Usage of O/R mappers – can lead to unexpected behavior if used in a wrong way – possibilities of JPA framework not known or not used efficiently
  • 33. Performance Issues & Solution Strategies Solution Approaches (Databases / OR Mapper) ► Data Retrieval – Read-Only queries (query.setHint(“eclipselink.read-only“, “true“)) ● improves performance by avoiding copying and change tracking the objects – Fetch Joins – Batch Reads – Other loading optimizations ● Use projection queries where appropriate ● Use pagination for large result sets (query.setMaxResults(), query.setFirstResults()) ● Use named queries (likely to be precompiled by provider, reusability) ► Updating Data – Batch Update ● allows a bunch of update operations to be performed as a single DB access ● reduces round trips to the database <property name="eclipselink.jdbc.batch-writing" value="Oracle-JDBC"/>
  • 34. Performance Issues & Solution Strategies Fetch Joins - Example Query query = em.createQuery(“SELECT po from PurchaseOrder po WHERE po.status = 'ACTIVE' AND po.customer.address.city = 'Stuttgart'”); List<PurchaseOrder> orders = query.getResultList(); for (PurchaseOrder order: orders) { order.getCustomer().getName(); }
  • 35. Performance Issues & Solution Strategies Fetch Joins - Example Query query = em.createQuery(“SELECT po from PurchaseOrder po WHERE po.status = 'ACTIVE' AND po.customer.address.city = 'Stuttgart'”); List<PurchaseOrder> orders = query.getResultList(); for (PurchaseOrder order: orders) { order.getCustomer().getName(); } {returns N purchase orders} → 100 positions = 101 SQLs
  • 36. Performance Issues & Solution Strategies Fetch Joins - Example Query query = em.createQuery(“SELECT po from PurchaseOrder po WHERE po.status = 'ACTIVE' AND po.customer.address.city = 'Stuttgart'”); List<PurchaseOrder> orders = query.getResultList(); for (PurchaseOrder order: orders) { order.getCustomer().getName(); } {returns N purchase orders} → 100 positions = 101 SQLs Better: SELECT po from PurchaseOrder po FETCH JOIN po.customer...
  • 37. Performance Issues & Solution Strategies Fetch Joins - Example Query query = em.createQuery(“SELECT po from PurchaseOrder po WHERE po.status = 'ACTIVE' AND po.customer.address.city = 'Stuttgart'”); List<PurchaseOrder> orders = query.getResultList(); for (PurchaseOrder order: orders) { order.getCustomer().getName(); } {returns N purchase orders} → 100 positions = 101 SQLs Better: SELECT po from PurchaseOrder po FETCH JOIN po.customer... {returns N purchase orders} → 100 positions = 1 SQL → related objects will be joined into the query instead of being queried independently
  • 38. Performance Issues & Solution Strategies Batch Reads - Example Query query = em.createQuery(“SELECT po from PurchaseOrder po WHERE po.status = 'ACTIVE' AND po.customer.address.city = 'Stuttgart'”); query.setHint(“eclipselink.batch”, “po.customer”); ...
  • 39. Performance Issues & Solution Strategies Batch Reads - Example Query query = em.createQuery(“SELECT po from PurchaseOrder po WHERE po.status = 'ACTIVE' AND po.customer.address.city = 'Stuttgart'”); query.setHint(“eclipselink.batch”, “po.customer”); ... {returns N purchase orders} → 100 positions = 2 SQLs (one additional for each relationship) → subsequent queries of related objects can be optimized in batches instead of being retrieved one-by-one → Batch reading is more efficient than joining because it avoids reading duplicate data.
  • 40. Performance Issues & Solution Strategies Solution Approaches ► Data Retrieval – Read-Only queries (query.setHint(“eclipselink.read-only“, “true“)) ● improves performance by avoiding copying and change tracking the objects – Fetch Joins – Batch Reads – Other loading optimizations ● Use projection queries where appropriate ● Use pagination for large result sets (query.setMaxResults(), query.setFirstResults()) ● Use named queries (likely to be precompiled by provider, reusability) ► Updating Data – Batch Update ● allows a bunch of update operations to be performed as a single DB access ● reduces round trips to the database <property name="eclipselink.jdbc.batch-writing" value="Oracle-JDBC"/>
  • 41. Performance Issues & Solution Strategies Application Server Application Client Databases Legacy Systems / Service Provider
  • 42. Performance Issues & Solution Strategies Legacy Systems / Service Provider ► They are often out ouf our control ► Legacy Systems – often very difficult to troubleshoot legacy systems – running dinosaurs – limited insight into those systems ► Service Providers – No influence on them – SLAs – What do you do if your PaaS provider has connection issues or is down?
  • 43. How to proactively reduce risk of Performance Issues?
  • 44. How to proactively reduce risk of Performance Issues? Pragmatic Solution Approach ► 1. From a general point-of-view – Define someone that is responsible for Performance Management in the project – Identify Performance Risks early – Define Performance Objectives (measurable & realistic) ● otherwise there is a risk that objectives are simply ignored because too difficult to achieve – Conduct Architectural Reviews (continually) ● to find out whether the architecture is really capable of meeting performance objectives
  • 45. How to proactively reduce risk of Performance Issues? Pragmatic Solution Approach ► 1. From a general point-of-view – Do Performance Tests (before application goes to production) – Monitor your Application (especially in PreProduction & Production) ● to find out how the application is really used (application usage pattterns) ● to identify trends (important for capacity planning) – Know your users
  • 46. How to proactively reduce risk of Performance Issues? Pragmatic Solution Approach ► 2. From a technical point-of-view – Know the used technologies – Always look out for possible performance improvements in those technical areas ● Important: analyze the effects of „improvements“ and „Best Practices“ – Pay back technical debt as soon as possible – Add small performance tests and not just unit tests (and automate them)
  • 48. Conclusion Conclusion ► Investing time & money in performance really pays off ► There needs to be someone responsible for APM ► Performance issues can reside anywhere in an architecture – Architectural reviews, performance tests, aware developers/architects/testers can help in reducing the risk ► From the managements point-of-view it seems that performance engineering seems to cause initially more costs than bringing value – Problem: difficult to demonstrate success, but poorly performing applications are clearly observable as failures “Why do we have performance engineers if we don't have performance problems?” by Connie U. Smith
  • 50. Thank you for your Attention! eduard.tudenhoefner@adesso.de www.adesso.de @etudenhoefner at Twitter