SlideShare ist ein Scribd-Unternehmen logo
1 von 150
Downloaden Sie, um offline zu lesen
Technical Deep Dive
Into Atlassian's New Apps Performance Testing Framework
BEN MAGRO | PRODUCT MANAGER | ATLASSIAN | @MAGRO
OLEKSANDR METELYTSIA | TEAM LEAD | ATLASSIAN
Background Our
Approach
Demo Questions
Agenda
BACKGROUND
FPO
FPO
QUICK SHOW
!"#$OF
THE PROGRAM’S GOALS
1. DELIVER AN ENTERPRISE
GRADE ECOSYSTEM FOR OUR
CUSTOMERS MISSION CRITICAL
DEPLOYMENTS
THE PROGRAM’S GOALS
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
Enterprise
Grade
Enterprise
Grade
1. Architectural Review
Enterprise
Grade
1. Architectural Review
2. Performance Testing
Enterprise
Grade
1. Architectural Review
2. Performance Testing
Approval
620+Data Center Approved Apps
93%of the tops apps are approved
DC APPS LAUNCH
SEPTEMBER 2018
VENDOR FEEDBACK
ATLASSIAN CODE BARREL INNVALOG BRICKIT
JQL TRICKS BITVOODOO BEECOM
ADAPTAVIST SMARTBEAR SNAPBYTES APPFIRE SERVICEROCKET
VENDOR INTERVIEWS
15
VENDOR INTERVIEWS
15PERFORMANCE TESTING
TOOK WEEKS
VENDOR INTERVIEWS
15PERFORMANCE TESTING
TOOK WEEKS
CREATING DATASETS
VENDOR INTERVIEWS
15PERFORMANCE TESTING
TOOK WEEKS
CREATING DATASETS
LIMITED GUIDANCE
Existing Tools
PERFORMANCE TOOLS
Existing Tools
PERFORMANCE TOOLS
• Specific Use Case
Existing Tools
PERFORMANCE TOOLS
• Specific Use Case
• Missing Data Sets
Existing Tools
PERFORMANCE TOOLS
• Specific Use Case
• Missing Data Sets
• Not Cross Product
Existing Tools
PERFORMANCE TOOLS
• Specific Use Case
• Missing Data Sets
• Not Cross Product
• Tightly Coupled to Cloud Provider
Existing Tools
PERFORMANCE TOOLS
• Specific Use Case
• Missing Data Sets
• Not Cross Product
• Tightly Coupled to Cloud Provider
• Time Consuming
Existing Tools
PERFORMANCE TOOLS
• Specific Use Case
• Missing Data Sets
• Not Cross Product
• Tightly Coupled to Cloud Provider
• Time Consuming
• Inconsistant Output
BETA
INTRODUCING
BETA
DATA CENTER APP
PERFORMANCE TOOLKIT
INTRODUCING
BETA
DATA CENTER APP
PERFORMANCE TOOLKIT
BETA
8.0.X
8.0.X
CO
M
IN
G
SO
O
N
7.13.X
7.0.X
6.13.X
6.0.X
5.0.X
GOALS OF THE PERFORMANCE TOOLKIT
Easy
Quick to setup and
run. Detailed
walkthroughs.
GOALS OF THE PERFORMANCE TOOLKIT
Easy
Quick to setup and
run. Detailed
walkthroughs.
Ship with data
Ship with realistic
enterprise datasets
GOALS OF THE PERFORMANCE TOOLKIT
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
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
OUR ASK WHAT IT’S NOT
Carved In StoneSeeking Feedback
OUR ASK WHAT IT’S NOT
Carved In Stone
Mandatory
Seeking Feedback
Recommended
OUR ASK WHAT IT’S NOT
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
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
bit.ly/DCAPTK
BETA
BETA
OUR
APPROACH
How hard is
performance
testing?
Hardware
Provisioned hardware, number of application nodes,
db power and instance configuration
Hardware
Provisioned hardware, number of application nodes,
db power and instance configuration
Configuration
Performance load profiles, datasets,
Product configuration
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
Support App Developers
By providing tooling and guidance on
how to measure the performance and
scalability of apps developed for
Atlassian’s DC products.
Start: fix moving parts
Start: fix moving parts
Jira versions
Jira Software 8.0.x and ER 7.13.x
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
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
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
OUR GOALS THINGS TO AVOID
Reinventing the wheelUtilise existing tools/learnings
OUR GOALS THINGS TO AVOID
Reinventing the wheel
Custom wrapper
Utilise existing tools/learnings
JMeter for REST
OUR GOALS THINGS TO AVOID
Reinventing the wheel
Custom wrapper
Ignore UI
Utilise existing tools/learnings
JMeter for REST
Selenium for UI measures
OUR GOALS THINGS TO AVOID
Reinventing the wheel
Custom wrapper
Ignore UI
Hardcode/magic numbers
Utilise existing tools/learnings
JMeter for REST
Selenium for UI measures
Simple yml config
OUR GOALS THINGS TO AVOID
Reinventing the wheel
Custom wrapper
Ignore UI
Hardcode/magic numbers
Monolith
Utilise existing tools/learnings
JMeter for REST
Selenium for UI measures
Simple yml config
Extensible
OUR GOALS THINGS TO AVOID
Taurus
automation
tool
Free and open source
Under Apache 2.0 License
Thin layer
An abstraction layer over JMeter and Selenium
Taurus
automation
tool
Free and open source
Under Apache 2.0 License
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
Taurus
For orchestration and
configuration
Data Center Application Performance Toolkit
Taurus
For orchestration and
configuration
JMeter
JMeter scripts to
generate base load
Data Center Application Performance Toolkit
Taurus
For orchestration and
configuration
JMeter
JMeter scripts to
generate base load
Selenium
Selenium PyTest
scrips to measure UI
response
Data Center Application Performance Toolkit
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
DEMO
Instance Setup
How to easily set
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.
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.
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
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
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
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
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
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
Launch Jira DC
Upload Dataset
Configuration
Prepare ENV
Install Toolkit
Launch Jira DC
Upload Dataset
Configuration
Prepare ENV
Install Toolkit
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
Launch Jira DC
Upload Dataset
Configuration
Prepare ENV
Install Toolkit
Launch Jira DC
Upload Dataset
Configuration
Restore DB from Postgres SQL Dump
By executing populate_db.sh script.
Prepare ENV
Install Toolkit
Launch Jira DC
Upload Dataset
Configuration
Restore DB from Postgres SQL Dump
By executing populate_db.sh script.
Upload attachments
By executing upload_attachments.sh script.
Prepare ENV
Install Toolkit
Launch Jira DC
Upload Dataset
Configuration
Restore DB from Postgres SQL Dump
By executing populate_db.sh script.
Upload attachments
By executing upload_attachments.sh script.
Perform Re-Index
Start Re-Index on Jira system preferences page.
Prepare ENV
Install Toolkit
$ wget https://dapt_repo/populate_db.sh
$ chmod +x populate_db.sh
$ ./populate_db.sh
Upload
Dataset
Restore DB
Upload
attachments
Perform Re-Index
Upload
Dataset
Restore DB
Upload
attachments
Perform Re-Index
--2019-08-26 05:22:25-- https://centaurus-
datasets.s3.amazonaws.com/jira/8.0.3/large/db.dump
Resolving centaurus-datasets.s3.amazonaws.com (centaurus-
datasets.s3.amazonaws.com)... 52.219.88.116
Connecting to centaurus-datasets.s3.amazonaws.com (centaurus-
datasets.s3.amazonaws.com)|52.219.88.116|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7340090453 (6.8G) [application/x-www-form-urlencoded]
Saving to: ‘db.dump’
31%
[================================================================>
Upload
Dataset
Restore DB
Upload
attachments
Perform Re-Index
pg_restore: creating FK CONSTRAINT "public.AO_E8B6CC_PR_TO_COMMIT
fk_ao_e8b6cc_pr_to_commit_request_id"
pg_restore: creating FK CONSTRAINT "public.AO_E8B6CC_REPO_TO_PROJECT
fk_ao_e8b6cc_repo_to_project_repository_id"
pg_restore: creating FK CONSTRAINT "public.AO_F1B27B_KEY_COMP_HISTORY
fk_ao_f1b27b_key_comp_history_timed_promise_id"
pg_restore: creating FK CONSTRAINT “public.AO_F1B27B_KEY_COMPONENT
fk_ao_f1b27b_key_component_timed_promise_id"
real 68m38.656s
user 1m43.237s
sys 0m11.933s
Step6: Start Jira
Upload
Dataset
Restore DB
Upload
attachments
Perform Re-Index
$ wget https://dapt_repo/upload_attachments.sh
$ chmod +x upload_attachments.sh
$ ./upload_attachments.sh
Upload
Dataset
Restore DB
Upload
attachments
Perform Re-Index
[300000/2000000 entries] [1.7 G/11.1 G transferred]
[2289 entries/s] [13.1 M/s bw] [monq 0] [jq 469]
[600000/2000000 entries] [3.3 G/11.1 G transferred]
[1929 entries/s] [11.0 M/s bw] [monq 0] [jq 369]
[900000/2000000 entries] [5.0 G/11.1 G transferred]
[666 entries/s] [3.8 M/s bw] [monq 0] [jq 269]
[1059000/2000000 entries] [5.9 G/11.1 G transferred]
[457 entries/s] [2.6 M/s bw] [monq 0] [jq 216]
[2000000/2000000 entries] [11.1 G/11.1 G transferred]
[385 entries/s] [2.2 M/s bw] [monq 1] [jq 1]
Upload
Dataset
Restore DB
Upload
attachments
Perform Re-Index
Upload
Dataset
Restore DB
Upload
attachments
Perform Re-Index
Upload
Dataset
Restore DB
Upload
attachments
Perform Re-Index
Launch Jira DC
Upload Dataset
Configuration
Clone git repository
$ git clone dcapt.git
Prepare ENV
Install Toolkit
Launch Jira DC
Upload Dataset
Configuration
Clone git repository
Follow README.md instructions
$ git clone dcapt.git
$ pip install bzt
Prepare ENV
Install Toolkit
Launch Jira DC
Upload Dataset
Configuration
jira.yml file
Prepare ENV
Install Toolkit
Launch Jira DC
Upload Dataset
Configuration
jira.yml file
Prepare ENV
Install Toolkit
Launch Jira DC
Upload Dataset
Configuration
jira.yml file
env:
application_hostname: jira.atlassian.com
application_protocol: http
application_port: 80
admin_login: admin
admin_password: admin
concurrency: 200
test_duration: 45m
WEBDRIVER_VISIBLE: False
Prepare ENV
Install Toolkit
Scenario 1: Performance Testing
With No App Data
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
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
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
Install App
Load Your App
Run 1: Without
App
Run 2: With App
Analyse Report
Scenario 1:
Performance
Testing
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
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
Run 2: With App
Run 1: Without
App
Install App
Analyse Report
Scenario 1:
Performance
Testing
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
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
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
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
Run 2: With App
Run 1: Without
App
Install App
Analyse Report
Scenario 1:
Performance
Testing
INDEX TIMING TEST
Now is a great
time to run your
re-index test
Extending The Tool
To Test Your Apps
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)
EXTENSION FILES
Modifying JMeter script
main script
(jira.jmx)
extension script
(extension.jmx)
(extension.jmx)
More on modifying JMeter
Modifying Selenium script
main script
(jira-ui.py)
extension script
(extension-ui.py)
...
def test_1_selenium_view_issue
(webdriver, datasets):
view_issue(webdriver, datasets)
def test_1_selenium_custom_action
(webdriver, datasets):
custom_action(webdriver, datasets)
...
def custom_action(webdriver, datasets):
@print_timing
def measure(webdriver, interaction):
webdriver.get(f'{URL}/plugin')
# WebDriverWait wait condition
measure(webdriver, 'selenium_view_report')
Running tests with your modification
main config
(jira.yml)
bzt jira.yml
settings:
...
concurrency: 10
test_duration: 5m
scenarios:
jmeter:
script: jmeter/jira.jmx
properties:
# Workload model
total_actions_per_hr: 54500
perc_create_issue: 100
With App Data
Scenario 2: Scalability Testing
Scenario 2:
Scalability
Load and Setup Your App
Run 3: One node
Run 4: Two nodes
Run 5: Four nodes
Analyze report
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
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
Run 3: One node
Run 5: Four nodes
Analyze report
Scenario 2:
Scalability
Run 4: Two nodes
Run 3: One node
Run 5: Four nodes
Analyze report
Scenario 2:
Scalability
Run 4: Two nodes
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
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
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
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
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
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
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
Run 3: One node
Run 4: Two nodes
Run 5: Four nodes
Analyse report
Scenario 2:
Scalability
Performance Testing 101
Congrats you’ve graduated
performance testing 101 with the Data
Center App Performance Toolkit
FEEDBACK
SLACK GROUP
bit.ly/dcapt_slack
ISSUE TRACKER
bit.ly/dcapt_issue
FEEDBACK
QUESTIONS
Thank you!
BEN MAGRO | PRODUCT MANAGER | ATLASSIAN | @MAGRO
OLEKSANDR METELYTSIA | TEAM LEAD | ATLASSIAN

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

The New & Improved Confluence Server and Data Center
The New & Improved Confluence Server and Data CenterThe New & Improved Confluence Server and Data Center
The New & Improved Confluence Server and Data Center
 
Integrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software CloudIntegrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software Cloud
 
Practical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version AppPractical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version App
 
Spec-first API Design for Speed and Safety
Spec-first API Design for Speed and SafetySpec-first API Design for Speed and Safety
Spec-first API Design for Speed and Safety
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy Model
 
Discover the Possibilities of the Jira Cloud Asset API
Discover the Possibilities of the Jira Cloud Asset APIDiscover the Possibilities of the Jira Cloud Asset API
Discover the Possibilities of the Jira Cloud Asset API
 
Preparing for Data Residency and Custom Domains
Preparing for Data Residency and Custom DomainsPreparing for Data Residency and Custom Domains
Preparing for Data Residency and Custom Domains
 
Declaring Server App Components in Pure Java
Declaring Server App Components in Pure JavaDeclaring Server App Components in Pure Java
Declaring Server App Components in Pure Java
 
How to Build a Better JIRA Add-on
How to Build a Better JIRA Add-onHow to Build a Better JIRA Add-on
How to Build a Better JIRA Add-on
 
Supercharge Your Pages - New Ways to Extend the Confluence Editor
Supercharge Your Pages - New Ways to Extend the Confluence EditorSupercharge Your Pages - New Ways to Extend the Confluence Editor
Supercharge Your Pages - New Ways to Extend the Confluence Editor
 
How Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fastHow Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fast
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge Triggers
 
Scaling Indexing and Replication in Jira Data Center Apps
Scaling Indexing and Replication in Jira Data Center AppsScaling Indexing and Replication in Jira Data Center Apps
Scaling Indexing and Replication in Jira Data Center Apps
 
Serverless Analytics and Monitoring For Your Cloud App
Serverless Analytics and Monitoring For Your Cloud AppServerless Analytics and Monitoring For Your Cloud App
Serverless Analytics and Monitoring For Your Cloud App
 
From AUI to Atlaskit - Streamlining Development for Server & Cloud Apps
From AUI to Atlaskit - Streamlining Development for Server & Cloud AppsFrom AUI to Atlaskit - Streamlining Development for Server & Cloud Apps
From AUI to Atlaskit - Streamlining Development for Server & Cloud Apps
 
Leaning into Server to Cloud App Migration
Leaning into Server to Cloud App MigrationLeaning into Server to Cloud App Migration
Leaning into Server to Cloud App Migration
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI System
 
Integrating Jira Software Cloud With the AWS Code Suite
Integrating Jira Software Cloud With the AWS Code SuiteIntegrating Jira Software Cloud With the AWS Code Suite
Integrating Jira Software Cloud With the AWS Code Suite
 
Creating Your Own Server Add-on that Customizes Confluence or JIRA
Creating Your Own Server Add-on that Customizes Confluence or JIRACreating Your Own Server Add-on that Customizes Confluence or JIRA
Creating Your Own Server Add-on that Customizes Confluence or JIRA
 

Ähnlich wie Technical Deep Dive Into Atlassian's New Apps Performance Testing Framework

Amol_Koshti_04May16
Amol_Koshti_04May16Amol_Koshti_04May16
Amol_Koshti_04May16
Amol Koshti
 
Tech foundations-slides
Tech foundations-slidesTech foundations-slides
Tech foundations-slides
tranquynh93
 

Ähnlich wie Technical Deep Dive Into Atlassian's New Apps Performance Testing Framework (20)

Integrate Infrastructure Configuration Management with Release Automation for...
Integrate Infrastructure Configuration Management with Release Automation for...Integrate Infrastructure Configuration Management with Release Automation for...
Integrate Infrastructure Configuration Management with Release Automation for...
 
Summer "Tuning" in Jira and DevSecOps
Summer "Tuning" in Jira and DevSecOpsSummer "Tuning" in Jira and DevSecOps
Summer "Tuning" in Jira and DevSecOps
 
Integrate Your Test Automation Tools for More Power
Integrate Your Test Automation Tools for More PowerIntegrate Your Test Automation Tools for More Power
Integrate Your Test Automation Tools for More Power
 
Platform 4.0 Meetup Launch Event
Platform 4.0 Meetup Launch EventPlatform 4.0 Meetup Launch Event
Platform 4.0 Meetup Launch Event
 
Real world selenium resume which gets more job interviews
Real world selenium resume which gets more job interviewsReal world selenium resume which gets more job interviews
Real world selenium resume which gets more job interviews
 
Amol_Koshti_04May16
Amol_Koshti_04May16Amol_Koshti_04May16
Amol_Koshti_04May16
 
Vmware 2015 with vsphereHigh performance application platforms
Vmware 2015 with vsphereHigh performance application platformsVmware 2015 with vsphereHigh performance application platforms
Vmware 2015 with vsphereHigh performance application platforms
 
DevOps Drive-In: Automate Database Deployments in Your Continuous Delivery Pi...
DevOps Drive-In: Automate Database Deployments in Your Continuous Delivery Pi...DevOps Drive-In: Automate Database Deployments in Your Continuous Delivery Pi...
DevOps Drive-In: Automate Database Deployments in Your Continuous Delivery Pi...
 
AWS reinvent 2019 - Transforming to feature-driven development
AWS reinvent 2019 - Transforming to feature-driven developmentAWS reinvent 2019 - Transforming to feature-driven development
AWS reinvent 2019 - Transforming to feature-driven development
 
DataOps for the Modern Data Warehouse on Microsoft Azure @ NDCOslo 2020 - Lac...
DataOps for the Modern Data Warehouse on Microsoft Azure @ NDCOslo 2020 - Lac...DataOps for the Modern Data Warehouse on Microsoft Azure @ NDCOslo 2020 - Lac...
DataOps for the Modern Data Warehouse on Microsoft Azure @ NDCOslo 2020 - Lac...
 
Tech foundations-slides
Tech foundations-slidesTech foundations-slides
Tech foundations-slides
 
DevOps - Its just Agile done right
DevOps - Its just Agile done rightDevOps - Its just Agile done right
DevOps - Its just Agile done right
 
Release and-dependency-management memphis python
Release and-dependency-management memphis pythonRelease and-dependency-management memphis python
Release and-dependency-management memphis python
 
AUG NYC - Atlassian Server Updates
AUG NYC - Atlassian Server UpdatesAUG NYC - Atlassian Server Updates
AUG NYC - Atlassian Server Updates
 
Webinar Oracle adf12c EN
Webinar Oracle adf12c ENWebinar Oracle adf12c EN
Webinar Oracle adf12c EN
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
 
CV_pawan
CV_pawanCV_pawan
CV_pawan
 
Chicago ALM User Group - Nov 2014 - Application Insights 101
Chicago ALM User Group - Nov 2014 - Application Insights 101Chicago ALM User Group - Nov 2014 - Application Insights 101
Chicago ALM User Group - Nov 2014 - Application Insights 101
 
Srinivasaragavan Jayakumar
Srinivasaragavan JayakumarSrinivasaragavan Jayakumar
Srinivasaragavan Jayakumar
 
Re-Invent 23 recap @ AWS UserGroup meetup
Re-Invent 23 recap @ AWS UserGroup meetupRe-Invent 23 recap @ AWS UserGroup meetup
Re-Invent 23 recap @ AWS UserGroup meetup
 

Mehr von Atlassian

Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
Atlassian
 

Mehr von Atlassian (20)

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App Showcase
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UI
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge Runtime
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User Experience
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in Forge
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the Building
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that Matter
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in Mind
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced Teams
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in Mind
 
Shipping With Velocity and Confidence Using Feature Flags
Shipping With Velocity and Confidence Using Feature FlagsShipping With Velocity and Confidence Using Feature Flags
Shipping With Velocity and Confidence Using Feature Flags
 
Build With Heart and Balance, Remote Work Edition
Build With Heart and Balance, Remote Work EditionBuild With Heart and Balance, Remote Work Edition
Build With Heart and Balance, Remote Work Edition
 
How to Grow an Atlassian App Worthy of Top Vendor Status
How to Grow an Atlassian App Worthy of Top Vendor StatusHow to Grow an Atlassian App Worthy of Top Vendor Status
How to Grow an Atlassian App Worthy of Top Vendor Status
 
Monitoring As Code: How to Integrate App Monitoring Into Your Developer Cycle
Monitoring As Code: How to Integrate App Monitoring Into Your Developer CycleMonitoring As Code: How to Integrate App Monitoring Into Your Developer Cycle
Monitoring As Code: How to Integrate App Monitoring Into Your Developer Cycle
 

Kürzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
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
  • 3.
  • 5.
  • 6. FPO
  • 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
  • 14. Enterprise Grade 1. Architectural Review 2. Performance Testing Approval
  • 16. 93%of the tops apps are approved
  • 18. VENDOR FEEDBACK ATLASSIAN CODE BARREL INNVALOG BRICKIT JQL TRICKS BITVOODOO BEECOM ADAPTAVIST SMARTBEAR SNAPBYTES APPFIRE SERVICEROCKET
  • 22. VENDOR INTERVIEWS 15PERFORMANCE TESTING TOOK WEEKS CREATING DATASETS LIMITED GUIDANCE
  • 25. Existing Tools PERFORMANCE TOOLS • Specific Use Case • Missing Data Sets
  • 26. Existing Tools PERFORMANCE TOOLS • Specific Use Case • Missing Data Sets • Not Cross Product
  • 27. Existing Tools PERFORMANCE TOOLS • Specific Use Case • Missing Data Sets • Not Cross Product • Tightly Coupled to Cloud Provider
  • 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
  • 30. BETA
  • 35. GOALS OF THE PERFORMANCE TOOLKIT
  • 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
  • 40. OUR ASK WHAT IT’S NOT
  • 41. Carved In StoneSeeking Feedback OUR ASK WHAT IT’S NOT
  • 42. Carved In Stone Mandatory Seeking Feedback Recommended OUR ASK WHAT IT’S NOT
  • 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
  • 46. BETA
  • 47.
  • 49.
  • 51. Hardware Provisioned hardware, number of application nodes, db power and instance configuration
  • 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
  • 60. OUR GOALS THINGS TO AVOID
  • 61. Reinventing the wheelUtilise existing tools/learnings OUR GOALS THINGS TO AVOID
  • 62. Reinventing the wheel Custom wrapper Utilise existing tools/learnings JMeter for REST OUR GOALS THINGS TO AVOID
  • 63. Reinventing the wheel Custom wrapper Ignore UI Utilise existing tools/learnings JMeter for REST Selenium for UI measures OUR GOALS THINGS TO AVOID
  • 64. Reinventing the wheel Custom wrapper Ignore UI Hardcode/magic numbers Utilise existing tools/learnings JMeter for REST Selenium for UI measures Simple yml config OUR GOALS THINGS TO AVOID
  • 65. Reinventing the wheel Custom wrapper Ignore UI Hardcode/magic numbers Monolith Utilise existing tools/learnings JMeter for REST Selenium for UI measures Simple yml config Extensible OUR GOALS THINGS TO AVOID
  • 66. Taurus automation tool Free and open source Under Apache 2.0 License
  • 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
  • 69. Taurus For orchestration and configuration Data Center Application Performance Toolkit
  • 70. Taurus For orchestration and configuration JMeter JMeter scripts to generate base load Data Center Application Performance Toolkit
  • 71. Taurus For orchestration and configuration JMeter JMeter scripts to generate base load Selenium Selenium PyTest scrips to measure UI response Data Center Application Performance Toolkit
  • 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
  • 73.
  • 74. DEMO
  • 75.
  • 76. Instance Setup How to easily set
  • 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
  • 85. Launch Jira DC Upload Dataset Configuration Prepare ENV Install Toolkit
  • 86. Launch Jira DC Upload Dataset Configuration Prepare ENV 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
  • 88. Launch Jira DC Upload Dataset Configuration Prepare ENV Install Toolkit
  • 89. Launch Jira DC Upload Dataset Configuration Restore DB from Postgres SQL Dump By executing populate_db.sh script. Prepare ENV Install Toolkit
  • 90. Launch Jira DC Upload Dataset Configuration Restore DB from Postgres SQL Dump By executing populate_db.sh script. Upload attachments By executing upload_attachments.sh script. Prepare ENV Install Toolkit
  • 91. Launch Jira DC Upload Dataset Configuration Restore DB from Postgres SQL Dump By executing populate_db.sh script. Upload attachments By executing upload_attachments.sh script. Perform Re-Index Start Re-Index on Jira system preferences page. Prepare ENV Install Toolkit
  • 92. $ wget https://dapt_repo/populate_db.sh $ chmod +x populate_db.sh $ ./populate_db.sh Upload Dataset Restore DB Upload attachments Perform Re-Index
  • 93. Upload Dataset Restore DB Upload attachments Perform Re-Index --2019-08-26 05:22:25-- https://centaurus- datasets.s3.amazonaws.com/jira/8.0.3/large/db.dump Resolving centaurus-datasets.s3.amazonaws.com (centaurus- datasets.s3.amazonaws.com)... 52.219.88.116 Connecting to centaurus-datasets.s3.amazonaws.com (centaurus- datasets.s3.amazonaws.com)|52.219.88.116|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 7340090453 (6.8G) [application/x-www-form-urlencoded] Saving to: ‘db.dump’ 31% [================================================================>
  • 94. Upload Dataset Restore DB Upload attachments Perform Re-Index pg_restore: creating FK CONSTRAINT "public.AO_E8B6CC_PR_TO_COMMIT fk_ao_e8b6cc_pr_to_commit_request_id" pg_restore: creating FK CONSTRAINT "public.AO_E8B6CC_REPO_TO_PROJECT fk_ao_e8b6cc_repo_to_project_repository_id" pg_restore: creating FK CONSTRAINT "public.AO_F1B27B_KEY_COMP_HISTORY fk_ao_f1b27b_key_comp_history_timed_promise_id" pg_restore: creating FK CONSTRAINT “public.AO_F1B27B_KEY_COMPONENT fk_ao_f1b27b_key_component_timed_promise_id" real 68m38.656s user 1m43.237s sys 0m11.933s Step6: Start Jira
  • 95. Upload Dataset Restore DB Upload attachments Perform Re-Index $ wget https://dapt_repo/upload_attachments.sh $ chmod +x upload_attachments.sh $ ./upload_attachments.sh
  • 96. Upload Dataset Restore DB Upload attachments Perform Re-Index [300000/2000000 entries] [1.7 G/11.1 G transferred] [2289 entries/s] [13.1 M/s bw] [monq 0] [jq 469] [600000/2000000 entries] [3.3 G/11.1 G transferred] [1929 entries/s] [11.0 M/s bw] [monq 0] [jq 369] [900000/2000000 entries] [5.0 G/11.1 G transferred] [666 entries/s] [3.8 M/s bw] [monq 0] [jq 269] [1059000/2000000 entries] [5.9 G/11.1 G transferred] [457 entries/s] [2.6 M/s bw] [monq 0] [jq 216] [2000000/2000000 entries] [11.1 G/11.1 G transferred] [385 entries/s] [2.2 M/s bw] [monq 1] [jq 1]
  • 100. Launch Jira DC Upload Dataset Configuration Clone git repository $ git clone dcapt.git Prepare ENV Install Toolkit
  • 101. Launch Jira DC Upload Dataset Configuration Clone git repository Follow README.md instructions $ git clone dcapt.git $ pip install bzt Prepare ENV Install Toolkit
  • 102. Launch Jira DC Upload Dataset Configuration jira.yml file Prepare ENV Install Toolkit
  • 103. Launch Jira DC Upload Dataset Configuration jira.yml file Prepare ENV Install Toolkit
  • 104. Launch Jira DC Upload Dataset Configuration jira.yml file env: application_hostname: jira.atlassian.com application_protocol: http application_port: 80 admin_login: admin admin_password: admin concurrency: 200 test_duration: 45m WEBDRIVER_VISIBLE: False Prepare ENV Install Toolkit
  • 105. Scenario 1: Performance Testing With No App Data
  • 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
  • 122. INDEX TIMING TEST Now is a great time to run your re-index test
  • 123. Extending The Tool To Test Your Apps
  • 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)
  • 126. Modifying JMeter script main script (jira.jmx) extension script (extension.jmx)
  • 128. Modifying Selenium script main script (jira-ui.py) extension script (extension-ui.py) ... def test_1_selenium_view_issue (webdriver, datasets): view_issue(webdriver, datasets) def test_1_selenium_custom_action (webdriver, datasets): custom_action(webdriver, datasets) ... def custom_action(webdriver, datasets): @print_timing def measure(webdriver, interaction): webdriver.get(f'{URL}/plugin') # WebDriverWait wait condition measure(webdriver, 'selenium_view_report')
  • 129. Running tests with your modification main config (jira.yml) bzt jira.yml settings: ... concurrency: 10 test_duration: 5m scenarios: jmeter: script: jmeter/jira.jmx properties: # Workload model total_actions_per_hr: 54500 perc_create_issue: 100
  • 130. With App Data Scenario 2: Scalability Testing
  • 131. Scenario 2: Scalability Load and Setup Your App Run 3: One node Run 4: Two nodes Run 5: Four nodes Analyze report
  • 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
  • 144. Performance Testing 101 Congrats you’ve graduated performance testing 101 with the Data Center App Performance Toolkit
  • 147.
  • 149.
  • 150. Thank you! BEN MAGRO | PRODUCT MANAGER | ATLASSIAN | @MAGRO OLEKSANDR METELYTSIA | TEAM LEAD | ATLASSIAN