First Line Software is a premier provider of software engineering, software enablement, and digital transformation services. Headquartered in Cambridge, Massachusetts, the global staff of 450 technical experts serve clients across North America, Europe, Asia, and Australia.
The Client
Our Client plays a pivotal role in empowering data-driven sales organizations with advanced features like GIS integration, email integration, phone integration, and team chat. Their comprehensive software integrates seamlessly into all sales activities, offering tools for managing sales campaigns, tracking outcomes, executing email marketing, managing the sales process, and much more. Their clientele includes companies in the insurance, finance, healthcare, technology, and manufacturing sectors.
The Challenge
Our client was tasked with creating a reusable performance environment for upcoming software releases. The purpose of this environment was to help identify and resolve potential performance issues within the application and optimize its cloud infrastructure resources. Before launching their application to potential clients, they wanted to be certain it could handle the expected user load. So, they assessed its performance metrics before moving it to production.
Our Approach
With specialized expertise in performance assessment, our team took a holistic approach to this project. The project comprised several key phases.
Application Assessment
In the initial stage, we thoroughly evaluated the client’s application. This allowed us to define an appropriate performance profile, create test scenarios, and select the most suitable tools to establish a performance environment. We employed various types of performance testing, including:
- Baseline Test: This examines the system’s performance under expected or average loads to establish a performance baseline.
- Load Test: Here, we assessed the application’s ability to perform under expected user loads and identified performance bottlenecks.
- Stress Test: Next, we sought to determine the system’s breaking point, with the capability to simulate user volumes up to 2 times the expected peak load.
- Scalability Test: We assessed the system’s ability to maintain its performance during horizontal autoscaling.
During these tests, we closely monitored the following criteria:
- Transaction Response Time
- Success/Failure Rate
- System Performance
- Errors and Exceptions
Project Phases
The work was divided into four distinct phases:
Phase 1: This involved crafting the performance environment, which included the framework, satellites, and underlying infrastructure.
Phase 2: Known and the application discovery stage, this phase involved developing the performance profile, preparing initial performance test scenarios, and adjusting the test framework for the System Under Test (SUT).
Phase 3: During the execution stage, we undertook various performance tests, initiated performance scripts, monitored outcomes, and pinpointed and addressed performance issues alongside the client’s team.
Phase 4: This culminated in the aggregation of results and training. It included the creation of a comprehensive performance report, compiling documentation, and hosting training sessions with the client.
The Solution
In light of the specific architecture of our client’s application (NodeJS+React, GraphQL API, and Google Cloud Platform PostgreSQL), we designed a fully automated performance environment using a suite of open-source tools, including:
- Gatling: A load-testing tool that seamlessly integrates with integrated development environments, version control systems, and continuous integration solutions. All scripts were written in Scala.
- Graphite: An enterprise-ready monitoring tool designed to run efficiently on cost-effective hardware or cloud infrastructure.
- Grafana: A multi-platform open-source analytics and interactive visualization web application that offers charts, graphs, and alerts when connected to supported data sources.
- Jenkins: An open-source automation server that streamlines software development-related tasks such as building, testing, and deploying, enhancing continuous integration and delivery.
- InfluxDB: An open-source time-series database used to store performance test results.
The Outcome
Following the completion of our project, the client realized several benefits, including:
- A stable and fully customized performance environment complete with comprehensive documentation, scripts, tools, and pipelines.
- A list of identified performance issues, providing invaluable insights into application performance bottlenecks and helping prevent problems with real users.
- Recommendations related to hardware resources and optimization of the application’s codebase.
- An estimate of the scalability expenses for their application on Google Cloud Platform (GCP), which is contingent on user activities.