SlideShare a Scribd company logo
1 of 52
Download to read offline
Divide and stress: the journey
to component load test
Juan Pedro Escalona
jescalona@theworkshop.com
@otioti
Agenda
• Introduction
• What is Component Based Testing?
• Requirements
• CBT versions:
• 1.0: Manual builds, fixed scenarios
• 2.0: Builds done as part of the pipeline,
multiple scenarios
• 3.0: Pool of resources to host multiple
scenarios
Question
• What type of testing are we focusing on
today?
Introduction
Development Integration Performance Production
Introduction
• Over 700 different products
• More than 1000 commits per day
• Every commit, perform a release and
trigger a deploy
Introduction
• Load test environment is a 1 to 1 copy of
production
• Load test environment exercises every
component
• This is really expensive
Introduction
“I’m going to build a load test datacenter,
and I will make stakeholders pay for it”
Introduction
• The load test
environment is really
expensive if it is
unavailable due to a
wrong deploy
• Really difficult to
determine which
component would be
impacting to the overall
performance of the
environment
•Teams…
Introduction
• The load test
environment is really
expensive if it is
unavailable due to a
wrong deploy
• Really difficult to
determine which
component would be
impacting to the overall
performance of the
environment
•Teams…
Introduction
• Load Test process
– Automated execution and report.
– Results are evaluated also against exit criteria
automatically
• FAIL: results out of exit criteria + tolerance margin
• PASS: results
– within exit criteria or
– out of exit criteria but within tolerance margin
Tolerance
FAIL PASS PASS
Exit Criteria
Components Performance Issues
• Scenario 1: Cascade Failure
Components Performance Issues
• Scenario 2: Collateral Failure
What is Component Load Testing?
• It IS a test against an isolated component
• It IS NOT a functional test
• It IS NOT representative of production
load.
Requirements
• Exit criteria: define the limit for the RT/TPS of
your transactions
Requirements
• Why do you think it is necessary to adapt
the exit criteria on each new load test
execution?
Requirements
• Automated exit criteria population
– Discover new transactions
• Automated exit criteria update
– Adjust exit criteria even if it’s a PASS.
• Component testing is a development stage
– Scripts and configuration must live in the code
Requirements
• Resources
– Hardware resources must be released if not in
use!
• Fast feedback
– Results ready in <5minutes.
• CD Ready
– Component testing is designed as a stage of a
CD pipeline
Requirements
• Repeatable test
– Only the component code changes in
between iterations
• Test environment
– Scalable, allowing to run several tests in
paralell
Requirements
How can we populate the very first version
of exit criteria?
CBT Refinement
• Based on our own experience of
performance testing
• Continuously improving in every new
iteration
• 1.0: First version, fixed scenarios, manual
builds
• 2.0: Multiple scenarios not in parallel, fixed
infrastructure
• 3.0: Multiple scenarios in parallel, pool of
resources (reusable by everybody)
CBT 1.0
• Process:
• Manual build of Docker images using the version under test
• Docker Compose creates the scenario and their dependencies.
It starts and initializes the scenario.
• Mocks: some scenarios would require mocks
• Infrastructure:
• Docker image generation (Bamboo)
• Docker image storage (Nexus)
• Docker host to run the scenario
• ULTL runs and reports the load test execution
CBT 1.0 Flow Management
CBT 1.0 Example
CBT 1.0 Limitations
• The software under test has fixed versions
• Maintenance of versions is manual
• The scenario runs every time in the same
• Dedicated docker host, usually pre-assigned by
teams.
• As a consequence, the load generators need:
• DNS records: must resolve assigned Docker host
• access to exposed services (HTTP, HTTPS, JMS
queue, smtp, etc)
CBT 1.0 Facts
• Requires a lot of manual interventions:
managing DNS records, access, software under
test versions, defining scenarios, etc.
• Waste of infrastructure resources?
CBT 1.0 Facts
• Requires a lot of manual interventions:
managing DNS records, access, software under
test versions, defining scenarios, etc.
• Waste of infrastructure resources: Machines that
run Docker scenarios are not in use if there is
not load test ongoing.
CBT 2.0
• Process:
• Introduction of fabric8-maven-plugin
• Every software release generates a new Docker
image
• Scenarios are defined using Kubernetes. Docker
compose is still accepted.
• Multi-scenario support. fabric8-maven-plugin lets us
define multiple scenarios in product source.
• Infrastructure:
• Same infrastructure requirements as CBT 1.0
CBT 2.0 Flow Management
• Very similar to 1.0
• Scenario is deployed once we have a new
release, as simply as run a maven
command:
• mvn fabric8:deploy
• Each scenario defines its own
configuration: services, load balancers,
ports, etc.
CBT 2.0 Structure Example
CBT 1.0 Back to the past
CBT 2.0 Example
CBT 2.0 Example
CBT 2.0 Limitations
• We still inherited limitations from CBT 1.0:
• Fixed Docker host to run the scenarios
• Services are strictly attached to the Docker
host which runs the scenario: DNS, ACLs, etc
• Need to grant access and expose services
under test
CBT 2.0 Facts
• Better usage of resources: We are able to run
many scenarios using same resources
• Better products versions management:
• For the product under test, the version is already
known
• For every dependency in each scenario, we lookup
for the versions deployed already in production.
CBT 3.0
• Infrastructure
• Scenarios represented as pair of Docker hosts,
known as scenario units:
• A host runs the scenario
• A host generates the load
• Cluster of scenario units
• Anyone can use them if they are not in use
• A new service is in charge of tracking and managing
scenario requests: CBT Handler
CBT 3.0
• Why is the application performance not
impacted by the load generation resources
consumption?
CBT 3.0 Example
CBT 1.0/2.0 Flow Management
CBT 3.0 Flow Management
CBT 3.0 Flow Management
CBT 3.0 Actors
• Bamboo
– Generates product releases
– Creates and publishes Docker images a as
part of the pipeline.
– Orchestrates with other components to
provision/destroy scenarios and request the
load test.
CBT 3.0 Actors
• CBT Handler
– Bamboo requests a new scenario for one specific
product to CBT Handler
– Once the scenario is ready, PDEV Handler
performs a callback on Bamboo.
– Once the load test is completed, PDEV Handler
will receive a request from Bamboo to release the
resources of exercised scenario, freeing our pool
resources for other possible scenarios waiting in
the queue.
CBT 3.0 Actors
CBT 3.0 Actors
CBT 3.0 Actors
CBT 3.0 Actors
• ULTL
– Automates the load test execution.
– Manages multiple load tests of different
scenarios in parallel.
– Callback to Bamboo, posting the results of the
CBT executions.
CBT 3.0 Actors
CBT 3.0 Facts
• Efficient use of pool resources
• Reduce complexity for infrastructure management:
• Configuration items (DNS, resources) are automatically
generated due to Kubernetes or Docker Compose
• Reduce complexity of configuration of load test scripts:
• Do not need to manage overrides for URL per environment.
• Open for any load performance testing software
– If it can be put inside Docker, you can use it.
Open Source
Coming soon!
Keep an eye on
github.com/TheWorkshopLabs
We’re hiring
https://www.theworkshop.com/join-us/
Divide and stress: the journey to component load test
Q & A

More Related Content

What's hot

Docker in Continuous Integration
Docker in Continuous IntegrationDocker in Continuous Integration
Docker in Continuous IntegrationAlexander Akbashev
 
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...Edureka!
 
Performance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMsPerformance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMsMaarten Smeets
 
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins PipelinesAn Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins PipelinesSteffen Gebert
 
Rails Applications with Docker
Rails Applications with DockerRails Applications with Docker
Rails Applications with DockerLaura Frank Tacho
 
Hudson
HudsonHudson
Hudson8x8
 
Automated testing on steroids – Trick for managing test data using Docker sna...
Automated testing on steroids – Trick for managing test data using Docker sna...Automated testing on steroids – Trick for managing test data using Docker sna...
Automated testing on steroids – Trick for managing test data using Docker sna...Lucas Jellema
 
Hudson: Your robotic butler
Hudson: Your robotic butlerHudson: Your robotic butler
Hudson: Your robotic butlerSteven Merrill
 
Pipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingPipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingSwapnil Jadhav
 
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonEclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonVladLica
 
Jenkins Declarative Pipelines 101
Jenkins Declarative Pipelines 101Jenkins Declarative Pipelines 101
Jenkins Declarative Pipelines 101Malcolm Groves
 
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...Synchronizing parallel delivery flows in jenkins using groovy, build flow and...
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...Andrey Devyatkin
 
Jenkins Pipeline 101 and TCI - presentation and workshop
Jenkins Pipeline 101 and TCI - presentation and workshopJenkins Pipeline 101 and TCI - presentation and workshop
Jenkins Pipeline 101 and TCI - presentation and workshopYoram Michaeli
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Controlindiver
 
Java build tools
Java build toolsJava build tools
Java build toolsSujit Kumar
 
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 PipelineDelivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 PipelineSlawa Giterman
 
How To Add Any Feature To Your Selenium Grid
How To Add Any Feature To Your Selenium GridHow To Add Any Feature To Your Selenium Grid
How To Add Any Feature To Your Selenium GridSauce Labs
 
Monufacture: Effortless Test Data for MongoDB
Monufacture: Effortless Test Data for MongoDBMonufacture: Effortless Test Data for MongoDB
Monufacture: Effortless Test Data for MongoDBTom Leach
 

What's hot (20)

Docker in Continuous Integration
Docker in Continuous IntegrationDocker in Continuous Integration
Docker in Continuous Integration
 
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
Jenkins Pipeline Tutorial | Continuous Delivery Pipeline Using Jenkins | DevO...
 
Performance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMsPerformance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMs
 
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins PipelinesAn Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
 
Rails Applications with Docker
Rails Applications with DockerRails Applications with Docker
Rails Applications with Docker
 
Hudson
HudsonHudson
Hudson
 
Automated testing on steroids – Trick for managing test data using Docker sna...
Automated testing on steroids – Trick for managing test data using Docker sna...Automated testing on steroids – Trick for managing test data using Docker sna...
Automated testing on steroids – Trick for managing test data using Docker sna...
 
Hudson: Your robotic butler
Hudson: Your robotic butlerHudson: Your robotic butler
Hudson: Your robotic butler
 
Pipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of TestingPipeline as code using Jenkins -Ministry of Testing
Pipeline as code using Jenkins -Ministry of Testing
 
Graphql usage
Graphql usageGraphql usage
Graphql usage
 
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonEclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
 
Jenkins Declarative Pipelines 101
Jenkins Declarative Pipelines 101Jenkins Declarative Pipelines 101
Jenkins Declarative Pipelines 101
 
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...Synchronizing parallel delivery flows in jenkins using groovy, build flow and...
Synchronizing parallel delivery flows in jenkins using groovy, build flow and...
 
Jenkins Pipeline 101 and TCI - presentation and workshop
Jenkins Pipeline 101 and TCI - presentation and workshopJenkins Pipeline 101 and TCI - presentation and workshop
Jenkins Pipeline 101 and TCI - presentation and workshop
 
Make It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version ControlMake It Cooler: Using Decentralized Version Control
Make It Cooler: Using Decentralized Version Control
 
Java build tools
Java build toolsJava build tools
Java build tools
 
Jmeter
JmeterJmeter
Jmeter
 
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 PipelineDelivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
 
How To Add Any Feature To Your Selenium Grid
How To Add Any Feature To Your Selenium GridHow To Add Any Feature To Your Selenium Grid
How To Add Any Feature To Your Selenium Grid
 
Monufacture: Effortless Test Data for MongoDB
Monufacture: Effortless Test Data for MongoDBMonufacture: Effortless Test Data for MongoDB
Monufacture: Effortless Test Data for MongoDB
 

Similar to Divide and stress: the journey to component load test

Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOpsEklove Mohan
 
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...Lucas Sacramento
 
To Build My Own Cloud with Blackjack…
To Build My Own Cloud with Blackjack…To Build My Own Cloud with Blackjack…
To Build My Own Cloud with Blackjack…Sergey Dzyuban
 
Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019Alan Pearson Mathews
 
AWS re:Invent 2016: Development Workflow with Docker and Amazon ECS (CON302)
AWS re:Invent 2016: Development Workflow with Docker and Amazon ECS (CON302)AWS re:Invent 2016: Development Workflow with Docker and Amazon ECS (CON302)
AWS re:Invent 2016: Development Workflow with Docker and Amazon ECS (CON302)Amazon Web Services
 
Efficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura FrankEfficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura FrankDocker, Inc.
 
Performance testing with 100,000 concurrent users in AWS
Performance testing with 100,000 concurrent users in AWSPerformance testing with 100,000 concurrent users in AWS
Performance testing with 100,000 concurrent users in AWSMatthias Matook
 
Dev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDavide Benvegnù
 
Tools. Techniques. Trouble?
Tools. Techniques. Trouble?Tools. Techniques. Trouble?
Tools. Techniques. Trouble?Testplant
 
Kubernetes deep dive - - Huawei 2015-10
Kubernetes deep dive - - Huawei 2015-10Kubernetes deep dive - - Huawei 2015-10
Kubernetes deep dive - - Huawei 2015-10Vishnu Kannan
 
Architecting for the cloud storage build test
Architecting for the cloud storage build testArchitecting for the cloud storage build test
Architecting for the cloud storage build testLen Bass
 
Docker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud ApplicationsDocker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud ApplicationsRightScale
 
How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)Salvatore Orlando
 
How to write a Neutron plugin (stadium edition)
How to write a Neutron plugin (stadium edition)How to write a Neutron plugin (stadium edition)
How to write a Neutron plugin (stadium edition)salv_orlando
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using JenkinsRogue Wave Software
 
Microservices: How loose is loosely coupled?
Microservices: How loose is loosely coupled?Microservices: How loose is loosely coupled?
Microservices: How loose is loosely coupled?John Rofrano
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneciberkleid
 

Similar to Divide and stress: the journey to component load test (20)

Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
DevOps in Silos
DevOps in SilosDevOps in Silos
DevOps in Silos
 
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
 
To Build My Own Cloud with Blackjack…
To Build My Own Cloud with Blackjack…To Build My Own Cloud with Blackjack…
To Build My Own Cloud with Blackjack…
 
Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019
 
AWS re:Invent 2016: Development Workflow with Docker and Amazon ECS (CON302)
AWS re:Invent 2016: Development Workflow with Docker and Amazon ECS (CON302)AWS re:Invent 2016: Development Workflow with Docker and Amazon ECS (CON302)
AWS re:Invent 2016: Development Workflow with Docker and Amazon ECS (CON302)
 
Efficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura FrankEfficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura Frank
 
Performance testing with 100,000 concurrent users in AWS
Performance testing with 100,000 concurrent users in AWSPerformance testing with 100,000 concurrent users in AWS
Performance testing with 100,000 concurrent users in AWS
 
Kubernetes @ meetic
Kubernetes @ meeticKubernetes @ meetic
Kubernetes @ meetic
 
Dev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps world
 
Tools. Techniques. Trouble?
Tools. Techniques. Trouble?Tools. Techniques. Trouble?
Tools. Techniques. Trouble?
 
Kubernetes deep dive - - Huawei 2015-10
Kubernetes deep dive - - Huawei 2015-10Kubernetes deep dive - - Huawei 2015-10
Kubernetes deep dive - - Huawei 2015-10
 
Architecting for the cloud storage build test
Architecting for the cloud storage build testArchitecting for the cloud storage build test
Architecting for the cloud storage build test
 
Docker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud ApplicationsDocker in Production: How RightScale Delivers Cloud Applications
Docker in Production: How RightScale Delivers Cloud Applications
 
How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)
 
How to write a Neutron plugin (stadium edition)
How to write a Neutron plugin (stadium edition)How to write a Neutron plugin (stadium edition)
How to write a Neutron plugin (stadium edition)
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
 
Deploying at will - SEI
 Deploying at will - SEI Deploying at will - SEI
Deploying at will - SEI
 
Microservices: How loose is loosely coupled?
Microservices: How loose is loosely coupled?Microservices: How loose is loosely coupled?
Microservices: How loose is loosely coupled?
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOne
 

Recently uploaded

HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVRajaP95
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoão Esperancinha
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINESIVASHANKAR N
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxupamatechverse
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxAsutosh Ranjan
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxpurnimasatapathy1234
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSRajkumarAkumalla
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSSIVASHANKAR N
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024hassan khalil
 
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...RajaP95
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxupamatechverse
 
Current Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCLCurrent Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCLDeelipZope
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)Suman Mia
 

Recently uploaded (20)

HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptx
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
 
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024
 
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptx
 
Current Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCLCurrent Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCL
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
 

Divide and stress: the journey to component load test

  • 1. Divide and stress: the journey to component load test Juan Pedro Escalona jescalona@theworkshop.com @otioti
  • 2. Agenda • Introduction • What is Component Based Testing? • Requirements • CBT versions: • 1.0: Manual builds, fixed scenarios • 2.0: Builds done as part of the pipeline, multiple scenarios • 3.0: Pool of resources to host multiple scenarios
  • 3. Question • What type of testing are we focusing on today?
  • 5. Introduction • Over 700 different products • More than 1000 commits per day • Every commit, perform a release and trigger a deploy
  • 6. Introduction • Load test environment is a 1 to 1 copy of production • Load test environment exercises every component • This is really expensive
  • 7. Introduction “I’m going to build a load test datacenter, and I will make stakeholders pay for it”
  • 8. Introduction • The load test environment is really expensive if it is unavailable due to a wrong deploy • Really difficult to determine which component would be impacting to the overall performance of the environment •Teams…
  • 9. Introduction • The load test environment is really expensive if it is unavailable due to a wrong deploy • Really difficult to determine which component would be impacting to the overall performance of the environment •Teams…
  • 10. Introduction • Load Test process – Automated execution and report. – Results are evaluated also against exit criteria automatically • FAIL: results out of exit criteria + tolerance margin • PASS: results – within exit criteria or – out of exit criteria but within tolerance margin Tolerance FAIL PASS PASS Exit Criteria
  • 11. Components Performance Issues • Scenario 1: Cascade Failure
  • 12. Components Performance Issues • Scenario 2: Collateral Failure
  • 13. What is Component Load Testing? • It IS a test against an isolated component • It IS NOT a functional test • It IS NOT representative of production load.
  • 14. Requirements • Exit criteria: define the limit for the RT/TPS of your transactions
  • 15. Requirements • Why do you think it is necessary to adapt the exit criteria on each new load test execution?
  • 16. Requirements • Automated exit criteria population – Discover new transactions • Automated exit criteria update – Adjust exit criteria even if it’s a PASS. • Component testing is a development stage – Scripts and configuration must live in the code
  • 17. Requirements • Resources – Hardware resources must be released if not in use! • Fast feedback – Results ready in <5minutes. • CD Ready – Component testing is designed as a stage of a CD pipeline
  • 18. Requirements • Repeatable test – Only the component code changes in between iterations • Test environment – Scalable, allowing to run several tests in paralell
  • 19. Requirements How can we populate the very first version of exit criteria?
  • 20. CBT Refinement • Based on our own experience of performance testing • Continuously improving in every new iteration • 1.0: First version, fixed scenarios, manual builds • 2.0: Multiple scenarios not in parallel, fixed infrastructure • 3.0: Multiple scenarios in parallel, pool of resources (reusable by everybody)
  • 21. CBT 1.0 • Process: • Manual build of Docker images using the version under test • Docker Compose creates the scenario and their dependencies. It starts and initializes the scenario. • Mocks: some scenarios would require mocks • Infrastructure: • Docker image generation (Bamboo) • Docker image storage (Nexus) • Docker host to run the scenario • ULTL runs and reports the load test execution
  • 22. CBT 1.0 Flow Management
  • 24. CBT 1.0 Limitations • The software under test has fixed versions • Maintenance of versions is manual • The scenario runs every time in the same • Dedicated docker host, usually pre-assigned by teams. • As a consequence, the load generators need: • DNS records: must resolve assigned Docker host • access to exposed services (HTTP, HTTPS, JMS queue, smtp, etc)
  • 25. CBT 1.0 Facts • Requires a lot of manual interventions: managing DNS records, access, software under test versions, defining scenarios, etc. • Waste of infrastructure resources?
  • 26. CBT 1.0 Facts • Requires a lot of manual interventions: managing DNS records, access, software under test versions, defining scenarios, etc. • Waste of infrastructure resources: Machines that run Docker scenarios are not in use if there is not load test ongoing.
  • 27. CBT 2.0 • Process: • Introduction of fabric8-maven-plugin • Every software release generates a new Docker image • Scenarios are defined using Kubernetes. Docker compose is still accepted. • Multi-scenario support. fabric8-maven-plugin lets us define multiple scenarios in product source. • Infrastructure: • Same infrastructure requirements as CBT 1.0
  • 28. CBT 2.0 Flow Management • Very similar to 1.0 • Scenario is deployed once we have a new release, as simply as run a maven command: • mvn fabric8:deploy • Each scenario defines its own configuration: services, load balancers, ports, etc.
  • 29. CBT 2.0 Structure Example
  • 30. CBT 1.0 Back to the past
  • 33. CBT 2.0 Limitations • We still inherited limitations from CBT 1.0: • Fixed Docker host to run the scenarios • Services are strictly attached to the Docker host which runs the scenario: DNS, ACLs, etc • Need to grant access and expose services under test
  • 34. CBT 2.0 Facts • Better usage of resources: We are able to run many scenarios using same resources • Better products versions management: • For the product under test, the version is already known • For every dependency in each scenario, we lookup for the versions deployed already in production.
  • 35. CBT 3.0 • Infrastructure • Scenarios represented as pair of Docker hosts, known as scenario units: • A host runs the scenario • A host generates the load • Cluster of scenario units • Anyone can use them if they are not in use • A new service is in charge of tracking and managing scenario requests: CBT Handler
  • 36.
  • 37. CBT 3.0 • Why is the application performance not impacted by the load generation resources consumption?
  • 39. CBT 1.0/2.0 Flow Management
  • 40. CBT 3.0 Flow Management
  • 41. CBT 3.0 Flow Management
  • 42. CBT 3.0 Actors • Bamboo – Generates product releases – Creates and publishes Docker images a as part of the pipeline. – Orchestrates with other components to provision/destroy scenarios and request the load test.
  • 43. CBT 3.0 Actors • CBT Handler – Bamboo requests a new scenario for one specific product to CBT Handler – Once the scenario is ready, PDEV Handler performs a callback on Bamboo. – Once the load test is completed, PDEV Handler will receive a request from Bamboo to release the resources of exercised scenario, freeing our pool resources for other possible scenarios waiting in the queue.
  • 47. CBT 3.0 Actors • ULTL – Automates the load test execution. – Manages multiple load tests of different scenarios in parallel. – Callback to Bamboo, posting the results of the CBT executions.
  • 49. CBT 3.0 Facts • Efficient use of pool resources • Reduce complexity for infrastructure management: • Configuration items (DNS, resources) are automatically generated due to Kubernetes or Docker Compose • Reduce complexity of configuration of load test scripts: • Do not need to manage overrides for URL per environment. • Open for any load performance testing software – If it can be put inside Docker, you can use it.
  • 50. Open Source Coming soon! Keep an eye on github.com/TheWorkshopLabs
  • 52. Divide and stress: the journey to component load test Q & A