SlideShare a Scribd company logo
Launching Successful Applications
Successful Applications

A systematic framework for launching successful
applications

Chris K. Chew
Enterprise Infrastructure Team
Pearson eCollege

    chrisch@ecollege.com

    @chrischew
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Launching Successful Applications

1. What To Count
   – Key Performance Indicators
   – KPI’s in software
   – Choosing your indicators
2. How To Count
   – Finding the right places to measure
   – Frameworks that can help
3. Count Out Load
   – Transparency builds goodwill
   – Advertising success creates momentum
4. When To Evolve Your Measurements




 Successful Applications
What To Count
Key Performance Indicators




Successful Applications
                             1
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Key Performance Indicators


KPI’s are a small number of measurable objectives
that will add the most value to the organization for
the foreseeable future.




 Presentation Title runs here l 00/00/00
Key Performance Indicators


• Targeted                towards your strategic goals

• Must         be objectively knowable

• Each         measurement must clearly add value to the organization

• Articulate              which scenarios are included in each measurement

• The        fewer the better




Successful Applications
Key Performance Indicators


• Quantitative:               Something that is a number

• Practical:              Something that ties into existing business processes

• Directional:              Specifying whether something is improving, trending

• Actionable:    Identifying a problem that is within the organization's
   ability to change

• Comparative:     Comparing yourself with a "peer universe", e.g.
   industry. Also referred to as “financial”



Successful Applications
Key Performance Indicators


Etsy’s Indicators

 • Quantitative:              How many items were sold last month?

 • Practical:              How many new members signed up?

 • Directional:              Comparison from January 2011 and February 2010

 • Actionable:              Number of complaints or returned items?

 • Comparative:               What are ebay’s trends for the same month?



 Successful Applications
Key Performance Indicators In Software


KPI’s are a small number of measurable objectives that
will add the most value to the organization your
application for the foreseeable future.




Successful Applications
Key Performance Indicators In Software


 • Quantitative:  Measure the occurrences and durations of activities
   and transactions

 • Practical:             Measuring strategically-targeted usage patterns

 • Directional:             Did recent changes help or hurt performance?

 • Actionable:              Any error should be an actionable indicator

 • Comparative:     Compare your application to similar applications in
   your installation



Successful Applications
Key Performance Indicators In Software


 • Functional:            Measuring the frequency and duration which features
   are used.

   –   Examples:

       ○ Minutes  in class
       ○ Click-throughs
       ○ SSO hand-offs
       ○ Page views




Successful Applications
Key Performance Indicators In Software


 • Non-Functional:        Measuring the transactional throughput of an
   application.

   –   Examples:

       ○ Connections  per server
       ○ Response times
       ○ Page load times




Successful Applications
Key Performance Indicators In Software


 • Transactional:  Measuring the frequency and duration which
   business transactions are executed.

   –   Examples:

       ○ Messages
       ○ Enrollments processed
       ○ Courses viewed
       ○ Thread responses




Successful Applications
Key Performance Indicators In Software


How To Identify Your KPI’s

 • What          are the nearest-term goals of your application?

 • How         will you know when you have reached your goals?




 Successful Applications
Key Performance Indicators In Software


Example: Prospero Message Bus

Strategic Goal: To provide an always-on message bus that
guarantees delivery with very low message publication latency.

What To Measure:
 • Availability
 • Message loss
 • Delivery latency




 Successful Applications
Key Performance Indicators In Software


Example: Prospero Message Bus

Key Performance Indicators:
 • Messages produced (per second and day)
 • Number of times it takes longer than 500ms to publish a message
 • Number of delivery problems
 • Production-to-Delivery latency
 • Linux “load factor” of servers




 Successful Applications
Key Performance Indicators In Software


Example: Anton.io Browser-Channel Test

Strategic Goal: To feel comfortable recommending the use of web
sockets and flash sockets for realistic event-driven web UI.

What To Measure:
 • Connection reliability per transport
 • Connection density and server behavior of Node.js




 Successful Applications
Key Performance Indicators In Software


Example: Anton.io Browser-Channel Test

Key Performance Indicators
 • Connections succeeded and failed
 • Transport used (web sockets vs. flash vs. XHR polling)
 • Connection time in milliseconds




 Successful Applications
How To Count
Collecting and presenting your application’s statistics




 Successful Applications
                                             2
How To Count


The Golden Rules Of Audit Logging

 • Log       transactions, not errors and debug statements

 • Find        the right places to place the hooks

 • Record            the transaction as concisely as possible

 • Leverage                existing frameworks




 Successful Applications
How To Count


The Golden Rules Of Audit Logging

 • Log        transactions, not errors and debug statements

 • Find        the right places to place the hooks

 • Record            the transaction as concisely as possible

 • Leveraging              existing frameworks




 Successful Applications
How To Count


The Golden Rules Of Audit Logging

 • Log        transactions, not errors and debug statements

    –   Error logs are for identifying code and system problems

    –   Debug statements are for development and last-resort debugging

    –   Audit logs need to be noiseless and easily parsed




 Successful Applications
How To Count


The Golden Rules Of Audit Logging

 • Log       transactions, not errors and debug statements

 • Find         the right places to place the hooks

 • Record            the transaction as concisely as possible

 • Leveraging              existing frameworks




 Successful Applications
http://assets.en.oreilly.com/1/event/7/Improving%20Netflix%20Performance%20Presentation.pdf



Successful Applications
Successful Applications
Successful Applications
Successful Applications
How To Count


Finding The Right Places To Measure

...is all about knowing what pieces are included in the measurement




 Successful Applications
Successful Applications
Successful Applications
How To Count


The Golden Rules Of Audit Logging

 • Log       transactions, not errors and debug statements

 • Find        the right places to place the hooks

 • Record              the transaction as concisely as possible

 • Leveraging              existing frameworks




 Successful Applications
How To Count


Anatomy Of An Audit Log Statement

 • Items:
   – Timestamp
   – Action
   – “key=value” pairs supplying context


 • Format:
   – TIMESTAMP action=ACTION [key1=value1 ...]
   – Exclude anything the is deducible or implicit, e.g. server name
   – $64k Question: Can you parse it with a regular expression?




Successful Applications
How To Count


Anatomy Of An Audit Log Statement - Prospero Example
2011-04-11T16:13:53Z action=SUBSCRIPTION-CANCELLED sub=e0490bb8-1eb7-4221-a6f2-4cb1bc9c76d4

2011-04-11T16:15:56Z action=MESSAGE msg=c14fd86f-f448-4aa6-b662-87c7f27895fc principal=ONE
length=11 realm=default content_type=text/plain tag=MessageType:messageType1 tag=SubSystem:default
tag=System:default tag=ClientString:default tag=Client:default

2011-04-11T16:15:56Z action=ATTEMPTING-DELIVERY sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9
msg=c14fd86f-f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce

2011-04-11T16:15:56Z action=DELIVERED sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9 msg=c14fd86f-
f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce del_ref=12345
duration_seconds=0 latency_seconds=1 ramp_churn=0


NOTE:    This is word-wrapped...always do one statement per line for easier parsing!




 Successful Applications
How To Count


Anatomy Of An Audit Log Statement - Prospero Example
2011-04-11T16:13:53Z action=SUBSCRIPTION-CANCELLED sub=e0490bb8-1eb7-4221-a6f2-4cb1bc9c76d4

2011-04-11T16:15:56Z action=MESSAGE msg=c14fd86f-f448-4aa6-b662-87c7f27895fc principal=ONE
length=11 realm=default content_type=text/plain tag=MessageType:messageType1 tag=SubSystem:default
tag=System:default tag=ClientString:default tag=Client:default

2011-04-11T16:15:56Z action=ATTEMPTING-DELIVERY sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9
msg=c14fd86f-f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce

2011-04-11T16:15:56Z action=DELIVERED sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9 msg=c14fd86f-
f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce del_ref=12345
duration_seconds=0 latency_seconds=1 ramp_churn=0


NOTE:    This is word-wrapped...always do one statement per line for easier parsing!




 Successful Applications
How To Count


Anatomy Of An Audit Log Statement - Prospero Example
2011-04-11T16:13:53Z action=SUBSCRIPTION-CANCELLED sub=e0490bb8-1eb7-4221-a6f2-4cb1bc9c76d4

2011-04-11T16:15:56Z action=MESSAGE msg=c14fd86f-f448-4aa6-b662-87c7f27895fc principal=ONE
length=11 realm=default content_type=text/plain tag=MessageType:messageType1 tag=SubSystem:default
tag=System:default tag=ClientString:default tag=Client:default

2011-04-11T16:15:56Z action=ATTEMPTING-DELIVERY sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9
msg=c14fd86f-f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce

2011-04-11T16:15:56Z action=DELIVERED sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9 msg=c14fd86f-
f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce del_ref=12345
duration_seconds=0 latency_seconds=1 ramp_churn=0


NOTE:    This is word-wrapped...always do one statement per line for easier parsing!




 Successful Applications
How To Count


Anatomy Of An Audit Log Statement - Prospero Example
2011-04-11T16:13:53Z action=SUBSCRIPTION-CANCELLED sub=e0490bb8-1eb7-4221-a6f2-4cb1bc9c76d4

2011-04-11T16:15:56Z action=MESSAGE msg=c14fd86f-f448-4aa6-b662-87c7f27895fc principal=ONE
length=11 realm=default content_type=text/plain tag=MessageType:messageType1 tag=SubSystem:default
tag=System:default tag=ClientString:default tag=Client:default

2011-04-11T16:15:56Z action=ATTEMPTING-DELIVERY sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9
msg=c14fd86f-f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce

2011-04-11T16:15:56Z action=DELIVERED sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9 msg=c14fd86f-
f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce del_ref=12345
duration_seconds=0 latency_seconds=1 ramp_churn=0


NOTE:    This is word-wrapped...always do one statement per line for easier parsing!




 Successful Applications
How To Count


The Golden Rules Of Audit Logging

 • Log       transactions, not errors and debug statements

 • Find        the right places to place the hooks

 • Record            the transaction as concisely as possible

 • Leveraging              existing frameworks




 Successful Applications
How To Count


Leverage Existing Frameworks

 • Log      files work well:

   –   Rotated with logrotate or CHOMP

   –   Many search utilities (grep, sed, awk)

   –   Easily processed by any language

   –   log4j and log4net write asynchronously

   –   They can always be latter parsed and inserted into a database
Successful Applications
How To Count


Leverage Existing Frameworks

   –   Try our audit logging library available on GitHub at
       ○ https://github.com/PearsonLearningStudio/audit-logging


   –   Java

   –   Coming soon:
       ○ .NET
       ○ Node.js
       ○ Erlang




Successful Applications
Successful Applications
Successful Applications
Successful Applications
Successful Applications
Count Out Loud
Transparency and advertisement




Successful Applications
                                 3
Successful Applications
Successful Applications
Count Out Loud, Be Transparent


 • Being transparent with successes and failures builds goodwill
   towards your application.

   –   Users are more likely to trust your application

   –   Users will be more patient when problems occur




Successful Applications
Successful Applications
Count Out Loud, Advertise Your Results


 • Advertising your results will help keep users aware of your
   application after the excitement of the initial launch dies down.

   –   Product folks are more likely to prioritize improvements to the
       application

   –   Potential users of the application will feel more comfortable
       adopting it

   –   The data you share may help your peers




Successful Applications
Successful Applications
When To Evolve Your Measurements
Metrics change as goals change




Successful Applications
                                   4
Successful Applications
When To Evolve Your Measurements


• Goals   will change either because strategies change or because the
   goal is reached and new ones must be set.

• KPI’s        should be adjusted at the same time when goals change




Successful Applications
When To Evolve Your Measurements


• Goals   will change either because strategies change or because the
   goal is reached and new ones must be set.

• KPI’s        should be adjusted at the same time when goals change

• But it is also important to listen for negative feedback because you
   might be measuring the wrong things.




Successful Applications
Wrong KPI?


• Inadvertently           incentivize undesirable behavior

• Start  measuring the negative feedback to determine if the problem
   is real

• Either         replace the old KPI with the new one or add it to the squad




Successful Applications
Buffer Bloat: Measuring The Wrong Thing


 • Bufferbloat  is the existence of excessively large (bloated) buffers
   in systems, particularly network communication systems




Successful Applications
Buffer Bloat: Measuring The Wrong Thing


 • Bufferbloat  is the existence of excessively large (bloated) buffers
   in systems, particularly network communication systems

 • Some  experts believe that bufferbloat is the cause of much of the
   poor performance and human pain experienced using today’s
   Internet




Successful Applications
Buffer Bloat: Measuring The Wrong Thing


 • Bufferbloat  is the existence of excessively large (bloated) buffers
   in systems, particularly network communication systems

 • Some  experts believe that bufferbloat is the cause of much of the
   poor performance and human pain experienced using today’s
   Internet

 • If true, this is a quintessential example of picking the wrong
   industry KPI
   – Networks should probably use “Round Trip Latency” instead of
     “Dropped Packets” because excessive work to not drop packets
     negates the effectiveness of TCP/IP


Successful Applications
Buffer Bloat: Measuring The Wrong Thing


 • See       http://www.bufferbloat.net for details




Successful Applications
Buffer Bloat: Measuring The Wrong Thing


 • See       http://www.bufferbloat.net for details

 • Wager:  Phở is on me if Buffer Bloat is not part of the general
   networking conversation by the end of 2012.




Successful Applications
Conclusion




Successful Applications
                          5
Launching Successful Applications

1. What To Count
   – Key Performance Indicators in software
   – Choosing your indicators




 Successful Applications
Launching Successful Applications

1. What To Count
   – Key Performance Indicators in software
   – Choosing your indicators
2. How To Count
   – Finding the right places to measure
   – Frameworks that can help




 Successful Applications
Launching Successful Applications

1. What To Count
   – Key Performance Indicators in software
   – Choosing your indicators
2. How To Count
   – Finding the right places to measure
   – Frameworks that can help
3. Count Out Load
   – Transparency builds goodwill
   – Advertising success creates momentum




 Successful Applications
Launching Successful Applications

1. What To Count
   – Key Performance Indicators in software
   – Choosing your indicators
2. How To Count
   – Finding the right places to measure
   – Frameworks that can help
3. Count Out Load
   – Transparency builds goodwill
   – Advertising success creates momentum
4. Evolve Your Measurements
   – When goals change
   – Negative feedback




 Successful Applications
Thank you

Chris K. Chew
Enterprise Infrastructure Team



    chrisch@ecollege.com

    @chrischew

More Related Content

PPTX
Eliminate Bottlenecks in Software Development & Delivery
PDF
Utils_Presentation_Richard U
PDF
To successfully deliver your IT project: build your team, build your Agile it...
PDF
For cf os, the time to deploy procure to-pay software is now
PPTX
Oracle R-12 Procure To Pay | Oracle R-12 Procure To Pay Training
PDF
T keynote 1020_de_lost wylie
PDF
Expanding your Document Management to HR
PPT
What\'s New in Sage Accpac v5.6
Eliminate Bottlenecks in Software Development & Delivery
Utils_Presentation_Richard U
To successfully deliver your IT project: build your team, build your Agile it...
For cf os, the time to deploy procure to-pay software is now
Oracle R-12 Procure To Pay | Oracle R-12 Procure To Pay Training
T keynote 1020_de_lost wylie
Expanding your Document Management to HR
What\'s New in Sage Accpac v5.6

What's hot (7)

PDF
General overview presentation PSP
PPTX
AP Automation for EBS or PeopleSoft with Oracle WebCenter
PPTX
alim's presentation about p 2 pPresentation1
PDF
ShapeDo - Design Change Management - Construction Software
PDF
M tech dynamic_construction&pm_solution_2019_v10.00
PPTX
Synergy TRMG Final
PDF
SAP Simple Finance
General overview presentation PSP
AP Automation for EBS or PeopleSoft with Oracle WebCenter
alim's presentation about p 2 pPresentation1
ShapeDo - Design Change Management - Construction Software
M tech dynamic_construction&pm_solution_2019_v10.00
Synergy TRMG Final
SAP Simple Finance
Ad

Viewers also liked (6)

PPTX
L14 muongs
PPTX
L14SereyD
PPTX
5 Ways To Quickly Launch Application On Windows
PPT
Word Processing Slides
PPT
Word 2007-Edit Text And Revise Your Documents
PPT
Lecture four
L14 muongs
L14SereyD
5 Ways To Quickly Launch Application On Windows
Word Processing Slides
Word 2007-Edit Text And Revise Your Documents
Lecture four
Ad

Similar to Launching Successful Applications (20)

PPTX
Benchmarking
PDF
The Future Of Finance: How To Manage Spend The Right Way
PPTX
Advanced Test Design Methods
PDF
Quantifying DevOps Adoption Empirically for Demonstrable ROI
PPTX
PQF Overview
PDF
Move from Business Intelligence to Advanced Analytics by Integrating IBM SPSS...
PPT
CRM Implementations and Upgrades
PDF
Accenture-Value-Realization-for-SAP
PDF
Improving Speed to Market in E-commerce
PPTX
Success and Failure Examples of ERP Implementation
PDF
Strategy Basecamp's IT Diagnostic - Six Steps to Improving Your Technology
PPTX
Localization Metrics and KPIs
PDF
Learn to see, measure and automate with value stream management
PPTX
UiPath Business Analyst Associate Series 2024 - Content for 2nd and 4th Dec.pptx
PPTX
BPM (Business Process Management) Introduction
DOC
Abhishek_Banerjee_Functional _Testing
DOC
Abhishek_Banerjee_Functional _Testing
PDF
GLOC 2018: Automation or How We Eliminated Manual EBS R12.2 Upgrades and Beca...
PDF
Best Practices: Planning Data Analytic into Your Audits
PPTX
Continuous Performance Testing and Monitoring in Agile Development
Benchmarking
The Future Of Finance: How To Manage Spend The Right Way
Advanced Test Design Methods
Quantifying DevOps Adoption Empirically for Demonstrable ROI
PQF Overview
Move from Business Intelligence to Advanced Analytics by Integrating IBM SPSS...
CRM Implementations and Upgrades
Accenture-Value-Realization-for-SAP
Improving Speed to Market in E-commerce
Success and Failure Examples of ERP Implementation
Strategy Basecamp's IT Diagnostic - Six Steps to Improving Your Technology
Localization Metrics and KPIs
Learn to see, measure and automate with value stream management
UiPath Business Analyst Associate Series 2024 - Content for 2nd and 4th Dec.pptx
BPM (Business Process Management) Introduction
Abhishek_Banerjee_Functional _Testing
Abhishek_Banerjee_Functional _Testing
GLOC 2018: Automation or How We Eliminated Manual EBS R12.2 Upgrades and Beca...
Best Practices: Planning Data Analytic into Your Audits
Continuous Performance Testing and Monitoring in Agile Development

Recently uploaded (20)

PPTX
O2C Customer Invoices to Receipt V15A.pptx
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PPTX
The various Industrial Revolutions .pptx
PDF
Zenith AI: Advanced Artificial Intelligence
PPTX
Modernising the Digital Integration Hub
PDF
Getting Started with Data Integration: FME Form 101
PDF
August Patch Tuesday
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PPTX
OMC Textile Division Presentation 2021.pptx
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PDF
project resource management chapter-09.pdf
PDF
DP Operators-handbook-extract for the Mautical Institute
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
O2C Customer Invoices to Receipt V15A.pptx
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
The various Industrial Revolutions .pptx
Zenith AI: Advanced Artificial Intelligence
Modernising the Digital Integration Hub
Getting Started with Data Integration: FME Form 101
August Patch Tuesday
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
A contest of sentiment analysis: k-nearest neighbor versus neural network
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
NewMind AI Weekly Chronicles – August ’25 Week III
OMC Textile Division Presentation 2021.pptx
Group 1 Presentation -Planning and Decision Making .pptx
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
project resource management chapter-09.pdf
DP Operators-handbook-extract for the Mautical Institute
From MVP to Full-Scale Product A Startup’s Software Journey.pdf

Launching Successful Applications

  • 2. Successful Applications A systematic framework for launching successful applications Chris K. Chew Enterprise Infrastructure Team Pearson eCollege chrisch@ecollege.com @chrischew
  • 20. Launching Successful Applications 1. What To Count – Key Performance Indicators – KPI’s in software – Choosing your indicators 2. How To Count – Finding the right places to measure – Frameworks that can help 3. Count Out Load – Transparency builds goodwill – Advertising success creates momentum 4. When To Evolve Your Measurements Successful Applications
  • 21. What To Count Key Performance Indicators Successful Applications 1
  • 29. Key Performance Indicators KPI’s are a small number of measurable objectives that will add the most value to the organization for the foreseeable future. Presentation Title runs here l 00/00/00
  • 30. Key Performance Indicators • Targeted towards your strategic goals • Must be objectively knowable • Each measurement must clearly add value to the organization • Articulate which scenarios are included in each measurement • The fewer the better Successful Applications
  • 31. Key Performance Indicators • Quantitative: Something that is a number • Practical: Something that ties into existing business processes • Directional: Specifying whether something is improving, trending • Actionable: Identifying a problem that is within the organization's ability to change • Comparative: Comparing yourself with a "peer universe", e.g. industry. Also referred to as “financial” Successful Applications
  • 32. Key Performance Indicators Etsy’s Indicators • Quantitative: How many items were sold last month? • Practical: How many new members signed up? • Directional: Comparison from January 2011 and February 2010 • Actionable: Number of complaints or returned items? • Comparative: What are ebay’s trends for the same month? Successful Applications
  • 33. Key Performance Indicators In Software KPI’s are a small number of measurable objectives that will add the most value to the organization your application for the foreseeable future. Successful Applications
  • 34. Key Performance Indicators In Software • Quantitative: Measure the occurrences and durations of activities and transactions • Practical: Measuring strategically-targeted usage patterns • Directional: Did recent changes help or hurt performance? • Actionable: Any error should be an actionable indicator • Comparative: Compare your application to similar applications in your installation Successful Applications
  • 35. Key Performance Indicators In Software • Functional: Measuring the frequency and duration which features are used. – Examples: ○ Minutes in class ○ Click-throughs ○ SSO hand-offs ○ Page views Successful Applications
  • 36. Key Performance Indicators In Software • Non-Functional: Measuring the transactional throughput of an application. – Examples: ○ Connections per server ○ Response times ○ Page load times Successful Applications
  • 37. Key Performance Indicators In Software • Transactional: Measuring the frequency and duration which business transactions are executed. – Examples: ○ Messages ○ Enrollments processed ○ Courses viewed ○ Thread responses Successful Applications
  • 38. Key Performance Indicators In Software How To Identify Your KPI’s • What are the nearest-term goals of your application? • How will you know when you have reached your goals? Successful Applications
  • 39. Key Performance Indicators In Software Example: Prospero Message Bus Strategic Goal: To provide an always-on message bus that guarantees delivery with very low message publication latency. What To Measure: • Availability • Message loss • Delivery latency Successful Applications
  • 40. Key Performance Indicators In Software Example: Prospero Message Bus Key Performance Indicators: • Messages produced (per second and day) • Number of times it takes longer than 500ms to publish a message • Number of delivery problems • Production-to-Delivery latency • Linux “load factor” of servers Successful Applications
  • 41. Key Performance Indicators In Software Example: Anton.io Browser-Channel Test Strategic Goal: To feel comfortable recommending the use of web sockets and flash sockets for realistic event-driven web UI. What To Measure: • Connection reliability per transport • Connection density and server behavior of Node.js Successful Applications
  • 42. Key Performance Indicators In Software Example: Anton.io Browser-Channel Test Key Performance Indicators • Connections succeeded and failed • Transport used (web sockets vs. flash vs. XHR polling) • Connection time in milliseconds Successful Applications
  • 43. How To Count Collecting and presenting your application’s statistics Successful Applications 2
  • 44. How To Count The Golden Rules Of Audit Logging • Log transactions, not errors and debug statements • Find the right places to place the hooks • Record the transaction as concisely as possible • Leverage existing frameworks Successful Applications
  • 45. How To Count The Golden Rules Of Audit Logging • Log transactions, not errors and debug statements • Find the right places to place the hooks • Record the transaction as concisely as possible • Leveraging existing frameworks Successful Applications
  • 46. How To Count The Golden Rules Of Audit Logging • Log transactions, not errors and debug statements – Error logs are for identifying code and system problems – Debug statements are for development and last-resort debugging – Audit logs need to be noiseless and easily parsed Successful Applications
  • 47. How To Count The Golden Rules Of Audit Logging • Log transactions, not errors and debug statements • Find the right places to place the hooks • Record the transaction as concisely as possible • Leveraging existing frameworks Successful Applications
  • 52. How To Count Finding The Right Places To Measure ...is all about knowing what pieces are included in the measurement Successful Applications
  • 55. How To Count The Golden Rules Of Audit Logging • Log transactions, not errors and debug statements • Find the right places to place the hooks • Record the transaction as concisely as possible • Leveraging existing frameworks Successful Applications
  • 56. How To Count Anatomy Of An Audit Log Statement • Items: – Timestamp – Action – “key=value” pairs supplying context • Format: – TIMESTAMP action=ACTION [key1=value1 ...] – Exclude anything the is deducible or implicit, e.g. server name – $64k Question: Can you parse it with a regular expression? Successful Applications
  • 57. How To Count Anatomy Of An Audit Log Statement - Prospero Example 2011-04-11T16:13:53Z action=SUBSCRIPTION-CANCELLED sub=e0490bb8-1eb7-4221-a6f2-4cb1bc9c76d4 2011-04-11T16:15:56Z action=MESSAGE msg=c14fd86f-f448-4aa6-b662-87c7f27895fc principal=ONE length=11 realm=default content_type=text/plain tag=MessageType:messageType1 tag=SubSystem:default tag=System:default tag=ClientString:default tag=Client:default 2011-04-11T16:15:56Z action=ATTEMPTING-DELIVERY sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9 msg=c14fd86f-f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce 2011-04-11T16:15:56Z action=DELIVERED sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9 msg=c14fd86f- f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce del_ref=12345 duration_seconds=0 latency_seconds=1 ramp_churn=0 NOTE: This is word-wrapped...always do one statement per line for easier parsing! Successful Applications
  • 58. How To Count Anatomy Of An Audit Log Statement - Prospero Example 2011-04-11T16:13:53Z action=SUBSCRIPTION-CANCELLED sub=e0490bb8-1eb7-4221-a6f2-4cb1bc9c76d4 2011-04-11T16:15:56Z action=MESSAGE msg=c14fd86f-f448-4aa6-b662-87c7f27895fc principal=ONE length=11 realm=default content_type=text/plain tag=MessageType:messageType1 tag=SubSystem:default tag=System:default tag=ClientString:default tag=Client:default 2011-04-11T16:15:56Z action=ATTEMPTING-DELIVERY sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9 msg=c14fd86f-f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce 2011-04-11T16:15:56Z action=DELIVERED sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9 msg=c14fd86f- f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce del_ref=12345 duration_seconds=0 latency_seconds=1 ramp_churn=0 NOTE: This is word-wrapped...always do one statement per line for easier parsing! Successful Applications
  • 59. How To Count Anatomy Of An Audit Log Statement - Prospero Example 2011-04-11T16:13:53Z action=SUBSCRIPTION-CANCELLED sub=e0490bb8-1eb7-4221-a6f2-4cb1bc9c76d4 2011-04-11T16:15:56Z action=MESSAGE msg=c14fd86f-f448-4aa6-b662-87c7f27895fc principal=ONE length=11 realm=default content_type=text/plain tag=MessageType:messageType1 tag=SubSystem:default tag=System:default tag=ClientString:default tag=Client:default 2011-04-11T16:15:56Z action=ATTEMPTING-DELIVERY sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9 msg=c14fd86f-f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce 2011-04-11T16:15:56Z action=DELIVERED sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9 msg=c14fd86f- f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce del_ref=12345 duration_seconds=0 latency_seconds=1 ramp_churn=0 NOTE: This is word-wrapped...always do one statement per line for easier parsing! Successful Applications
  • 60. How To Count Anatomy Of An Audit Log Statement - Prospero Example 2011-04-11T16:13:53Z action=SUBSCRIPTION-CANCELLED sub=e0490bb8-1eb7-4221-a6f2-4cb1bc9c76d4 2011-04-11T16:15:56Z action=MESSAGE msg=c14fd86f-f448-4aa6-b662-87c7f27895fc principal=ONE length=11 realm=default content_type=text/plain tag=MessageType:messageType1 tag=SubSystem:default tag=System:default tag=ClientString:default tag=Client:default 2011-04-11T16:15:56Z action=ATTEMPTING-DELIVERY sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9 msg=c14fd86f-f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce 2011-04-11T16:15:56Z action=DELIVERED sub=fc9c7e50-542b-44cb-b48f-7c1f992d13a9 msg=c14fd86f- f448-4aa6-b662-87c7f27895fc del_attempt=d52054d8-1cbb-47f7-927e-ff901d6020ce del_ref=12345 duration_seconds=0 latency_seconds=1 ramp_churn=0 NOTE: This is word-wrapped...always do one statement per line for easier parsing! Successful Applications
  • 61. How To Count The Golden Rules Of Audit Logging • Log transactions, not errors and debug statements • Find the right places to place the hooks • Record the transaction as concisely as possible • Leveraging existing frameworks Successful Applications
  • 62. How To Count Leverage Existing Frameworks • Log files work well: – Rotated with logrotate or CHOMP – Many search utilities (grep, sed, awk) – Easily processed by any language – log4j and log4net write asynchronously – They can always be latter parsed and inserted into a database Successful Applications
  • 63. How To Count Leverage Existing Frameworks – Try our audit logging library available on GitHub at ○ https://github.com/PearsonLearningStudio/audit-logging – Java – Coming soon: ○ .NET ○ Node.js ○ Erlang Successful Applications
  • 68. Count Out Loud Transparency and advertisement Successful Applications 3
  • 71. Count Out Loud, Be Transparent • Being transparent with successes and failures builds goodwill towards your application. – Users are more likely to trust your application – Users will be more patient when problems occur Successful Applications
  • 73. Count Out Loud, Advertise Your Results • Advertising your results will help keep users aware of your application after the excitement of the initial launch dies down. – Product folks are more likely to prioritize improvements to the application – Potential users of the application will feel more comfortable adopting it – The data you share may help your peers Successful Applications
  • 75. When To Evolve Your Measurements Metrics change as goals change Successful Applications 4
  • 77. When To Evolve Your Measurements • Goals will change either because strategies change or because the goal is reached and new ones must be set. • KPI’s should be adjusted at the same time when goals change Successful Applications
  • 78. When To Evolve Your Measurements • Goals will change either because strategies change or because the goal is reached and new ones must be set. • KPI’s should be adjusted at the same time when goals change • But it is also important to listen for negative feedback because you might be measuring the wrong things. Successful Applications
  • 79. Wrong KPI? • Inadvertently incentivize undesirable behavior • Start measuring the negative feedback to determine if the problem is real • Either replace the old KPI with the new one or add it to the squad Successful Applications
  • 80. Buffer Bloat: Measuring The Wrong Thing • Bufferbloat is the existence of excessively large (bloated) buffers in systems, particularly network communication systems Successful Applications
  • 81. Buffer Bloat: Measuring The Wrong Thing • Bufferbloat is the existence of excessively large (bloated) buffers in systems, particularly network communication systems • Some experts believe that bufferbloat is the cause of much of the poor performance and human pain experienced using today’s Internet Successful Applications
  • 82. Buffer Bloat: Measuring The Wrong Thing • Bufferbloat is the existence of excessively large (bloated) buffers in systems, particularly network communication systems • Some experts believe that bufferbloat is the cause of much of the poor performance and human pain experienced using today’s Internet • If true, this is a quintessential example of picking the wrong industry KPI – Networks should probably use “Round Trip Latency” instead of “Dropped Packets” because excessive work to not drop packets negates the effectiveness of TCP/IP Successful Applications
  • 83. Buffer Bloat: Measuring The Wrong Thing • See http://www.bufferbloat.net for details Successful Applications
  • 84. Buffer Bloat: Measuring The Wrong Thing • See http://www.bufferbloat.net for details • Wager: Phở is on me if Buffer Bloat is not part of the general networking conversation by the end of 2012. Successful Applications
  • 86. Launching Successful Applications 1. What To Count – Key Performance Indicators in software – Choosing your indicators Successful Applications
  • 87. Launching Successful Applications 1. What To Count – Key Performance Indicators in software – Choosing your indicators 2. How To Count – Finding the right places to measure – Frameworks that can help Successful Applications
  • 88. Launching Successful Applications 1. What To Count – Key Performance Indicators in software – Choosing your indicators 2. How To Count – Finding the right places to measure – Frameworks that can help 3. Count Out Load – Transparency builds goodwill – Advertising success creates momentum Successful Applications
  • 89. Launching Successful Applications 1. What To Count – Key Performance Indicators in software – Choosing your indicators 2. How To Count – Finding the right places to measure – Frameworks that can help 3. Count Out Load – Transparency builds goodwill – Advertising success creates momentum 4. Evolve Your Measurements – When goals change – Negative feedback Successful Applications
  • 90. Thank you Chris K. Chew Enterprise Infrastructure Team chrisch@ecollege.com @chrischew