Primer on performance_requirements_gathering_v0.3

12
Fundamentals of Performance Requirements Gathering Practical Performance Analyst – 30 th June 2012 http://www.practicalperformanceanalyst.com

Transcript of Primer on performance_requirements_gathering_v0.3

Page 1: Primer on performance_requirements_gathering_v0.3

Fundamentals of Performance Requirements Gathering

Practical Performance Analyst – 30th June 2012

http://www.practicalperformanceanalyst.com

Page 2: Primer on performance_requirements_gathering_v0.3

Agenda

Performance Engineering Life Cycle

What is Proactive Performance Management

What is Performance Requirements Gathering

Metrics for Non Functional Requirements

Why is Performance Requirements Gathering Important

Process for Performance Requirements Gathering

Challenges involved in Performance Requirements Gathering

Deliverables for the Performance Requirements Gathering process

Resources & tools for Performance Requirements Gathering

Page 3: Primer on performance_requirements_gathering_v0.3

Performance Engineering Life Cycle

Software Development Life Cycle

Functional Requirements Gathering

Architecture & Design

Build Application

System Test,

System Integrated Test & UAT

Deploy Into Production

Performance Engineering Life Cycle

Non Functional Requirements Gathering

Design for Performance &

Performance Modelling

Unit Performance Test &

Code Optimization

Performance Test

Monitoring & Capacity Management

Page 4: Primer on performance_requirements_gathering_v0.3

What is Proactive Performance Management

Performance Requirements

Analysis

Performance Modelling &

Capacity Planning

Build & Optimization

Performance Testing

Performance Monitoring

Capacity Management

Page 5: Primer on performance_requirements_gathering_v0.3

What Is Performance Requirements Gathering

Performance Requirements gathering process is a process whose objective is to determine all the relevant Non Functional Requirements for the given application

Non Functional Requirements for an application would ideally include Security, Reliability, Availability or Failover Capability, Maintainability, Usability, etc. However as a Practical Performance Analyst your focus is mainly around Performance & Scalability of the application and underlying application infrastructure

Performance Requirements Gathering is conducted at the Functional Requirements Gathering stage with focus on determining the Performance & Scalability relevant Non Functional Requirements for the application

Non Functional Requirements would vary based on the nature of your application and would differ based on the nature of workload your application has to process

Non Functional Requirements from a Performance perspective would include metrics like User Concurrency, Transactional Throughput Per Hour, Volume of data processed by Batch job, Messaging workload Per Hour, etc.

As an outcome of this phase you should have documented and signed of Non Functional Requirements and Business Workload that would form the basis for your Performance Testing Strategy

The Non Functional Requirements would also serve as input to defining targets for your developers

As an outcome to the Performance Requirements Gathering Phase you should have the following documents nailed down-

Application Non Functional Requirements

Performance Testing Workload

Page 6: Primer on performance_requirements_gathering_v0.3

Metrics for Non Functional Requirements

Online Transaction Processing

User Concurrency

Transactional Throughput

Infrastructure Utilization (CPU Utilization, Memory Utilization)

Batch

Duration of Batch run

Volume of data processed

Number of records processed

Infrastructure Utilization (CPU Utilization, Memory Utilization)

Messaging

Number of messages processed

Size of messages for different message types

Infrastructure Utilization (CPU Utilization, Memory Utilization)

Workflow

Number of messages processed

Size of messages for different message types

Infrastructure Utilization (CPU Utilization, Memory Utilization)

Page 7: Primer on performance_requirements_gathering_v0.3

Why Is Performance Requirements Gathering Important

Performance Requirements Gathering is important for the following reasons –

Document Non Functional Requirements (Performance & Scalability) for the application

Agree with the IT & Business stake holders on the overall Non Functional Requirements that the application would have to meet

Document the overall Workload for purposes of Performance Test

Base Performance Targets for Developers based on the documented Non Functional Requirements

Provide input to the Application Design teams on the Performance & Scalability requirements for the solution

Provide input to the Infrastructure Design teams on the Performance & Scalability requirements for the underlying infrastructure

Set the expectations for the different IT & Business stakeholders from a Performance & Scalability standpoint

Provide input on the infrastructure capacity required to meet documented Non Functional Requirements

Recommend tooling (Performance Testing, Performance Modelling, Performance Monitoring, Capacity Management, etc.) requirements based on an a good understanding of the application workload and the agreed Non Functional Requirements

Page 8: Primer on performance_requirements_gathering_v0.3

Performance Requirements Gathering Process

Understand Business Objectives & Program

Goals

Review Business Requirements Document

Data Gathering

Review & Extract Production Performance Metrics where possible

Analyse and Visualize data obtained from

Production for purposes of workload analysis

Understand Business Goals & Objectives

Understand Application & Infrastructure

Platform Architecture

Understand Tooling Landscape (Monitoring, Testing, Diagnostics,

etc.)

Define Overall Non Functional Requirements

Determine Tier wise Non Functional Requirements

Recommend Tooling strategy (Monitoring, Diagnostics, Testing,

etc.)

Document Development Standards and

Developer Performance Objectives

Page 9: Primer on performance_requirements_gathering_v0.3

Challenges involved in Performance Requirement Gathering

Challenges finding the right business and IT stakeholders

Lack of understanding of Performance Engineering and the value it delivers across the Software Development Life Cycle

Lack of production metrics for business and infrastructure workload

Lack of access to the production systems to extract relevant business & infrastructure workload metrics

Lack of Industry standard tools to analyse, model and visualize data for purposes of defining Non Functional Requirements

Lack of Capable Resources to assist with data extraction, visualization and analysis

Page 10: Primer on performance_requirements_gathering_v0.3

Deliverables – Performance Requirements Gathering

Non Functional Requirements Document

Workload for Performance Testing

Workload for Capacity Management

Recommendations for Infrastructure Capacity (Input to Capacity Plans)

Recommendations to the Application Design & Architecture teams

Recommendations to the Infrastructure Design & Architecture teams

Recommendations on investment in tooling & tool licenses (Performance Modelling, Performance Testing, Performance Monitoring, Capacity Management, etc.)

Page 11: Primer on performance_requirements_gathering_v0.3

Resources & Tools

Section on Architecture & Design Engineering at the Practical Performance Analyst by Dr. Rajesh Mansharamani - http://practicalperformanceanalyst.com/site/node/28

CMG Paper on Performance Requirements Analysis - http://www.cmg.org/measureit/issues/mit23/m_23_2.html

Page 12: Primer on performance_requirements_gathering_v0.3

Thank You

Please support us by taking a moment and sharing this content using the Social Media Links at Practical Performance Analyst

[email protected]