SlideShare a Scribd company logo
1 of 47
Automate performance testing with
AppDynamics using continuous
integration platforms
Brad Stoner
Senior Sales Engineer | AppDynamics
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 2
Notice
The information and materials included in this presentation (collectively, the
“Materials”) are the proprietary information of AppDynamics, Inc. (“AppDynamics” or
the “Company”). No part of the Materials may be reproduced, distributed,
communicated or displayed in any form or by any means, or used to make any
derivative work, without prior written permission from AppDynamics.
The Materials may contain product roadmap information of AppDynamics.
AppDynamics reserves the right to change any product roadmap information at any
time, for any reason and without notice. This information is intended to outline
AppDynamics' general product direction, it is not a guarantee of future product
features, and it should not be relied on in making a purchasing decision. The
development, release, and timing of any features or functionality described for
AppDynamics' products remains at AppDynamics' sole discretion. AppDynamics
reserves the right to change any planned features at any time before making them
generally available as well as never making them generally available.
All third-party trademarks, including names, logos and brands, referenced by
AppDynamics in this presentation are property of their respective owners. All
references to third-party trademarks are for identification purposes only and shall be
considered nominative fair use under trademark law. © 2016 AppDynamics, Inc. All
rights reserved.
Key takeaways
• How to get started with performance test automation
• How to detect and resolve performance issues earlier in the
development lifecycle with AppDynamics
• How to maximize the quality and value of your performance test
strategy
AppDynamics Confidential and Proprietary 3
My background
• 7 years @ H&R Block Load and Performance Team
– 5 person team
– 100k + user concurrency
– Tax peak 2nd week after go-live
– 70 applications annually
– Diverse technology stack – including 3rd party
• 2 years @ Neotys – Senior Performance Engineer
• Currently Sales Engineer @ AppDynamics
AppDynamics Confidential and Proprietary 4
What is performance testing?
AppDynamics Confidential and Proprietary 5
Why bother?
AppDynamics Confidential and Proprietary 6
Google - Using page speed in site ranking
Facebook - Launches 'lite' mobile app
Amazon - 100ms delay -> $6.79M sales
decrease
Recent airline industry outages
Legacy performance testing
AppDynamics Confidential and Proprietary 7
Increasing velocity
…performance testing
isn't historically fast
AppDynamics Confidential and Proprietary 8
Keeping up with Agile / DevOps
AppDynamics Confidential and Proprietary 9
Performance defects
AppDynamics Confidential and Proprietary 10
Pull back the layers
AppDynamics Confidential and Proprietary 11
Prod / Perf
Pre-Prod /
Staging
Dev / QA
Dev / QA
• Short test cycle
• Low resources / cost
• Rapid feedback
• Component testing
AppDynamics Confidential and Proprietary 12
Staging / Pre-Prod
• Increased resources
• Long test durations
• Additional resources
• Multiple test
elements
• Integrated systems
• Build validation
AppDynamics Confidential and Proprietary 13
Prod / Perf
• High complexity
• Multiple integrated
systems
• Environmental variance
• Resource intensive
• High cost
AppDynamics Confidential and Proprietary 14
Resources and speed
Resources
Speed
Prod / Perf
Staging / Pre-
Prod
DEV/QA
Mobile web/app example
Dev testing - APIs
Staging testing – Capacity w/ UI
and API
Build automation
Baseline Pre-Prod / Staging -
platform
Prod / Perf testing (inside
firewall) – stability /
scalability
Prod / Perf testing
(outside firewall) –
network / load
balancing
QA testing – API flows
Optimize app chatter
and network
resources
Mobile app released
Mobile app built
Mobile site releasedMobile site built
APIs released/ BE functionality
Front End
Optimization
What if legacy test principles were applied?
Staging testing –
Capacity w/ UI and API
Baseline Pre-Prod /
Staging - platform
Prod / Perf testing (inside firewall) –
stability / scalability
Prod / Perf testing (outside
firewall) – network / load
balancing
Front End
Optimization
Optimize app
chatter and
network
resources
Mobile app released
Mobile app built
Mobile site releasedMobile site built
APIs released/ BE functionality
Demo
AppDynamics Key Components
AppDynamics Usage
Compare Releases Compare critical metrics for different tests (FE and BE)
Database Monitoring Measure and visualize performance deltas between tests
Server Monitoring Measure and visualize performance deltas between tests
Jenkins Plugin Enables automated pass/fail of tests
Troubleshoot Slow
Response Times
Quickly find root cause of performance issues and test failure
Service Endpoints Track shared services performance over time (APIs)
Custom Match Rules Name Business Transactions to match load test scripts
Custom Dashboards Management and technical level tracking of application
performance
AppDynamics Confidential and Proprietary 19
Questions and contact
• Email: brad.stoner@appdynamics.com
• Twitter: @sandbreak80
AppDynamics Confidential and Proprietary 20
Please give us your feedback—Session T5808
• Complete the online survey you'll receive via
email later today or via text at:
Text this number: 878787
Text this word: APPSPHERE
• Every time you submit a session survey, your
name will be entered in a random drawing.
We're giving away Amazon Echos
to 5 lucky winners!
• Thank you for your input
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 21
Win!
Thank you
Screenshots of live demo
for offline viewing
Jenkins for CI/CD
AppDynamics Confidential and Proprietary 24
Git and AppDynamics integration
AppDynamics Confidential and Proprietary 25
Jenkins job details
AppDynamics Confidential and Proprietary 26
AppDynamics Jenkins plugin
AppDynamics Confidential and Proprietary 27
Performance job execution
AppDynamics Confidential and Proprietary 28
NeoLoad performance report
AppDynamics Confidential and Proprietary 29
KonaKart test application
AppDynamics Confidential and Proprietary 30
Custom events in AppDynamics
AppDynamics Confidential and Proprietary 31
Identify slow queries
AppDynamics Confidential and Proprietary 32
Add missing index
AppDynamics Confidential and Proprietary 33
Compare release performance
AppDynamics Confidential and Proprietary 34
Reference material
Technology stack
AppDynamics Confidential and Proprietary 36
AppDynamics Confidential and Proprietary 36
Demo resources
• AppDynamics controller - https://www.appdynamics.com/free-trial/
• Docker Compose YML: https://github.com/sandbreak80/myapp
• NeoLoad project for KonaKart (localhost):
https://github.com/sandbreak80/konakart
– Jenkins user will need access to modify these files
• Docker Hub for mysql access via adminer:
https://hub.docker.com/r/sandbreak80/adminer/
• Docker Hub for konakart:
https://hub.docker.com/r/sandbreak80/docker_konakart/
AppDynamics Confidential and Proprietary 37
Demo software install
• Setup instance for docker
– Install Docker: curl -sSL https://get.docker.com/ | sh
– Avoid sudo for docker: sudo usermod -aG docker ubuntu
– Install docker compose:
• sudo apt-get -y install python-pip
• sudo pip install docker-compose
• Jenkins 2 install (if needed):
– wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
– sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
– sudo apt-get update
– sudo apt-get install jenkins
• NeoLoad install
– wget https://d24mnm5myvorwj.cloudfront.net/documents/download/neoload/v5.2/neoload_5_2_2_linux_x64.sh
– sudo chmod +x neoload_5_2_2_linux_x64.sh
– mkdir /home/ubuntu/neoload
– sudo sh neoload_5_2_2_linux_x64.sh -q -dir /home/ubuntu/neoload -Vsys.installationTypeId=Controller -
Vsys.component.Common$Boolean=true -Vsys.component.Controller$Boolean=true
AppDynamics Confidential and Proprietary 38
Start demo environment
• Clone docker-compose file
– mkdir myapp
– cd myapp
– git clone https://github.com/sandbreak80/myapp.git
• Pull, build, and start docker containers
– sudo docker-compose start
AppDynamics Confidential and Proprietary 39
Configure AppDynamics
• Connect to the KonaKart instance
– sudo docker exec -i -t konakart /bin/bash
• Install VIM: apt-get install vim
• Edit the tomcat environment file
– vi /usr/local/konakart/bin/setenv.sh
– export CATALINA_OPTS="$CATALINA_OPTS -
javaagent:/home/appdynamics/java_agent/javaagent.jar
– -Dappdynamics.controller.hostName=your_controller_name_or_ip
– -Dappdynamics.controller.port=8090
– -Dappdynamics.agent.applicationName=KonaKart
– -Dappdynamics.agent.tierName=Kona_Server
– -Dappdynamics.agent.nodeName=Node1
– -Dappdynamics.agent.accountName=customer1
– -Dappdynamics.agent.accountAccessKey=your_access_key"
AppDynamics Confidential and Proprietary 40
AppDynamics authentication
• BASIC authentication is used in AppDynamics to create custom events and time ranges in the
next two slides
– As a reference, the AppDynamics REST API is documented here -
https://docs.appdynamics.com/display/PRO42/Using+the+Controller+APIs.
– The first call authenticates with the AppDynamics controller, and stores the authentication cookie into
/tmp/session.dat on the Jenkins Server. Note that we’re using a basic authentication header instead of
directly exposing our username and password.
– There are a number of utilities you can leverage to base64 encode a string, like
https://www.base64encode.org/.
– The username / password format to encode is: <username>@<account name>:<password> and the @
symbol needs to be URI encoded.
– By default, in single tenant controllers, the <account name> will always be customer1. So, to get our
base64 authentication header we can encode - admin%40customer1:appdynamics – to get our
authentication header
– YWRtaW4lNDBjdXN0b21lcjE6YXBwZHluYW1pY3M=
– ***Note***
– We need to URI encode our username and password string, which is why we use ‘%40’ instead of the
‘@’ character.
AppDynamics Confidential and Proprietary 41
Create custom event in AppDynamics
• Load test start (linux shell step):
– curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic your_base_64_token" -X
GET http://your_appdynamics_controller:8090/controller/auth?action=login
– PARAMS="events?eventtype=CUSTOM&customeventtype=LOAD_TEST&summary=LOAD_
TEST_START-${JOB_NAME}-${BUILD_ID}&severity=INFO&tier=Kona_Server”
– curl -s -b /tmp/session.dat --data "${PARAMS}"
http://your_appdynamics_controller:8090/controller/rest/applications/KonaKart/events
• Load test stop (linux shell step):
– curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic your_base_64_token " -X
GET http://your_appdynamics_controller:8090/controller/auth?action=login
– PARAMS="events?eventtype=CUSTOM&customeventtype=LOAD_TEST&summary=LOAD_
TEST_STOP-${JOB_NAME}-${BUILD_ID}&severity=INFO&tier=Kona_Server”
– curl -s -b /tmp/session.dat --data "${PARAMS}"
http://your_appdynamics_controller:8090/controller/rest/applications/KonaKart/events
AppDynamics Confidential and Proprietary 42
Create custom time range in AppDynamics
• Linux shell step in Jenkins for creating a custom time range based on job start and end:
#!/bin/sh
END=$(date +%s)
echo "$END"
END_MS=$(($END * 1000))
echo "$END_MS"
echo "$BUILD_TIMESTAMP"
jobstart=$BUILD_TIMESTAMP
START=$(date -d "${jobstart}" +%s)
echo "$START"
START_MS=$(($START * 1000))
echo "$START_MS"
curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic YWRtaW4lNDBjdXN0b21lcjE6YXBwZHluYW1pY3M=" -X GET http://devopslabappsphere:8090/controller/auth?action=login
PARAMS="{"name":"LOAD_TEST-${JOB_NAME}-
${BUILD_ID}","description":"","shared":true,"timeRange":{"type":"BETWEEN_TIMES","durationInMinutes":0,"startTime":${START_MS},"endTime":${END_MS}}}"
curl --verbose -s -b /tmp/session.dat --header "Content-Type: application/json;charset=utf-8" --header "Authorization: Basic YnJhZCU0MGN1c3RvbWVyMTozQ29tMzgxMg==" --header "Accept-
Encoding: gzip, deflate" --header "Accept: application/json, text/plain" --data "${PARAMS}" http://devopslabappsphere:8090/controller/restui/user/createCustomRange
AppDynamics Confidential and Proprietary 43
NeoLoad with GIT
• GitHub project - https://github.com/sandbreak80/konakart
– mkdir neoload_projects/konakart
– cd neoload_projects/konakart
– git clone https://github.com/sandbreak80/konakart.git
• Pull project in Jenkins job (linux shell step):
– cd /home/ubuntu/neoload_projects/konakart
– git fetch –all
– git reset --hard origin/master
• Push test results (linux shell step):
– cd /home/ubuntu/neoload_projects/konakart
– git add *git commit -a -m "jenkins-${JOB_NAME}-${BUILD_NUMBER}”
– git push https://username:your_github_token@github.com/username/konakart.git --all
• Generate GitHub token:
– https://help.github.com/articles/creating-an-access-token-for-command-line-use/
AppDynamics Confidential and Proprietary 44
Jenkins plugins used
• AppDynamics - https://wiki.jenkins-
ci.org/display/JENKINS/AppDynamics+Plugin/
• NeoLoad - https://wiki.jenkins-
ci.org/display/JENKINS/NeoLoad+Plugin
• Timestamper - https://wiki.jenkins-
ci.org/display/JENKINS/Timestamper
– Manage Jenkins -> Configure ->
– Date pattern for the BUILD_TIMESTAMP
– EEE d MMM yyyy HH:mm:ss
AppDynamics Confidential and Proprietary 45
Adminer access
• http://your_server_name:8081/
• host: konakart
• user : monitor
• password: appd123
• database: konakart
AppDynamics Confidential and Proprietary 46
KonaKart access
• http://your_server_name:8780/konakart/
AppDynamics Confidential and Proprietary 47

More Related Content

What's hot

Performance Budgets: Using APM Performance Data to Drive Decisions on Design ...
Performance Budgets: Using APM Performance Data to Drive Decisions on Design ...Performance Budgets: Using APM Performance Data to Drive Decisions on Design ...
Performance Budgets: Using APM Performance Data to Drive Decisions on Design ...AppDynamics
 
Use AppDynamics SDK to Integrate with your Applications - AppSphere16
Use AppDynamics SDK to Integrate with your Applications - AppSphere16Use AppDynamics SDK to Integrate with your Applications - AppSphere16
Use AppDynamics SDK to Integrate with your Applications - AppSphere16AppDynamics
 
AppDynamics- A sneak peak into the product that is disrupting the Application...
AppDynamics- A sneak peak into the product that is disrupting the Application...AppDynamics- A sneak peak into the product that is disrupting the Application...
AppDynamics- A sneak peak into the product that is disrupting the Application...Codemotion
 
Database Visibility and Troubleshooting Hands-on Lab - AppSphere16
Database Visibility and Troubleshooting Hands-on Lab - AppSphere16Database Visibility and Troubleshooting Hands-on Lab - AppSphere16
Database Visibility and Troubleshooting Hands-on Lab - AppSphere16AppDynamics
 
How CapitalOne Transformed DevTest or Continuous Delivery - AppSphere16
How CapitalOne Transformed DevTest or Continuous Delivery - AppSphere16How CapitalOne Transformed DevTest or Continuous Delivery - AppSphere16
How CapitalOne Transformed DevTest or Continuous Delivery - AppSphere16AppDynamics
 
Under the Hood: Monitoring Azure and .NET - AppSphere16
Under the Hood: Monitoring Azure and .NET - AppSphere16Under the Hood: Monitoring Azure and .NET - AppSphere16
Under the Hood: Monitoring Azure and .NET - AppSphere16AppDynamics
 
How Jack Henry & Associates Addressed Six of the Biggest Application Performa...
How Jack Henry & Associates Addressed Six of the Biggest Application Performa...How Jack Henry & Associates Addressed Six of the Biggest Application Performa...
How Jack Henry & Associates Addressed Six of the Biggest Application Performa...AppDynamics
 
Best Practices for Managing IaaS, PaaS, and Container-Based Deployments - App...
Best Practices for Managing IaaS, PaaS, and Container-Based Deployments - App...Best Practices for Managing IaaS, PaaS, and Container-Based Deployments - App...
Best Practices for Managing IaaS, PaaS, and Container-Based Deployments - App...AppDynamics
 
Advanced APM .NET Hands-On Lab - AppSphere16
Advanced APM .NET Hands-On Lab - AppSphere16Advanced APM .NET Hands-On Lab - AppSphere16
Advanced APM .NET Hands-On Lab - AppSphere16AppDynamics
 
Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16
Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16
Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16AppDynamics
 
Lessons Learned at a US Government Agency Monitoring a Large, Highly Regulate...
Lessons Learned at a US Government Agency Monitoring a Large, Highly Regulate...Lessons Learned at a US Government Agency Monitoring a Large, Highly Regulate...
Lessons Learned at a US Government Agency Monitoring a Large, Highly Regulate...AppDynamics
 
Application Performance Monitoring
Application Performance MonitoringApplication Performance Monitoring
Application Performance MonitoringOlivier Gérardin
 
How Halogen Delivered High-Velocity Operations in a Compliance-Driven Environ...
How Halogen Delivered High-Velocity Operations in a Compliance-Driven Environ...How Halogen Delivered High-Velocity Operations in a Compliance-Driven Environ...
How Halogen Delivered High-Velocity Operations in a Compliance-Driven Environ...AppDynamics
 
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...AppDynamics
 
Accelerating Your Mastery of APM Through Skills Self-Analysis - AppSphere16
Accelerating Your Mastery of APM Through Skills Self-Analysis - AppSphere16Accelerating Your Mastery of APM Through Skills Self-Analysis - AppSphere16
Accelerating Your Mastery of APM Through Skills Self-Analysis - AppSphere16AppDynamics
 
Advanced Controls access and user security for superusers con8824
Advanced Controls access and user security for superusers con8824Advanced Controls access and user security for superusers con8824
Advanced Controls access and user security for superusers con8824Oracle
 
Velocity Presentation - Unified Monitoring with AppDynamics
Velocity Presentation - Unified Monitoring with AppDynamicsVelocity Presentation - Unified Monitoring with AppDynamics
Velocity Presentation - Unified Monitoring with AppDynamicsAppDynamics
 
How DixonsCarphone uses AppDynamics Application Analytics to Influence Busine...
How DixonsCarphone uses AppDynamics Application Analytics to Influence Busine...How DixonsCarphone uses AppDynamics Application Analytics to Influence Busine...
How DixonsCarphone uses AppDynamics Application Analytics to Influence Busine...AppDynamics
 
How AppDynamics Saved Garmin's Christmas! - AppSphere16
How AppDynamics Saved Garmin's Christmas! - AppSphere16How AppDynamics Saved Garmin's Christmas! - AppSphere16
How AppDynamics Saved Garmin's Christmas! - AppSphere16AppDynamics
 

What's hot (20)

Performance Budgets: Using APM Performance Data to Drive Decisions on Design ...
Performance Budgets: Using APM Performance Data to Drive Decisions on Design ...Performance Budgets: Using APM Performance Data to Drive Decisions on Design ...
Performance Budgets: Using APM Performance Data to Drive Decisions on Design ...
 
Use AppDynamics SDK to Integrate with your Applications - AppSphere16
Use AppDynamics SDK to Integrate with your Applications - AppSphere16Use AppDynamics SDK to Integrate with your Applications - AppSphere16
Use AppDynamics SDK to Integrate with your Applications - AppSphere16
 
AppDynamics- A sneak peak into the product that is disrupting the Application...
AppDynamics- A sneak peak into the product that is disrupting the Application...AppDynamics- A sneak peak into the product that is disrupting the Application...
AppDynamics- A sneak peak into the product that is disrupting the Application...
 
Database Visibility and Troubleshooting Hands-on Lab - AppSphere16
Database Visibility and Troubleshooting Hands-on Lab - AppSphere16Database Visibility and Troubleshooting Hands-on Lab - AppSphere16
Database Visibility and Troubleshooting Hands-on Lab - AppSphere16
 
How CapitalOne Transformed DevTest or Continuous Delivery - AppSphere16
How CapitalOne Transformed DevTest or Continuous Delivery - AppSphere16How CapitalOne Transformed DevTest or Continuous Delivery - AppSphere16
How CapitalOne Transformed DevTest or Continuous Delivery - AppSphere16
 
Under the Hood: Monitoring Azure and .NET - AppSphere16
Under the Hood: Monitoring Azure and .NET - AppSphere16Under the Hood: Monitoring Azure and .NET - AppSphere16
Under the Hood: Monitoring Azure and .NET - AppSphere16
 
How Jack Henry & Associates Addressed Six of the Biggest Application Performa...
How Jack Henry & Associates Addressed Six of the Biggest Application Performa...How Jack Henry & Associates Addressed Six of the Biggest Application Performa...
How Jack Henry & Associates Addressed Six of the Biggest Application Performa...
 
Best Practices for Managing IaaS, PaaS, and Container-Based Deployments - App...
Best Practices for Managing IaaS, PaaS, and Container-Based Deployments - App...Best Practices for Managing IaaS, PaaS, and Container-Based Deployments - App...
Best Practices for Managing IaaS, PaaS, and Container-Based Deployments - App...
 
Advanced APM .NET Hands-On Lab - AppSphere16
Advanced APM .NET Hands-On Lab - AppSphere16Advanced APM .NET Hands-On Lab - AppSphere16
Advanced APM .NET Hands-On Lab - AppSphere16
 
Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16
Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16
Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16
 
Lessons Learned at a US Government Agency Monitoring a Large, Highly Regulate...
Lessons Learned at a US Government Agency Monitoring a Large, Highly Regulate...Lessons Learned at a US Government Agency Monitoring a Large, Highly Regulate...
Lessons Learned at a US Government Agency Monitoring a Large, Highly Regulate...
 
Application Performance Monitoring
Application Performance MonitoringApplication Performance Monitoring
Application Performance Monitoring
 
How Halogen Delivered High-Velocity Operations in a Compliance-Driven Environ...
How Halogen Delivered High-Velocity Operations in a Compliance-Driven Environ...How Halogen Delivered High-Velocity Operations in a Compliance-Driven Environ...
How Halogen Delivered High-Velocity Operations in a Compliance-Driven Environ...
 
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...
 
Accelerating Your Mastery of APM Through Skills Self-Analysis - AppSphere16
Accelerating Your Mastery of APM Through Skills Self-Analysis - AppSphere16Accelerating Your Mastery of APM Through Skills Self-Analysis - AppSphere16
Accelerating Your Mastery of APM Through Skills Self-Analysis - AppSphere16
 
Advanced Controls access and user security for superusers con8824
Advanced Controls access and user security for superusers con8824Advanced Controls access and user security for superusers con8824
Advanced Controls access and user security for superusers con8824
 
Velocity Presentation - Unified Monitoring with AppDynamics
Velocity Presentation - Unified Monitoring with AppDynamicsVelocity Presentation - Unified Monitoring with AppDynamics
Velocity Presentation - Unified Monitoring with AppDynamics
 
How DixonsCarphone uses AppDynamics Application Analytics to Influence Busine...
How DixonsCarphone uses AppDynamics Application Analytics to Influence Busine...How DixonsCarphone uses AppDynamics Application Analytics to Influence Busine...
How DixonsCarphone uses AppDynamics Application Analytics to Influence Busine...
 
App Dynamics
App DynamicsApp Dynamics
App Dynamics
 
How AppDynamics Saved Garmin's Christmas! - AppSphere16
How AppDynamics Saved Garmin's Christmas! - AppSphere16How AppDynamics Saved Garmin's Christmas! - AppSphere16
How AppDynamics Saved Garmin's Christmas! - AppSphere16
 

Viewers also liked

AppSphere 15 - Performance and Scalability Optimizations - Xerox Government H...
AppSphere 15 - Performance and Scalability Optimizations - Xerox Government H...AppSphere 15 - Performance and Scalability Optimizations - Xerox Government H...
AppSphere 15 - Performance and Scalability Optimizations - Xerox Government H...AppDynamics
 
Is Your Infrastructure Affecting Critical Business Transactions? - AppSphere16
Is Your Infrastructure Affecting Critical Business Transactions? - AppSphere16Is Your Infrastructure Affecting Critical Business Transactions? - AppSphere16
Is Your Infrastructure Affecting Critical Business Transactions? - AppSphere16AppDynamics
 
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureJelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureDmitry Lazarenko
 
Visibility from user to infrastructure on AWS
Visibility from user to infrastructure on AWSVisibility from user to infrastructure on AWS
Visibility from user to infrastructure on AWSAppDynamics
 
AppSphere 15 - Containers and Microservices Create New Performance Challenges
AppSphere 15 - Containers and Microservices Create New Performance ChallengesAppSphere 15 - Containers and Microservices Create New Performance Challenges
AppSphere 15 - Containers and Microservices Create New Performance ChallengesAppDynamics
 
AppSphere 15 - Mining the World’s Largest Healthcare Data Warehouse while Ens...
AppSphere 15 - Mining the World’s Largest Healthcare Data Warehouse while Ens...AppSphere 15 - Mining the World’s Largest Healthcare Data Warehouse while Ens...
AppSphere 15 - Mining the World’s Largest Healthcare Data Warehouse while Ens...AppDynamics
 
AppSphere 15 - Application Analytics helping DevOps with Data Driven Decision...
AppSphere 15 - Application Analytics helping DevOps with Data Driven Decision...AppSphere 15 - Application Analytics helping DevOps with Data Driven Decision...
AppSphere 15 - Application Analytics helping DevOps with Data Driven Decision...AppDynamics
 
Unified Monitoring Webinar with Dustin Whittle
Unified Monitoring Webinar with Dustin WhittleUnified Monitoring Webinar with Dustin Whittle
Unified Monitoring Webinar with Dustin WhittleAppDynamics
 
Complete Visibility into Docker Containers with AppDynamics
Complete Visibility into Docker Containers with AppDynamicsComplete Visibility into Docker Containers with AppDynamics
Complete Visibility into Docker Containers with AppDynamicsAppDynamics
 
AppSphere 15 - Manage your Microservices with Red Hat OpenShift and AppDynamics
AppSphere 15 - Manage your Microservices with Red Hat OpenShift and AppDynamicsAppSphere 15 - Manage your Microservices with Red Hat OpenShift and AppDynamics
AppSphere 15 - Manage your Microservices with Red Hat OpenShift and AppDynamicsAppDynamics
 
AppSphere 15 - Monitoring Cloud & Asynchronous Applications
AppSphere 15 - Monitoring Cloud & Asynchronous ApplicationsAppSphere 15 - Monitoring Cloud & Asynchronous Applications
AppSphere 15 - Monitoring Cloud & Asynchronous ApplicationsAppDynamics
 
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015DevOpsDays Tel Aviv
 
Next-Gen Business Transaction Configuration, Instrumentation, and Java Perfor...
Next-Gen Business Transaction Configuration, Instrumentation, and Java Perfor...Next-Gen Business Transaction Configuration, Instrumentation, and Java Perfor...
Next-Gen Business Transaction Configuration, Instrumentation, and Java Perfor...AppDynamics
 
How Financial Engines Drives Business Outcomes Using AppDynamics Analytics - ...
How Financial Engines Drives Business Outcomes Using AppDynamics Analytics - ...How Financial Engines Drives Business Outcomes Using AppDynamics Analytics - ...
How Financial Engines Drives Business Outcomes Using AppDynamics Analytics - ...AppDynamics
 
Top 10 Application Problems
Top 10 Application ProblemsTop 10 Application Problems
Top 10 Application ProblemsAppDynamics
 
Synthetic Monitoring Deep Dive - AppSphere16
Synthetic Monitoring Deep Dive - AppSphere16Synthetic Monitoring Deep Dive - AppSphere16
Synthetic Monitoring Deep Dive - AppSphere16AppDynamics
 
How SAS Institute Drove Digital Transformation Through DevOps - AppSphere16
How SAS Institute Drove Digital Transformation Through DevOps - AppSphere16How SAS Institute Drove Digital Transformation Through DevOps - AppSphere16
How SAS Institute Drove Digital Transformation Through DevOps - AppSphere16AppDynamics
 
Prometheus (Monitorama 2016)
Prometheus (Monitorama 2016)Prometheus (Monitorama 2016)
Prometheus (Monitorama 2016)Brian Brazil
 
Monitoring Challenges - Monitorama 2016 - Monitoringless
Monitoring Challenges - Monitorama 2016 - MonitoringlessMonitoring Challenges - Monitorama 2016 - Monitoringless
Monitoring Challenges - Monitorama 2016 - MonitoringlessAdrian Cockcroft
 

Viewers also liked (20)

AppSphere 15 - Performance and Scalability Optimizations - Xerox Government H...
AppSphere 15 - Performance and Scalability Optimizations - Xerox Government H...AppSphere 15 - Performance and Scalability Optimizations - Xerox Government H...
AppSphere 15 - Performance and Scalability Optimizations - Xerox Government H...
 
Is Your Infrastructure Affecting Critical Business Transactions? - AppSphere16
Is Your Infrastructure Affecting Critical Business Transactions? - AppSphere16Is Your Infrastructure Affecting Critical Business Transactions? - AppSphere16
Is Your Infrastructure Affecting Critical Business Transactions? - AppSphere16
 
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureJelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
 
Visibility from user to infrastructure on AWS
Visibility from user to infrastructure on AWSVisibility from user to infrastructure on AWS
Visibility from user to infrastructure on AWS
 
Metals, nonmetals, metalloids
Metals, nonmetals, metalloidsMetals, nonmetals, metalloids
Metals, nonmetals, metalloids
 
AppSphere 15 - Containers and Microservices Create New Performance Challenges
AppSphere 15 - Containers and Microservices Create New Performance ChallengesAppSphere 15 - Containers and Microservices Create New Performance Challenges
AppSphere 15 - Containers and Microservices Create New Performance Challenges
 
AppSphere 15 - Mining the World’s Largest Healthcare Data Warehouse while Ens...
AppSphere 15 - Mining the World’s Largest Healthcare Data Warehouse while Ens...AppSphere 15 - Mining the World’s Largest Healthcare Data Warehouse while Ens...
AppSphere 15 - Mining the World’s Largest Healthcare Data Warehouse while Ens...
 
AppSphere 15 - Application Analytics helping DevOps with Data Driven Decision...
AppSphere 15 - Application Analytics helping DevOps with Data Driven Decision...AppSphere 15 - Application Analytics helping DevOps with Data Driven Decision...
AppSphere 15 - Application Analytics helping DevOps with Data Driven Decision...
 
Unified Monitoring Webinar with Dustin Whittle
Unified Monitoring Webinar with Dustin WhittleUnified Monitoring Webinar with Dustin Whittle
Unified Monitoring Webinar with Dustin Whittle
 
Complete Visibility into Docker Containers with AppDynamics
Complete Visibility into Docker Containers with AppDynamicsComplete Visibility into Docker Containers with AppDynamics
Complete Visibility into Docker Containers with AppDynamics
 
AppSphere 15 - Manage your Microservices with Red Hat OpenShift and AppDynamics
AppSphere 15 - Manage your Microservices with Red Hat OpenShift and AppDynamicsAppSphere 15 - Manage your Microservices with Red Hat OpenShift and AppDynamics
AppSphere 15 - Manage your Microservices with Red Hat OpenShift and AppDynamics
 
AppSphere 15 - Monitoring Cloud & Asynchronous Applications
AppSphere 15 - Monitoring Cloud & Asynchronous ApplicationsAppSphere 15 - Monitoring Cloud & Asynchronous Applications
AppSphere 15 - Monitoring Cloud & Asynchronous Applications
 
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
Monitoring at Facebook - Ran Leibman, Facebook - DevOpsDays Tel Aviv 2015
 
Next-Gen Business Transaction Configuration, Instrumentation, and Java Perfor...
Next-Gen Business Transaction Configuration, Instrumentation, and Java Perfor...Next-Gen Business Transaction Configuration, Instrumentation, and Java Perfor...
Next-Gen Business Transaction Configuration, Instrumentation, and Java Perfor...
 
How Financial Engines Drives Business Outcomes Using AppDynamics Analytics - ...
How Financial Engines Drives Business Outcomes Using AppDynamics Analytics - ...How Financial Engines Drives Business Outcomes Using AppDynamics Analytics - ...
How Financial Engines Drives Business Outcomes Using AppDynamics Analytics - ...
 
Top 10 Application Problems
Top 10 Application ProblemsTop 10 Application Problems
Top 10 Application Problems
 
Synthetic Monitoring Deep Dive - AppSphere16
Synthetic Monitoring Deep Dive - AppSphere16Synthetic Monitoring Deep Dive - AppSphere16
Synthetic Monitoring Deep Dive - AppSphere16
 
How SAS Institute Drove Digital Transformation Through DevOps - AppSphere16
How SAS Institute Drove Digital Transformation Through DevOps - AppSphere16How SAS Institute Drove Digital Transformation Through DevOps - AppSphere16
How SAS Institute Drove Digital Transformation Through DevOps - AppSphere16
 
Prometheus (Monitorama 2016)
Prometheus (Monitorama 2016)Prometheus (Monitorama 2016)
Prometheus (Monitorama 2016)
 
Monitoring Challenges - Monitorama 2016 - Monitoringless
Monitoring Challenges - Monitorama 2016 - MonitoringlessMonitoring Challenges - Monitorama 2016 - Monitoringless
Monitoring Challenges - Monitorama 2016 - Monitoringless
 

Similar to AppSphere 2016 - Automate performance testing with AppDynamics using continuous integration platforms

AzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release ManagementAzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release ManagementSergii Kryshtop
 
From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]Dynatrace
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Applitools
 
Agentless System Crawler - InterConnect 2016
Agentless System Crawler - InterConnect 2016Agentless System Crawler - InterConnect 2016
Agentless System Crawler - InterConnect 2016Canturk Isci
 
Creating Complete Test Environments in the Cloud: Skytap & Parasoft Webinar
Creating Complete Test Environments in the Cloud: Skytap & Parasoft WebinarCreating Complete Test Environments in the Cloud: Skytap & Parasoft Webinar
Creating Complete Test Environments in the Cloud: Skytap & Parasoft WebinarSkytap Cloud
 
QA or the Highway 2022.pptx
QA or the Highway 2022.pptxQA or the Highway 2022.pptx
QA or the Highway 2022.pptxPerfecto Mobile
 
DevOps Powered by Splunk
DevOps Powered by SplunkDevOps Powered by Splunk
DevOps Powered by SplunkSplunk
 
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code DeploysOur DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code DeploysDynatrace
 
Scaling, Securing, Managing, and Publishing Power Platform Custom Connectors....
Scaling, Securing, Managing, and Publishing Power Platform Custom Connectors....Scaling, Securing, Managing, and Publishing Power Platform Custom Connectors....
Scaling, Securing, Managing, and Publishing Power Platform Custom Connectors....Eric Shupps
 
Improved Interaction with Mobile User Interaction: Tips and Tricks - AppSphere16
Improved Interaction with Mobile User Interaction: Tips and Tricks - AppSphere16Improved Interaction with Mobile User Interaction: Tips and Tricks - AppSphere16
Improved Interaction with Mobile User Interaction: Tips and Tricks - AppSphere16AppDynamics
 
Enterprise QA and Application Testing Services
Enterprise QA and Application Testing ServicesEnterprise QA and Application Testing Services
Enterprise QA and Application Testing ServicesHemang Rindani
 
Enterprise QA and Application Testing Services
Enterprise QA and Application Testing ServicesEnterprise QA and Application Testing Services
Enterprise QA and Application Testing ServicesCygnet Infotech
 
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Marcin Grzejszczak
 
Failure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryFailure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryOptimizely
 
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...XebiaLabs
 
How to Build a Metrics-optimized Software Delivery Pipeline
How to Build a Metrics-optimized Software Delivery PipelineHow to Build a Metrics-optimized Software Delivery Pipeline
How to Build a Metrics-optimized Software Delivery PipelineDynatrace
 
Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)Mike McGarr
 
Modernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-ArchitectModernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-ArchitectDevOps.com
 
Parallel Test Runs with Appium on Real Mobile Devices – Hands-on Webinar
Parallel Test Runs with Appium on Real Mobile Devices – Hands-on WebinarParallel Test Runs with Appium on Real Mobile Devices – Hands-on Webinar
Parallel Test Runs with Appium on Real Mobile Devices – Hands-on WebinarBitbar
 
Get Mapped: Using Value Stream Mapping to Create a DevOps Adoption Roadmap
Get Mapped: Using Value Stream Mapping to Create a DevOps Adoption RoadmapGet Mapped: Using Value Stream Mapping to Create a DevOps Adoption Roadmap
Get Mapped: Using Value Stream Mapping to Create a DevOps Adoption RoadmapIBM UrbanCode Products
 

Similar to AppSphere 2016 - Automate performance testing with AppDynamics using continuous integration platforms (20)

AzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release ManagementAzureDay Kyiv 2016 Release Management
AzureDay Kyiv 2016 Release Management
 
From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
 
Agentless System Crawler - InterConnect 2016
Agentless System Crawler - InterConnect 2016Agentless System Crawler - InterConnect 2016
Agentless System Crawler - InterConnect 2016
 
Creating Complete Test Environments in the Cloud: Skytap & Parasoft Webinar
Creating Complete Test Environments in the Cloud: Skytap & Parasoft WebinarCreating Complete Test Environments in the Cloud: Skytap & Parasoft Webinar
Creating Complete Test Environments in the Cloud: Skytap & Parasoft Webinar
 
QA or the Highway 2022.pptx
QA or the Highway 2022.pptxQA or the Highway 2022.pptx
QA or the Highway 2022.pptx
 
DevOps Powered by Splunk
DevOps Powered by SplunkDevOps Powered by Splunk
DevOps Powered by Splunk
 
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code DeploysOur DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
 
Scaling, Securing, Managing, and Publishing Power Platform Custom Connectors....
Scaling, Securing, Managing, and Publishing Power Platform Custom Connectors....Scaling, Securing, Managing, and Publishing Power Platform Custom Connectors....
Scaling, Securing, Managing, and Publishing Power Platform Custom Connectors....
 
Improved Interaction with Mobile User Interaction: Tips and Tricks - AppSphere16
Improved Interaction with Mobile User Interaction: Tips and Tricks - AppSphere16Improved Interaction with Mobile User Interaction: Tips and Tricks - AppSphere16
Improved Interaction with Mobile User Interaction: Tips and Tricks - AppSphere16
 
Enterprise QA and Application Testing Services
Enterprise QA and Application Testing ServicesEnterprise QA and Application Testing Services
Enterprise QA and Application Testing Services
 
Enterprise QA and Application Testing Services
Enterprise QA and Application Testing ServicesEnterprise QA and Application Testing Services
Enterprise QA and Application Testing Services
 
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
 
Failure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryFailure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature Delivery
 
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
XebiaLabs, CloudBees, Puppet Labs Webinar Slides - IT Automation for the Mode...
 
How to Build a Metrics-optimized Software Delivery Pipeline
How to Build a Metrics-optimized Software Delivery PipelineHow to Build a Metrics-optimized Software Delivery Pipeline
How to Build a Metrics-optimized Software Delivery Pipeline
 
Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)
 
Modernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-ArchitectModernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-Architect
 
Parallel Test Runs with Appium on Real Mobile Devices – Hands-on Webinar
Parallel Test Runs with Appium on Real Mobile Devices – Hands-on WebinarParallel Test Runs with Appium on Real Mobile Devices – Hands-on Webinar
Parallel Test Runs with Appium on Real Mobile Devices – Hands-on Webinar
 
Get Mapped: Using Value Stream Mapping to Create a DevOps Adoption Roadmap
Get Mapped: Using Value Stream Mapping to Create a DevOps Adoption RoadmapGet Mapped: Using Value Stream Mapping to Create a DevOps Adoption Roadmap
Get Mapped: Using Value Stream Mapping to Create a DevOps Adoption Roadmap
 

Recently uploaded

Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 

Recently uploaded (20)

Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 

AppSphere 2016 - Automate performance testing with AppDynamics using continuous integration platforms

  • 1. Automate performance testing with AppDynamics using continuous integration platforms Brad Stoner Senior Sales Engineer | AppDynamics
  • 2. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 2 Notice The information and materials included in this presentation (collectively, the “Materials”) are the proprietary information of AppDynamics, Inc. (“AppDynamics” or the “Company”). No part of the Materials may be reproduced, distributed, communicated or displayed in any form or by any means, or used to make any derivative work, without prior written permission from AppDynamics. The Materials may contain product roadmap information of AppDynamics. AppDynamics reserves the right to change any product roadmap information at any time, for any reason and without notice. This information is intended to outline AppDynamics' general product direction, it is not a guarantee of future product features, and it should not be relied on in making a purchasing decision. The development, release, and timing of any features or functionality described for AppDynamics' products remains at AppDynamics' sole discretion. AppDynamics reserves the right to change any planned features at any time before making them generally available as well as never making them generally available. All third-party trademarks, including names, logos and brands, referenced by AppDynamics in this presentation are property of their respective owners. All references to third-party trademarks are for identification purposes only and shall be considered nominative fair use under trademark law. © 2016 AppDynamics, Inc. All rights reserved.
  • 3. Key takeaways • How to get started with performance test automation • How to detect and resolve performance issues earlier in the development lifecycle with AppDynamics • How to maximize the quality and value of your performance test strategy AppDynamics Confidential and Proprietary 3
  • 4. My background • 7 years @ H&R Block Load and Performance Team – 5 person team – 100k + user concurrency – Tax peak 2nd week after go-live – 70 applications annually – Diverse technology stack – including 3rd party • 2 years @ Neotys – Senior Performance Engineer • Currently Sales Engineer @ AppDynamics AppDynamics Confidential and Proprietary 4
  • 5. What is performance testing? AppDynamics Confidential and Proprietary 5
  • 6. Why bother? AppDynamics Confidential and Proprietary 6 Google - Using page speed in site ranking Facebook - Launches 'lite' mobile app Amazon - 100ms delay -> $6.79M sales decrease Recent airline industry outages
  • 7. Legacy performance testing AppDynamics Confidential and Proprietary 7
  • 8. Increasing velocity …performance testing isn't historically fast AppDynamics Confidential and Proprietary 8
  • 9. Keeping up with Agile / DevOps AppDynamics Confidential and Proprietary 9
  • 11. Pull back the layers AppDynamics Confidential and Proprietary 11 Prod / Perf Pre-Prod / Staging Dev / QA
  • 12. Dev / QA • Short test cycle • Low resources / cost • Rapid feedback • Component testing AppDynamics Confidential and Proprietary 12
  • 13. Staging / Pre-Prod • Increased resources • Long test durations • Additional resources • Multiple test elements • Integrated systems • Build validation AppDynamics Confidential and Proprietary 13
  • 14. Prod / Perf • High complexity • Multiple integrated systems • Environmental variance • Resource intensive • High cost AppDynamics Confidential and Proprietary 14
  • 15. Resources and speed Resources Speed Prod / Perf Staging / Pre- Prod DEV/QA
  • 16. Mobile web/app example Dev testing - APIs Staging testing – Capacity w/ UI and API Build automation Baseline Pre-Prod / Staging - platform Prod / Perf testing (inside firewall) – stability / scalability Prod / Perf testing (outside firewall) – network / load balancing QA testing – API flows Optimize app chatter and network resources Mobile app released Mobile app built Mobile site releasedMobile site built APIs released/ BE functionality Front End Optimization
  • 17. What if legacy test principles were applied? Staging testing – Capacity w/ UI and API Baseline Pre-Prod / Staging - platform Prod / Perf testing (inside firewall) – stability / scalability Prod / Perf testing (outside firewall) – network / load balancing Front End Optimization Optimize app chatter and network resources Mobile app released Mobile app built Mobile site releasedMobile site built APIs released/ BE functionality
  • 18. Demo
  • 19. AppDynamics Key Components AppDynamics Usage Compare Releases Compare critical metrics for different tests (FE and BE) Database Monitoring Measure and visualize performance deltas between tests Server Monitoring Measure and visualize performance deltas between tests Jenkins Plugin Enables automated pass/fail of tests Troubleshoot Slow Response Times Quickly find root cause of performance issues and test failure Service Endpoints Track shared services performance over time (APIs) Custom Match Rules Name Business Transactions to match load test scripts Custom Dashboards Management and technical level tracking of application performance AppDynamics Confidential and Proprietary 19
  • 20. Questions and contact • Email: brad.stoner@appdynamics.com • Twitter: @sandbreak80 AppDynamics Confidential and Proprietary 20
  • 21. Please give us your feedback—Session T5808 • Complete the online survey you'll receive via email later today or via text at: Text this number: 878787 Text this word: APPSPHERE • Every time you submit a session survey, your name will be entered in a random drawing. We're giving away Amazon Echos to 5 lucky winners! • Thank you for your input APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 21 Win!
  • 23. Screenshots of live demo for offline viewing
  • 24. Jenkins for CI/CD AppDynamics Confidential and Proprietary 24
  • 25. Git and AppDynamics integration AppDynamics Confidential and Proprietary 25
  • 26. Jenkins job details AppDynamics Confidential and Proprietary 26
  • 27. AppDynamics Jenkins plugin AppDynamics Confidential and Proprietary 27
  • 28. Performance job execution AppDynamics Confidential and Proprietary 28
  • 29. NeoLoad performance report AppDynamics Confidential and Proprietary 29
  • 30. KonaKart test application AppDynamics Confidential and Proprietary 30
  • 31. Custom events in AppDynamics AppDynamics Confidential and Proprietary 31
  • 32. Identify slow queries AppDynamics Confidential and Proprietary 32
  • 33. Add missing index AppDynamics Confidential and Proprietary 33
  • 34. Compare release performance AppDynamics Confidential and Proprietary 34
  • 36. Technology stack AppDynamics Confidential and Proprietary 36 AppDynamics Confidential and Proprietary 36
  • 37. Demo resources • AppDynamics controller - https://www.appdynamics.com/free-trial/ • Docker Compose YML: https://github.com/sandbreak80/myapp • NeoLoad project for KonaKart (localhost): https://github.com/sandbreak80/konakart – Jenkins user will need access to modify these files • Docker Hub for mysql access via adminer: https://hub.docker.com/r/sandbreak80/adminer/ • Docker Hub for konakart: https://hub.docker.com/r/sandbreak80/docker_konakart/ AppDynamics Confidential and Proprietary 37
  • 38. Demo software install • Setup instance for docker – Install Docker: curl -sSL https://get.docker.com/ | sh – Avoid sudo for docker: sudo usermod -aG docker ubuntu – Install docker compose: • sudo apt-get -y install python-pip • sudo pip install docker-compose • Jenkins 2 install (if needed): – wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add - – sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' – sudo apt-get update – sudo apt-get install jenkins • NeoLoad install – wget https://d24mnm5myvorwj.cloudfront.net/documents/download/neoload/v5.2/neoload_5_2_2_linux_x64.sh – sudo chmod +x neoload_5_2_2_linux_x64.sh – mkdir /home/ubuntu/neoload – sudo sh neoload_5_2_2_linux_x64.sh -q -dir /home/ubuntu/neoload -Vsys.installationTypeId=Controller - Vsys.component.Common$Boolean=true -Vsys.component.Controller$Boolean=true AppDynamics Confidential and Proprietary 38
  • 39. Start demo environment • Clone docker-compose file – mkdir myapp – cd myapp – git clone https://github.com/sandbreak80/myapp.git • Pull, build, and start docker containers – sudo docker-compose start AppDynamics Confidential and Proprietary 39
  • 40. Configure AppDynamics • Connect to the KonaKart instance – sudo docker exec -i -t konakart /bin/bash • Install VIM: apt-get install vim • Edit the tomcat environment file – vi /usr/local/konakart/bin/setenv.sh – export CATALINA_OPTS="$CATALINA_OPTS - javaagent:/home/appdynamics/java_agent/javaagent.jar – -Dappdynamics.controller.hostName=your_controller_name_or_ip – -Dappdynamics.controller.port=8090 – -Dappdynamics.agent.applicationName=KonaKart – -Dappdynamics.agent.tierName=Kona_Server – -Dappdynamics.agent.nodeName=Node1 – -Dappdynamics.agent.accountName=customer1 – -Dappdynamics.agent.accountAccessKey=your_access_key" AppDynamics Confidential and Proprietary 40
  • 41. AppDynamics authentication • BASIC authentication is used in AppDynamics to create custom events and time ranges in the next two slides – As a reference, the AppDynamics REST API is documented here - https://docs.appdynamics.com/display/PRO42/Using+the+Controller+APIs. – The first call authenticates with the AppDynamics controller, and stores the authentication cookie into /tmp/session.dat on the Jenkins Server. Note that we’re using a basic authentication header instead of directly exposing our username and password. – There are a number of utilities you can leverage to base64 encode a string, like https://www.base64encode.org/. – The username / password format to encode is: <username>@<account name>:<password> and the @ symbol needs to be URI encoded. – By default, in single tenant controllers, the <account name> will always be customer1. So, to get our base64 authentication header we can encode - admin%40customer1:appdynamics – to get our authentication header – YWRtaW4lNDBjdXN0b21lcjE6YXBwZHluYW1pY3M= – ***Note*** – We need to URI encode our username and password string, which is why we use ‘%40’ instead of the ‘@’ character. AppDynamics Confidential and Proprietary 41
  • 42. Create custom event in AppDynamics • Load test start (linux shell step): – curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic your_base_64_token" -X GET http://your_appdynamics_controller:8090/controller/auth?action=login – PARAMS="events?eventtype=CUSTOM&customeventtype=LOAD_TEST&summary=LOAD_ TEST_START-${JOB_NAME}-${BUILD_ID}&severity=INFO&tier=Kona_Server” – curl -s -b /tmp/session.dat --data "${PARAMS}" http://your_appdynamics_controller:8090/controller/rest/applications/KonaKart/events • Load test stop (linux shell step): – curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic your_base_64_token " -X GET http://your_appdynamics_controller:8090/controller/auth?action=login – PARAMS="events?eventtype=CUSTOM&customeventtype=LOAD_TEST&summary=LOAD_ TEST_STOP-${JOB_NAME}-${BUILD_ID}&severity=INFO&tier=Kona_Server” – curl -s -b /tmp/session.dat --data "${PARAMS}" http://your_appdynamics_controller:8090/controller/rest/applications/KonaKart/events AppDynamics Confidential and Proprietary 42
  • 43. Create custom time range in AppDynamics • Linux shell step in Jenkins for creating a custom time range based on job start and end: #!/bin/sh END=$(date +%s) echo "$END" END_MS=$(($END * 1000)) echo "$END_MS" echo "$BUILD_TIMESTAMP" jobstart=$BUILD_TIMESTAMP START=$(date -d "${jobstart}" +%s) echo "$START" START_MS=$(($START * 1000)) echo "$START_MS" curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic YWRtaW4lNDBjdXN0b21lcjE6YXBwZHluYW1pY3M=" -X GET http://devopslabappsphere:8090/controller/auth?action=login PARAMS="{"name":"LOAD_TEST-${JOB_NAME}- ${BUILD_ID}","description":"","shared":true,"timeRange":{"type":"BETWEEN_TIMES","durationInMinutes":0,"startTime":${START_MS},"endTime":${END_MS}}}" curl --verbose -s -b /tmp/session.dat --header "Content-Type: application/json;charset=utf-8" --header "Authorization: Basic YnJhZCU0MGN1c3RvbWVyMTozQ29tMzgxMg==" --header "Accept- Encoding: gzip, deflate" --header "Accept: application/json, text/plain" --data "${PARAMS}" http://devopslabappsphere:8090/controller/restui/user/createCustomRange AppDynamics Confidential and Proprietary 43
  • 44. NeoLoad with GIT • GitHub project - https://github.com/sandbreak80/konakart – mkdir neoload_projects/konakart – cd neoload_projects/konakart – git clone https://github.com/sandbreak80/konakart.git • Pull project in Jenkins job (linux shell step): – cd /home/ubuntu/neoload_projects/konakart – git fetch –all – git reset --hard origin/master • Push test results (linux shell step): – cd /home/ubuntu/neoload_projects/konakart – git add *git commit -a -m "jenkins-${JOB_NAME}-${BUILD_NUMBER}” – git push https://username:your_github_token@github.com/username/konakart.git --all • Generate GitHub token: – https://help.github.com/articles/creating-an-access-token-for-command-line-use/ AppDynamics Confidential and Proprietary 44
  • 45. Jenkins plugins used • AppDynamics - https://wiki.jenkins- ci.org/display/JENKINS/AppDynamics+Plugin/ • NeoLoad - https://wiki.jenkins- ci.org/display/JENKINS/NeoLoad+Plugin • Timestamper - https://wiki.jenkins- ci.org/display/JENKINS/Timestamper – Manage Jenkins -> Configure -> – Date pattern for the BUILD_TIMESTAMP – EEE d MMM yyyy HH:mm:ss AppDynamics Confidential and Proprietary 45
  • 46. Adminer access • http://your_server_name:8081/ • host: konakart • user : monitor • password: appd123 • database: konakart AppDynamics Confidential and Proprietary 46

Editor's Notes

  1. In software engineering, performance testing is in general, a testing practice performed to determine how a system performs in terms of responsiveness and stability under a particular workload. It can also serve to investigate, measure, validate or verify other quality attributes of the system, such as scalability, reliability and resource usage.* Load Test Performance Test Stress Test Scalability Test Capacity Test Endurance Test Workload Test Device, FE, BE, end-to-end * https://en.wikipedia.org/wiki/Software_performance_testing
  2. Google site speed - https://webmasters.googleblog.com/2010/04/using-site-speed-in-web-search-ranking.html Facebook lite - https://www.cnet.com/news/facebook-lights-up-slow-old-android-phones-with-messenger-lite-app/ Gartner / Amazon - https://www.gartner.com/doc/2840618/performance-affects-user-experience-line
  3. Test after QA and right before launch / deployment to prod Test entire application in war room Complex workloads and use cases 3-5 weeks to complete 3-5 days to script single use case Difficult to pinpoint root cause Test high volume, long duration Peel back onion approach – GIANT ONION (more later) Test system capacity and scalability Code focused – only if needed Require code freeze Potentially expensive and time consuming changes
  4. Customers want everything faster Business demands quicker time to market Reduce risk and pain of ‘giant deployments’ Resolve defects faster at a lower cost Keep competitive … Performance testing isn't historically fast
  5. “It takes 2 weeks to script all our use cases and we get releases every 3 days” “The application is too difficult to test” “We are moving to agile on our legacy waterfall project. How we get started?” “QA will always be the bottleneck” “Issues are difficult to reproduce and our environment is unstable” “We don’t have visibility into our infrastructure” “If we find an issue, it still takes a week to fix” “We have no idea what changed in the application or why we are testing it again”
  6. Too many potential defects to have in large scale, high volume testing
  7. Performance testing is an iterative process
  8. Dev / QA Single server, low concurrency, short test durations. DATA SIZE is important in each and every environment WalMart labs – react w/ node.js - https://medium.com/walmartlabs/introducing-electrode-an-open-source-release-from-walmartlabs-14b836135319#.rtmzneqnk Front End Optimization (cache, minimize, round trips, content size, compression) Code issues (concurrency, locking, blocking, deadlock, single threaded) Queue build-up Code level performance (method / class) Slow responses (functional load) Issues with Memory allocation 3rd party code or frameworks Having debug enabled JS execution times Sync vs async calls Unlimited queries (return all rows) Caching (code / object) Excessive DB queries Logging Levels
  9. Staging / Pre-Prod Medium concurrency, soak testing (long duration), multiple servers. Some tests target web tier, some target database tier, try to stress each for optimal coverage Isolate tiers – find needed capacity for prod Memory leaks Thread exhaustion User limits Garbage collection (STW) Stored procedure inefficiencies Missing indexes / Schema issues DB connection pool issues Keep Alive issues Data Size Issues Issues with virus scan / security software 3rd party integrations Internal integrations CPU limitations Memory limitations Configuration issues / default install – Huge! Data growth issues Connection cleanup Using only clean data Swappiness
  10. Prod / Perf High volume (100+%) long duration, multiple locations, inside and outside firewall. Resource intensive ‘All hands on deck testing’ – costly 3 pages of defects – too many to find in a 1 5 week window as there are always blockers and recoding needed Load balancing (active / active, device, VIP) Firewall performance issues SAN performance issues Socket / connection issues Bandwidth limitations # Of servers required CDN issues Geographic limitations Backups causing issues Clustering issues / failover issues Issues with shared services (AD, SSO) Disk performance issues Data replication performance issues Performance impact of scheduled tasks Load balancing and persistence Firmware / BIOS issues Proxy limitations Proxy / edge caching / FE caching DDOS / IDS configuration issues ISP limitations Noisy neighbors - virtualization Bad server in farm Switch / link configuration PDU / power / overheating issues OS limitation / tuning Disk space issues SAN caching
  11. Resources: load generators, test durations, outage windows, bandwidth, infrastructure footprint, war room environment, use cases, integrations Speed: scripting, use case complexity, components included in tests, automation, isolation, code focus
  12. Back end API performance is tuned prior to the release of any mobile app or front-end! Dev has time to iterate once perf defects are found. What worked? App was developed with testability in mind Testing earlier in the development of the mobile app Back end testing was completed prior to release any front end! Isolation of back end and front end Fast feedback for bad builds (functional, errors, performance) Build validation with automation led to faster iterations Reusability of test cases between teams and environments Baseline infrastructure; then focus of code changes Create experiments to isolate defect targets Document what defects were caught in each environment; refine Using production-like data sets as early as possible! Build test cases as close to dev as possible
  13. KonaKart - http://www.konakart.com/ Adminer - https://www.adminer.org/ Jenkins - https://jenkins.io/ NeoLoad - http://www.neotys.com/neoload/overview AppDynamics - https://www.appdynamics.com/free-trial/ GitHub - https://github.com/ Docker Hub - https://hub.docker.com/
  14. Docker Compose YML: https://github.com/sandbreak80/myapp NeoLoad project for KonaKart (localhost): https://github.com/sandbreak80/konakart Jenkins user will need access to modify these files Docker Hub for mysql access via adminer: https://hub.docker.com/r/sandbreak80/adminer/ Docker Hub for konakart: https://hub.docker.com/r/sandbreak80/docker_konakart/
  15. Setup instance for docker Install Docker: curl -sSL https://get.docker.com/ | sh Avoid sudo for docker: sudo usermod -aG docker ubuntu Install docker compose: sudo apt-get -y install python-pip sudo pip install docker-compose Jenkins 2 install (if needed): wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt-get update sudo apt-get install jenkins NeoLoad install  wget https://d24mnm5myvorwj.cloudfront.net/documents/download/neoload/v5.2/neoload_5_2_2_linux_x64.sh sudo chmod +x neoload_5_2_2_linux_x64.sh mkdir /home/ubuntu/neoload sudo sh neoload_5_2_2_linux_x64.sh -q -dir /home/ubuntu/neoload -Vsys.installationTypeId=Controller -Vsys.component.Common\$Boolean=true -Vsys.component.Controller\$Boolean=true
  16. Clone docker-compose file mkdir myapp cd myapp git clone https://github.com/sandbreak80/myapp.git Pull, build, and start docker containers sudo docker-compose start
  17. Connect to the KonaKart instance sudo docker exec -i -t konakart /bin/bash Install VIM: apt-get install vim Edit the tomcat environment file vi /usr/local/konakart/bin/setenv.sh export CATALINA_OPTS="$CATALINA_OPTS -javaagent:/home/appdynamics/java_agent/javaagent.jar -Dappdynamics.controller.hostName=your_controller_name_or_ip -Dappdynamics.controller.port=8090 -Dappdynamics.agent.applicationName=KonaKart -Dappdynamics.agent.tierName=Kona_Server -Dappdynamics.agent.nodeName=Node1 -Dappdynamics.agent.accountName=customer1 -Dappdynamics.agent.accountAccessKey=your_access_key"
  18. BASIC authentication is used in AppDynamics to create custom events and time ranges in the next two slides As a reference, the AppDynamics REST API is documented here - https://docs.appdynamics.com/display/PRO42/Using+the+Controller+APIs. The first call authenticates with the AppDynamics controller, and stores the authentication cookie into /tmp/session.dat on the Jenkins Server. Note that we’re using a basic authentication header instead of directly exposing our username and password. There are a number of utilities you can leverage to base64 encode a string, like https://www.base64encode.org/. The username / password format to encode is: <username>@<account name>:<password> and the @ symbol needs to be URI encoded. By default, in single tenant controllers, the <account name> will always be customer1. So, to get our base64 authentication header we can encode - admin%40customer1:appdynamics – to get our authentication header YWRtaW4lNDBjdXN0b21lcjE6YXBwZHluYW1pY3M= ***Note*** We need to URI encode our username and password string, which is why we use ‘%40’ instead of the ‘@’ character.
  19. Load test start (linux shell step): curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic your_base_64_token" -X GET http://your_appdynamics_controller:8090/controller/auth?action=login PARAMS="events?eventtype=CUSTOM&customeventtype=LOAD_TEST&summary=LOAD_TEST_START-${JOB_NAME}-${BUILD_ID}&severity=INFO&tier=Kona_Server” curl -s -b /tmp/session.dat --data "${PARAMS}" http://your_appdynamics_controller:8090/controller/rest/applications/KonaKart/events Load test stop (linux shell step): curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic your_base_64_token " -X GET http://your_appdynamics_controller:8090/controller/auth?action=login PARAMS="events?eventtype=CUSTOM&customeventtype=LOAD_TEST&summary=LOAD_TEST_STOP-${JOB_NAME}-${BUILD_ID}&severity=INFO&tier=Kona_Server” curl -s -b /tmp/session.dat --data "${PARAMS}" http://your_appdynamics_controller:8090/controller/rest/applications/KonaKart/events
  20. Linux shell step in Jenkins for creating a custom time range based on job start and end: #!/bin/sh END=$(date +%s) echo "$END" END_MS=$(($END * 1000)) echo "$END_MS" echo "$BUILD_TIMESTAMP" jobstart=$BUILD_TIMESTAMP START=$(date -d "${jobstart}" +%s) echo "$START" START_MS=$(($START * 1000)) echo "$START_MS"   curl --verbose -s -c /tmp/session.dat --header "Authorization: Basic YWRtaW4lNDBjdXN0b21lcjE6YXBwZHluYW1pY3M=" -X GET http://devopslabappsphere:8090/controller/auth?action=login   PARAMS="{\"name\":\"LOAD_TEST-${JOB_NAME}-${BUILD_ID}\",\"description\":\"\",\"shared\":true,\"timeRange\":{\"type\":\"BETWEEN_TIMES\",\"durationInMinutes\":0,\"startTime\":${START_MS},\"endTime\":${END_MS}}}"   curl --verbose -s -b /tmp/session.dat --header "Content-Type: application/json;charset=utf-8" --header "Authorization: Basic YnJhZCU0MGN1c3RvbWVyMTozQ29tMzgxMg==" --header "Accept-Encoding: gzip, deflate" --header "Accept: application/json, text/plain" --data "${PARAMS}" http://devopslabappsphere:8090/controller/restui/user/createCustomRange
  21. GitHub project - https://github.com/sandbreak80/konakart mkdir neoload_projects/konakart cd neoload_projects/konakart git clone https://github.com/sandbreak80/konakart.git Pull project in Jenkins job (linux shell step): cd /home/ubuntu/neoload_projects/konakart git fetch –all git reset --hard origin/master Push test results (linux shell step): cd /home/ubuntu/neoload_projects/konakart git add *git commit -a -m "jenkins-${JOB_NAME}-${BUILD_NUMBER}” git push https://username:your_github_token@github.com/username/konakart.git --all Generate GitHub token: https://help.github.com/articles/creating-an-access-token-for-command-line-use/
  22. AppDynamics - https://wiki.jenkins-ci.org/display/JENKINS/AppDynamics+Plugin/ NeoLoad - https://wiki.jenkins-ci.org/display/JENKINS/NeoLoad+Plugin Timestamper - https://wiki.jenkins-ci.org/display/JENKINS/Timestamper Manage Jenkins -> Configure -> Date pattern for the BUILD_TIMESTAMP EEE d MMM yyyy HH:mm:ss
  23. http://your_server_name:8081/ host: konakart user : monitor password: appd123 database: konakart
  24. http://your_server_name:8780/konakart/