Introduction to Gatling performance testing tool and how we used it for testing Zonky's REST API. Example of running distributed performance tests in AWS Fargate with real-time monitoring with Logstash/ElasticSearch/Kibana stack.
Ob1k is a new open source RPC container. it belongs to a new breed of frameworks that tries to improve on the classic J2EE model by embedding the server and reducing redundant bloatware. Ob1k supports two modes of operations: sync and async, the async mode aims for maximum performance by adopting reactive principals like using non-blocking code and functional composition using futures. Ob1k also aims to be ops/devops friendly by being self contained and easily configured.
Reactive by example - at Reversim Summit 2015Eran Harel
Explaining the reactive manifesto by a real world case study.
This is a cool story about the evolution of our monitoring infrastructure. From the naive approach to a super resilient system.
How do we manage to handle 4M metrics / minute, and over 1K concurrent connections?
What strategies did we try to apply and where did it fail?
What are the techniques and technologies we use in order to achieve this?
How do we handle errors, and failures at this scale?
What can we still improve?
In 30 minutes I would like to show:
1. Why is it worth to spend some time and learn Gatling - a tool for integration/performance test of your web application?
2. Under what circumstances it is necessary to have Gatling in your toolbox?
3. What are Gatling cons and what kind of problems can you expect?
For sure there is no silver bullet in testing tools area, but you will definitely love Gatling DSL.
Developed for the Denver Art Museum by Ashley Blewer, this slide-deck covers some of the basics of diagnosing issues with Archivematica. Ashley covers everything from the software components involved with Archivematica, to monitoring logs, system monitoring, and upgrading your system. The presentation concludes with some useful links for tech-savvy preservationists, and Archivematica-unfamiliar system's administrators!
Performance Test Automation With GatlingKnoldus Inc.
Gatling is a lightweight dsl written in scala by which you can treat your performance test as a production code means you can easily write a readable code to test the performance of an application it s a framework based on Scala, Akka and Netty.
Ob1k is a new open source RPC container. it belongs to a new breed of frameworks that tries to improve on the classic J2EE model by embedding the server and reducing redundant bloatware. Ob1k supports two modes of operations: sync and async, the async mode aims for maximum performance by adopting reactive principals like using non-blocking code and functional composition using futures. Ob1k also aims to be ops/devops friendly by being self contained and easily configured.
Reactive by example - at Reversim Summit 2015Eran Harel
Explaining the reactive manifesto by a real world case study.
This is a cool story about the evolution of our monitoring infrastructure. From the naive approach to a super resilient system.
How do we manage to handle 4M metrics / minute, and over 1K concurrent connections?
What strategies did we try to apply and where did it fail?
What are the techniques and technologies we use in order to achieve this?
How do we handle errors, and failures at this scale?
What can we still improve?
In 30 minutes I would like to show:
1. Why is it worth to spend some time and learn Gatling - a tool for integration/performance test of your web application?
2. Under what circumstances it is necessary to have Gatling in your toolbox?
3. What are Gatling cons and what kind of problems can you expect?
For sure there is no silver bullet in testing tools area, but you will definitely love Gatling DSL.
Developed for the Denver Art Museum by Ashley Blewer, this slide-deck covers some of the basics of diagnosing issues with Archivematica. Ashley covers everything from the software components involved with Archivematica, to monitoring logs, system monitoring, and upgrading your system. The presentation concludes with some useful links for tech-savvy preservationists, and Archivematica-unfamiliar system's administrators!
Performance Test Automation With GatlingKnoldus Inc.
Gatling is a lightweight dsl written in scala by which you can treat your performance test as a production code means you can easily write a readable code to test the performance of an application it s a framework based on Scala, Akka and Netty.
Presentation given by Tim Walsh at Archivematica Camp Baltimore 2018 about his and the Canadian Center for Architecture's experience with the Archivematica Automation Tools.
Developed for DANS-KNAW. This presentation covers some of the fundamentals of the automation-tools. Helper scripts for automation of transfers in Archivematica. Designed to complement the API slide-deck, the two resources can probably be consumed in any order. Knowing the API will help you understand the automation-tools, but knowing the automation-tools may help you understand what you want to create using the API.
API slide-deck here: https://www.slideshare.net/Archivematica/introduction-to-the-archivematica-api-september-2018-122548752
Analyzing Java Applications Using Thermostat (Omair Majid)Red Hat Developers
Ever wondered how your Java application is actually working? How it's making use of scarce resources on your machine? Ever tried to look under the hood of the Java Virtual Machine (JVM) and felt lost with various tools that don't provide an overall picture, only local details? Thermostat is an open source serviceability tool to help Java developers understand what's happening inside the JVM when their programs are running. Thermostat collects and combines information from various sources—including the Hotspot JVM—to present a complete picture of how the application is behaving. In this session, you'll get a chance to see Thermostat in action as it's used to examine various Java applications, identify what's wrong and fix those problems—often without even modifying the application code. You'll also learn how to add more features to Thermostat through plug-ins. If you're a developer, sysadmin, or QA, and if there's Java in your technology stack, you'll want to learn how Thermostat can make your life easier.
Developed for the University of Denver this presentation covers some of the most fundamental, yet, most important functions that are available in the Archivematica API. From discovering transfer locations to initiating and approving a transfer, a large part of what is required to automate your transfer workflows can be discovered herein.
There is now a complementary automation-tools slide-deck. The two resources can probably be consumed in any order. Knowing the API will help you understand the automation-tools, but knowing the automation-tools may help you understand what you want to create using the API.
Automation-tools slide-deck here: https://www.slideshare.net/Archivematica/automation-tools-making-things-go-march-2019
Introduction to Java Variables and Classes. Primitive and Non Primitive Variables. Boolean, char, Short, Int, Long, Float, and double data type. Definition of Class and Objects with Examples. Various components of Class and Constructors
This is a talk I did for JavaOne 2009. The focus of the talk was memory management and system monitoring with freely available tools that are in the jdk or open source.
Kernel Recipes 2014 - Performance Does MatterAnne Nicolas
Deploying clouds is in everybody’s mind but how to make an efficient deployment ?
After setting up the hardware, it’s mandatory to make a deep inspection of server’s performance.
In a farm of supposed identical servers, many miss-{installation|configuration} could seriously degrade performance. If you want to discovery such counter-performance before users complains of their VMs, you have to be detect them before installing any software. Another performance metric to know is “how many VMs could I load on top of my servers ?”. By using the same methodology it is possible the compare how a set of VMs performs regarding the bare metal capabilities.
The challenge is here: How do detect automatically servers that under perform ? How to insure that a new server entering a farm will not degrade it ? How to measure the overhead of all the virtualization layers from the VM point of view ?
Erwan Velu – Performance Engineer @eNovance
WildFly core is fully modular application server, which is used as base to build WildFly EE container and much more. Functionalities such as EE are implemented as sets of extensions also known as subsystems.
Extensions give you low level access to application server’s functionalities such as
JBoss Modules for class loading
Domain management model
Deployment processors
Modular Service Container (aka service kernel)
This workshop was given at Crikeycon 2019 in Brisbane. It introduces Velociraptor and explains some of the design goals and implementation.
Note - this slide deck is outdated but might still be useful. The tool has evolved significantly since Crikeycon.
Presentation given by Tim Walsh at Archivematica Camp Baltimore 2018 about his and the Canadian Center for Architecture's experience with the Archivematica Automation Tools.
Developed for DANS-KNAW. This presentation covers some of the fundamentals of the automation-tools. Helper scripts for automation of transfers in Archivematica. Designed to complement the API slide-deck, the two resources can probably be consumed in any order. Knowing the API will help you understand the automation-tools, but knowing the automation-tools may help you understand what you want to create using the API.
API slide-deck here: https://www.slideshare.net/Archivematica/introduction-to-the-archivematica-api-september-2018-122548752
Analyzing Java Applications Using Thermostat (Omair Majid)Red Hat Developers
Ever wondered how your Java application is actually working? How it's making use of scarce resources on your machine? Ever tried to look under the hood of the Java Virtual Machine (JVM) and felt lost with various tools that don't provide an overall picture, only local details? Thermostat is an open source serviceability tool to help Java developers understand what's happening inside the JVM when their programs are running. Thermostat collects and combines information from various sources—including the Hotspot JVM—to present a complete picture of how the application is behaving. In this session, you'll get a chance to see Thermostat in action as it's used to examine various Java applications, identify what's wrong and fix those problems—often without even modifying the application code. You'll also learn how to add more features to Thermostat through plug-ins. If you're a developer, sysadmin, or QA, and if there's Java in your technology stack, you'll want to learn how Thermostat can make your life easier.
Developed for the University of Denver this presentation covers some of the most fundamental, yet, most important functions that are available in the Archivematica API. From discovering transfer locations to initiating and approving a transfer, a large part of what is required to automate your transfer workflows can be discovered herein.
There is now a complementary automation-tools slide-deck. The two resources can probably be consumed in any order. Knowing the API will help you understand the automation-tools, but knowing the automation-tools may help you understand what you want to create using the API.
Automation-tools slide-deck here: https://www.slideshare.net/Archivematica/automation-tools-making-things-go-march-2019
Introduction to Java Variables and Classes. Primitive and Non Primitive Variables. Boolean, char, Short, Int, Long, Float, and double data type. Definition of Class and Objects with Examples. Various components of Class and Constructors
This is a talk I did for JavaOne 2009. The focus of the talk was memory management and system monitoring with freely available tools that are in the jdk or open source.
Kernel Recipes 2014 - Performance Does MatterAnne Nicolas
Deploying clouds is in everybody’s mind but how to make an efficient deployment ?
After setting up the hardware, it’s mandatory to make a deep inspection of server’s performance.
In a farm of supposed identical servers, many miss-{installation|configuration} could seriously degrade performance. If you want to discovery such counter-performance before users complains of their VMs, you have to be detect them before installing any software. Another performance metric to know is “how many VMs could I load on top of my servers ?”. By using the same methodology it is possible the compare how a set of VMs performs regarding the bare metal capabilities.
The challenge is here: How do detect automatically servers that under perform ? How to insure that a new server entering a farm will not degrade it ? How to measure the overhead of all the virtualization layers from the VM point of view ?
Erwan Velu – Performance Engineer @eNovance
WildFly core is fully modular application server, which is used as base to build WildFly EE container and much more. Functionalities such as EE are implemented as sets of extensions also known as subsystems.
Extensions give you low level access to application server’s functionalities such as
JBoss Modules for class loading
Domain management model
Deployment processors
Modular Service Container (aka service kernel)
This workshop was given at Crikeycon 2019 in Brisbane. It introduces Velociraptor and explains some of the design goals and implementation.
Note - this slide deck is outdated but might still be useful. The tool has evolved significantly since Crikeycon.
Utopia Kingdoms scaling case. From 4 users to 50.000+Python Ireland
Describing the real life case of Utopia Kingdoms, an online game. The game had initially problems scaling on production environment and had to be greatly refactored to support large number of players. This includes use of caching, profiling, queuing system and the migration of database from Amazon SimpleDB to MongoDB.
PGConf APAC 2018 - High performance json postgre-sql vs. mongodbPGConf APAC
Speakers: Dominic Dwyer & Wei Shan Ang
This talk was presented in Percona Live Europe 2017. However, we did not have enough time to test against more scenario. We will be giving an updated talk with a more comprehensive tests and numbers. We hope to run it against citusDB and MongoRocks as well to provide a comprehensive comparison.
https://www.percona.com/live/e17/sessions/high-performance-json-postgresql-vs-mongodb
Your Java Journey into the Serverless WorldKamesh Sampath
Your Java Journey into the Serverless World (or) Java in a Serverless World In this session we will start to see What is Serverless and what it means to you ? Knowing that we will continue our journey to quickly deploy a serverless platform APACHE OPENWHISK on Kubernetes. Having platform ready we will then demystify what should be your Java Programming model in the serverless world???. Is this enough for me to build my serverless applications, the answer is !!!NO!!! , then what else is required, “TOOLS” , in the last part of this session we will stock check our inventory of tools that can make the serverless journey quick, easy and productive.
Introduction to ZooKeeper - TriHUG May 22, 2012mumrah
Presentation given at TriHUG (Triangle Hadoop User Group) on May 22, 2012. Gives a basic overview of Apache ZooKeeper as well as some common use cases, 3rd party libraries, and "gotchas"
Demo code available at https://github.com/mumrah/trihug-zookeeper-demo
Introduction to InfluxDB, an Open Source Distributed Time Series Database by ...Hakka Labs
In this presentation, Paul introduces InfluxDB, a distributed time series database that he open sourced based on the backend infrastructure at Errplane. He talks about why you'd want a database specifically for time series and he covers the API and some of the key features of InfluxDB, including:
• Stores metrics (like Graphite) and events (like page views, exceptions, deploys)
• No external dependencies (self contained binary)
• Fast. Handles many thousands of writes per second on a single node
• HTTP API for reading and writing data
• SQL-like query language
• Distributed to scale out to many machines
• Built in aggregate and statistics functions
• Built in downsampling
PyGrunn2013 High Performance Web Applications with TurboGearsAlessandro Molina
Users are getting more and more used to fast websites, a second or two is way too much before they leave the page. Since version 2.2 TurboGears has focused on providing more tools to create faster web applications and improving its speed constantly. The latest 2.3 version, the first to support Python3 is up to 4x faster than the previous and provides a great toolset to make fast pages. The talk will focus on showcasing the tools provided by the framework to increase speed of your web applications and provide some tips and tricks to get maximum speed from the framework itself.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfJay Das
With the advent of artificial intelligence or AI tools, project management processes are undergoing a transformative shift. By using tools like ChatGPT, and Bard organizations can empower their leaders and managers to plan, execute, and monitor projects more effectively.
Experience our free, in-depth three-part Tendenci Platform Corporate Membership Management workshop series! In Session 1 on May 14th, 2024, we began with an Introduction and Setup, mastering the configuration of your Corporate Membership Module settings to establish membership types, applications, and more. Then, on May 16th, 2024, in Session 2, we focused on binding individual members to a Corporate Membership and Corporate Reps, teaching you how to add individual members and assign Corporate Representatives to manage dues, renewals, and associated members. Finally, on May 28th, 2024, in Session 3, we covered questions and concerns, addressing any queries or issues you may have.
For more Tendenci AMS events, check out www.tendenci.com/events
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
3. Traditional solutions
● We want to tackle our performance issues with performance testing tools
● Traditional performance testing tools have some issues though
4. Complex GUI
Oh no, I want my code
back!
● Too many features
● Scripted invisible logic
● Not reusable
● Refactoring?
8. Gatling
● Describe load tests with code
○ just as unit tests, integration tests, REST tests, etc.
○ familiar to devs
○ versioning is easy (Git, peer review with pull requests, ...)
● Simple Scala DSL
● Tech under the hood
○ Akka - framework using message-actor pattern
○ Netty - non-blocking IO
● More efficient - can simulate more paralel users with less threads
10. Defining a simple sunny day
scenario
1. Access Zonky marketplace page as an
anonymous user to see which loans are
available for investment
1 user, 1 HTTP request
11. Coding the simple simulation
● Configure server URL and default
HTTP headers (10-12)
● Define a scenario (14) executing
one step (15) which does a HTTP
GET request to /loans/marketplace
(17) and checks that response was
200 OK (18). After that wait for 5
seconds (20).
● Execute scenario (22) with 1 virtual
user (21) injected immediately after
start
12. Basic concepts - Scenario
● Represents user’s behavior - a workflow that a virtual user will follow
● Sequence of steps (exec)
● Thinking time simulation (pause)
● Grouping steps (group)
13. Basic concepts - Virtual user
● Represents a distinct user, each one has its own data or maybe has
different behavior
● Modelled as an Akka message passed along Akka Actors backing each step
in a scenario workflow
14. Basic concepts - Simulation
● Description of a load test
○ how many users (possibly with different scenarios) will run
○ which scenarios will they execute
○ how new users will be injected into simulation
● Users are injected to a simulation using different injection profiles
15. Injecting virtual users into simulation
● nothingFor - do not add any users for given duration
● atOnceUsers - add given number of users immediately
● rampUsers - add given number of users with linear ramp over given duration
● constantUsersPerSec - add users at a constant rate, defined by number of users per sec
● rampUsersPerSec - inject a random number of users per second over given duration
● splitUsers - repeat an injection step separated by pauses until given number of users is
reached
● heavisideUsers - Injects a given number of users following a smooth approximation over a
given duration
● See http://gatling.io/docs/current/cheat-sheet/
17. Basic concepts - Session
● Each virtual user is backed by a session (modelled as an Akka message)
● State holder where data can be injected or captured from a step and can be
accessed in subsequent steps
● Session objects are immutable! set and setAll methods return new instances,
use chaining when setting more attributes
18. Basic concepts - Feeders
● Inject data from external source into a session of a virtual user
○ authentication data, various input data, …
● Sources
○ Scala data structures - Seq, Array
■ implicit iteration methods - queue, random, shuffle, circular
○ CSV files
○ JSON files
○ JDBC
○ Redis
● Conversion - convert raw data from feeder
● Data files location configurable in gatling.conf (gatling.core.directory.data),
default location is ${resource_root}/data
● See http://gatling.io/docs/current/session/feeder/#feeder for more examples
20. Basic concepts - Checks
● Checks can be used to verify that a server response meets given conditions
○ Status is 200
○ HTTP header is present and matches a regex expression
○ response time in millis is lower than …
○ response body equals …
● Information from response can be parsed and saved to a user session
○ Parse response (JSON), use JSONPath to locate an attribute in the response
○ Extract data from response (find, findAll, findRandom, count)
○ Transform data from response (provide transforming lambda function)
○ Validate data from response (is, not, exists, notExists, in(sequence), optional)
■ RawFileBody, ElFileBody
○ Save, optional step, store parsed information as a session attribute for further steps
● See http://gatling.io/docs/current/http/http_check/#http-check
21. Basic concepts - Assertions
● Defines acceptance criteria on Gatling statistics (assertion fail = test fail)
● Scopes - global, forAll, details
● Statistics - responseTime, allRequests, failedRequests, successfulRequests,
requestsPerSec
● Conditions - lessThan, greaterThan, between, is, in
● See http://gatling.io/docs/current/general/assertions/#assertions
23. Our infrastructure - AWS
Jenkins
Amazon
Web Services
Jenkins
Jenkins
JenkinsLoad generator
(ec2 instance)
Zonky API
Monitoring
tools
1
2
3
4
Uses Gatling AWS Maven plugin,
https://github.com/electronicarts/gatli
ng-aws-maven-plugin
1. Spin up (or use existing)
load generators in AWS,
distribute test package
2. Execute tests and generate
load on Zonky API
3. Collect performance metrics
with monitoring tools (New
Relic, Grafana, etc.)
4. Collect data for Gatling
report from all load
generators and compile
HTML report
24. Our infrastructure - Jenkins
● Gatling plugin
○ Performance
trends
○ Report viewer
● All jobs on
Performance tab
27. Scaling out perf tests with AWS Fargate
● AWS Fargate = serverless Docker runtime environment managed by Amazon
● Pros
○ Easy setup, ideal for small startups, drop-and-run your Docker image
○ No need to provision your own EC2 machines and tear them down after the test
○ You pay only for time when load generators are running
● Cons
○ Higher price per hour
○ Limits
■ max. 50 concurrently running tasks, contact support for raising the limit
■ possibly network performance,
https://stormforger.com/blog/2018/06/04/aws-fargate-network-performance/
■ no persistent local storage for tasks
28. Demo - AWS Fargate + Gatling + ELK stack
● Build
○ Gatling tests as a single executable jar file
○ Docker image with jar file baked in, executed as a task in Fargate, or locally ...
● Deployment
○ Logstash as a Fargate service
○ Fargate task definitions for Gatling load generators
● Runtime
○ Spin up to 50 load generators in Fargate, generators destroyed automatically after they finish
○ Collect data through Logstash to Elastic Search and copy simulation.log to S3 on finish
○ Compile final report from collected simulation.log files
29. Source code
● https://github.com/petrvlcek/gatling-demo
○ load generator
○ Docker configuration
○ scripts for running in AWS Fargate
● https://github.com/petrvlcek/gatling-logstash
○ OSS Logstash with pipeline configuration for Gatling
30. What to test and when
● One does not simply write performance tests
for everything
○ it’s expensive and pointless
○ you can’t predict user’s behavior
● OODA loop
○ Observe - know what’s happening in your system (monitoring, logs, analytics)
○ Orientate - identify hot-spots/bottlenecks in your system based on collected data
○ Decide - prioritize
○ Act - fix critical bottlenecks and validate with performance tests
31. Final thoughts
● Performance tests are tests like any other
○ coded by devs
○ no departments or expert teams are needed, trust your devops
● Integrate them to your CI/CD pipeline
○ trends/regression
○ acceptance criteria
● Decide what to test after observing your users and data from your monitoring