Establishing a Performance-Optimized Environment for a Data-Driven Management System

Performance Optimization

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:

  1. Transaction Response Time
  2. Success/Failure Rate
  3. System Performance
  4. 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.

Want to know more details about this case study?

Get in touch

Related work

Interested in talking?

Whether you have a problem that needs solving or a great idea you’d like to explore, our team is always on hand to help you.