In this session, Oleksandr Metelytsa and Benjamin Magro will take a technical deep dive into Atlassian's new apps performance testing framework to see how it works, how it can be used to test your Data Center applications, where it is heading in the future, and what we will require for Data Center apps performance testing going forward.
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Technical Deep Dive Into Atlassian's New Apps Performance Testing Framework
1. Technical Deep Dive
Into Atlassian's New Apps Performance Testing Framework
BEN MAGRO | PRODUCT MANAGER | ATLASSIAN | @MAGRO
OLEKSANDR METELYTSIA | TEAM LEAD | ATLASSIAN
9. 1. DELIVER AN ENTERPRISE
GRADE ECOSYSTEM FOR OUR
CUSTOMERS MISSION CRITICAL
DEPLOYMENTS
THE PROGRAM’S GOALS
10. 1. DELIVER AN ENTERPRISE
GRADE ECOSYSTEM FOR OUR
CUSTOMERS MISSION CRITICAL
DEPLOYMENTS
2. PROVIDE A WAY FOR VENDORS
TO DIFFERENTIATE THEIR DC
APPS
THE PROGRAM’S GOALS
28. Existing Tools
PERFORMANCE TOOLS
• Specific Use Case
• Missing Data Sets
• Not Cross Product
• Tightly Coupled to Cloud Provider
• Time Consuming
29. Existing Tools
PERFORMANCE TOOLS
• Specific Use Case
• Missing Data Sets
• Not Cross Product
• Tightly Coupled to Cloud Provider
• Time Consuming
• Inconsistant Output
36. Easy
Quick to setup and
run. Detailed
walkthroughs.
GOALS OF THE PERFORMANCE TOOLKIT
37. Easy
Quick to setup and
run. Detailed
walkthroughs.
Ship with data
Ship with realistic
enterprise datasets
GOALS OF THE PERFORMANCE TOOLKIT
38. Easy
Quick to setup and
run. Detailed
walkthroughs.
Ship with data
Ship with realistic
enterprise datasets
Decoupled
Not tied to
deployment type or
dataset
GOALS OF THE PERFORMANCE TOOLKIT
39. Easy
Quick to setup and
run. Detailed
walkthroughs.
Ship with data
Ship with realistic
enterprise datasets
Decoupled
Not tied to
deployment type or
dataset
Extensible
Built to be
customised to test
your apps
GOALS OF THE PERFORMANCE TOOLKIT
43. Carved In Stone
Mandatory
Built only for Atlassian Apps
Seeking Feedback
Recommended
Try to use it for your apps
OUR ASK WHAT IT’S NOT
44. Carved In Stone
Mandatory
Built only for Atlassian Apps
Abandonware
Seeking Feedback
Recommended
Try to use it for your apps
Raise Improvements
OUR ASK WHAT IT’S NOT
52. Hardware
Provisioned hardware, number of application nodes,
db power and instance configuration
Configuration
Performance load profiles, datasets,
Product configuration
53. Hardware
Provisioned hardware, number of application nodes,
db power and instance configuration
Configuration
Performance load profiles, datasets,
Product configuration
Software
Performance tools, load generation scripts, product
and tools versions
54. Support App Developers
By providing tooling and guidance on
how to measure the performance and
scalability of apps developed for
Atlassian’s DC products.
56. Start: fix moving parts
Jira versions
Jira Software 8.0.x and ER 7.13.x
57. Start: fix moving parts
Jira versions
Jira Software 8.0.x and ER 7.13.x
Deployment
AWS Quickstart with defined instance
types and parameters
58. Start: fix moving parts
Datasets
Realistic enterprise-scale dataset
Jira versions
Jira Software 8.0.x and ER 7.13.x
Deployment
AWS Quickstart with defined instance
types and parameters
59. Start: fix moving parts
Datasets
Realistic enterprise-scale dataset
Scenarios
Performance regression and scalability
Jira versions
Jira Software 8.0.x and ER 7.13.x
Deployment
AWS Quickstart with defined instance
types and parameters
67. Thin layer
An abstraction layer over JMeter and Selenium
Taurus
automation
tool
Free and open source
Under Apache 2.0 License
68. Thin layer
An abstraction layer over JMeter and Selenium
Platform-independent
Runs where Python and Java can run
Taurus
automation
tool
Free and open source
Under Apache 2.0 License
72. Taurus
For orchestration and
configuration
JMeter
JMeter scripts to
generate base load
Selenium
Selenium PyTest
scrips to measure UI
response
Utils
Deployments scripts
Datasets upload
Reports and charts
generation
Data Center Application Performance Toolkit
77. Prepare ENV
Launch Jira DC
Upload Dataset
Install Toolkit
Configuration
Shape usage
Please only use circles, rectangles, and
rounded rectangles to call attention to a
particular part of a screenshot, for the
sake of consistency.
78. Prepare ENV
Launch Jira DC
Upload Dataset
Install Toolkit
Configuration
Shape usage
Please only use circles, rectangles, and
rounded rectangles to call attention to a
particular part of a screenshot, for the
sake of consistency.
79. Prepare ENV
Launch Jira DC
Upload Dataset
Configuration
Shape usage
Please only use circles, rectangles, and
rounded rectangles to call attention to a
particular part of a screenshot, for the
sake of consistency.
Install Toolkit
80. Prepare ENV
Launch Jira DC
Upload Dataset
Configuration
Shape usage
Please only use circles, rectangles, and
rounded rectangles to call attention to a
particular part of a screenshot, for the
sake of consistency.
Install Toolkit
81. Prepare ENV
Launch Jira DC
Upload Dataset
Configuration
Shape usage
Please only use circles, rectangles, and
rounded rectangles to call attention to a
particular part of a screenshot, for the
sake of consistency.
Install Toolkit
82. Prepare ENV
Launch Jira DC
Upload Dataset
Configuration
Shape usage
Please only use circles, rectangles, and
rounded rectangles to call attention to a
particular part of a screenshot, for the
sake of consistency.
Install Toolkit
83. Prepare ENV
Launch Jira DC
Upload Dataset
Configuration
Shape usage
Please only use circles, rectangles, and
rounded rectangles to call attention to a
particular part of a screenshot, for the
sake of consistency.
Install Toolkit
84. Prepare ENV
Launch Jira DC
Upload Dataset
Configuration
Shape usage
Please only use circles, rectangles, and
rounded rectangles to call attention to a
particular part of a screenshot, for the
sake of consistency.
Install Toolkit
87. Upload Dataset
Configuration
Prepare ENV
Launch Jira DC
Generate Eval
Use the UI too generate an
evaluator license.
Contact Atlassian
We can provide you 2 time
bomb licenses for testing. Ask
on your DCHELP ticket.
License Setup
Install Toolkit
106. Scenario 1:
Performance
Testing
Run 1: Without
App
Install App
Run 2: With App
Base line
Performance run for fixed configuration without an
app:
$ bzt jira.yaml
Analyse Report
107. Scenario 1:
Performance
Testing
Run 1: Without
App
Install App
Run 2: With App
Base line
Performance run for fixed configuration without an
app:
JMeter
Constant JMeter load.
$ bzt jira.yaml
Analyse Report
108. Scenario 1:
Performance
Testing
Run 1: Without
App
Install App
Run 2: With App
Base line
Performance run for fixed configuration without an
app:
JMeter
Constant JMeter load.
Selenium
Measure timings for UI actions.
$ bzt jira.yaml
Analyse Report
109.
110.
111.
112.
113. Install App
Load Your App
Run 1: Without
App
Run 2: With App
Analyse Report
Scenario 1:
Performance
Testing
114. Install App
Load Your App
INSTALL
Load App
DATA
Setup Data
Run 1: Without
App
Run 2: With App
Analyse Report
Scenario 1:
Performance
Testing
115. Run 2: With App
Run
The same run with app installed.
$ bzt jira.yaml
Run 1: Without
App
Install App
Analyse Report
Scenario 1:
Performance
Testing
116. Run 2: With App
Run 1: Without
App
Install App
Analyse Report
Scenario 1:
Performance
Testing
117. column_name: 90% Line
title: Performance Testing
runs:
- runName: without app
resultsPath: results/run1
- runName: with app
resultsPath: results/run2
performance_profile.yml
Run 2: With App
Run 1: Without
App
Install App
Analyse Report
Scenario 1:
Performance
Testing
118. column_name: 90% Line
title: Performance Testing
runs:
- runName: without app
resultsPath: results/run1
- runName: with app
resultsPath: results/run2
performance_profile.yml
Run 2: With App
Run 1: Without
App
Install App
Analyse Report
Scenario 1:
Performance
Testing
119. column_name: 90% Line
title: Performance Testing
runs:
- runName: without app
resultsPath: results/run1
- runName: with app
resultsPath: results/run2
performance_profile.yml
Run 2: With App
Run 1: Without
App
Install App
Analyse Report
Scenario 1:
Performance
Testing
120. column_name: 90% Line
title: Performance Testing
runs:
- runName: without app
resultsPath: results/run1
- runName: with app
resultsPath: results/run2
performance_profile.yml
$ python csv_chart_generator.py performance_profile.yml
Run 2: With App
Run 1: Without
App
Install App
Analyse Report
Scenario 1:
Performance
Testing
121. Run 2: With App
Run 1: Without
App
Install App
Analyse Report
Scenario 1:
Performance
Testing
124. How to extend the Performance Toolkit
Modify JMeter
Test your app-specific
endpoint at high load
(e.g. REST APIs).
Modify Selenium
Test your app with a real
browser in parallel
(e.g. load times)
132. Scenario 2:
Scalability
Load and Setup Your App
INSTALL
Load App
DATA
Setup Data
Run 3: One node
Run 4: Two nodes
Run 5: Four nodes
Analyze report
133. Run 3: One node
Run 4: Two nodes
Run 5: Four nodes
Analyze report
Base line
Performance run for fixed configuration with app-
specific actions on one node Jira Data Center.
$ bzt jira.yaml
Scenario 2:
Scalability
134. Run 3: One node
Run 5: Four nodes
Analyze report
Scenario 2:
Scalability
Run 4: Two nodes
135. Run 3: One node
Run 5: Four nodes
Analyze report
Scenario 2:
Scalability
Run 4: Two nodes
136. Run 3: One node
Run 5: Four nodes
Analyze report
Scale DC to two nodes
$ bzt jira.yaml
Scenario 2:
Scalability
Run 4: Two nodes
137. Run 3: One node
Run 4: Two nodes
Run 5: Four nodes
Analyze report
Scale DC to four nodes
Set 4 as Min and Max number of cluster nodes in Jira
AWS Quickstart template and update Stack.
$ bzt jira.yaml
Scenario 2:
Scalability
138. Run 3: One node
Run 4: Two nodes
Run 5: Four nodes
Analyse report
column_name: 90% Line
title: Scale Testing
runs:
- runName: one node
resultsPath: results/run3
- runName: two nodes
resultsPath: results/run4
- runName: four nodes
resultsPath: results/run5
Report yml
Scenario 2:
Scalability
139. Run 3: One node
Run 4: Two nodes
Run 5: Four nodes
Analyse report
column_name: 90% Line
title: Scale Testing
runs:
- runName: one node
resultsPath: results/run3
- runName: two nodes
resultsPath: results/run4
- runName: four nodes
resultsPath: results/run5
Report yml
Scenario 2:
Scalability
140. Run 3: One node
Run 4: Two nodes
Run 5: Four nodes
Analyse report
column_name: 90% Line
title: Scale Testing
runs:
- runName: one node
resultsPath: results/run3
- runName: two nodes
resultsPath: results/run4
- runName: four nodes
resultsPath: results/run5
Report yml
Scenario 2:
Scalability
141. Run 3: One node
Run 4: Two nodes
Run 5: Four nodes
Analyse report
column_name: 90% Line
title: Scale Testing
runs:
- runName: one node
resultsPath: results/run3
- runName: two nodes
resultsPath: results/run4
- runName: four nodes
resultsPath: results/run5
Report yml
Scenario 2:
Scalability
142. Run 3: One node
Run 4: Two nodes
Run 5: Four nodes
Analyse report
column_name: 90% Line
title: Scale Testing
runs:
- runName: one node
resultsPath: results/run3
- runName: two nodes
resultsPath: results/run4
- runName: four nodes
resultsPath: results/run5
Report yml
$ python csv_chart_generator.py report.yml
Scenario 2:
Scalability
143. Run 3: One node
Run 4: Two nodes
Run 5: Four nodes
Analyse report
Scenario 2:
Scalability