Full cycle of CI/CD implementation in a scientific startup

Client

A product IT company.

Product

A knowledge-intensive application — a system for simulating the behavior of a physical object in given conditions.

Business challenge

The customer’s company did not apply continuous integration and delivery or automated testing. Writing Unit tests was a rare practice: the code coverage was about 10%. Accordingly, any attempts to develop the product and implement changes caused a large number of bugs.

The delivery process was carried out manually and required many resources, including both financial and time expenditures. Constantly recurring bugs and delays in releases led to a state in which further development of the product was impossible.

Technological difficulties also affected the team’s productivity: engineers lost faith in the success of further work and were not motivated to implement improvements. At the same time, the founder was also dissatisfied with the work of the team, as a result of which the atmosphere on the project was toxic and difficult.

The customer wanted to speed up and simplify the processes on the project, and also achieve high-quality and stable product deliveries. To achieve these goals, JazzTeam specialists joined the project. Our task was to implement and configure CI/CD. It was also necessary to solve the problem of mistrust between the founders and the team.

Project features

  • The product is a desktop solution with installed hardware and software protection, and a complex delivery scheme.
  • From a psychological point of view, the business owner and the developers became out of sync and could not understand each other. The constant dissatisfaction of the engineers and negative feedback from the owner led to the mood in the team turning sour and the level of toxicity increasing.
  • CI/CD was actually implemented by the customer’s team. As for JazzTeam, a manager joined the project and managed all the processes.
Headline icon PROJECT TASKS AND CHALLENGES
Ensuring high quality, stabilization, and acceleration of the product delivery process
Implementation and configuration of CI/CD on the project
Item icon Code coverage with Unit tests just 10%
Item icon No CI/CD, automated testing implemented
Item icon A large number of bugs
Item icon Toxic atmosphere on the project
Delimiter icon
Headline icon SOLUTION STAGES
  • 1
    In-depth analysis of development and delivery processes on the project Study of project features, the environment, and ecosystem Preparation of the necessary manuals and diagrams, as well as terms of reference Systematization of the CI/CD implementation process and breaking it down into clear stages, as well as setting deadlines for goal achievement
  • 2
    Organization of daily work on the implementation of CI/CD Conducting of daily research (1 hour per day) on test automation and CI/CD implementation
  • 3
    Implementing Automated UI and Unit Testing Introducing the practice of mandatory writing Unit tests by developers and conducting daily UI testing of critical product functions in the build the most similar to the production
  • 4
    Phased, iterative implementation of Continuous Integration and Continuous Delivery Regular evaluation and discussion of the effectiveness of each stage with team and founder
Delimiter icon
Headline icon RESULTS
  • Successful implementation of continuous integration and delivery (CI/CD). Thanks to this, a significant amount of time was saved on the project and the team became more productive
  • Test automation was implemented at all levels, and product deliveries became faster and more reliable
  • All necessary documentation for the implementation of CI/CD was prepared
  • A positive and trustworthy atmosphere was established on the project
Block diagram: Full cycle of CI/CD implementation in a scientific startup

Approaches and solutions

  • In-depth analysis of development and delivery processes on the project. Our specialists thoroughly studied the features, environment, and ecosystem of the project so that the CI/CD process could bring maximum benefit to the customer’s company. Based on the results of the study, the necessary manuals, diagrams, and terms of reference were prepared. This made it possible to systematize and break the process of implementing continuous integration and delivery into clear stages, as well as to set deadlines for achieving goals.
  • Organization of daily work on the implementation of CI/CD. The system had a complex architecture and an atypical technology stack, so the task of CI/CD implementation was really nontrivial and required research. The team developed a high resistance to writing Unit tests: the employees did not have the motivation to work on a difficult and completely new task. Therefore, our manager decided to start daily research (1 hour per day) on test automation and CI/CD implementation.
  • Phased, iterative implementation of continuous integration and delivery. The process was divided into the following stages to ensure painless and gradual implementation of CI/CD without compromising the planned deliveries:
  • Implementing an application automatic build system. We implemented the Maven application automated build system, as well as a special utility that prepared data for the build.
  • Installing and configuring Jenkins on the main and test servers.
  • Automated frontend server update. As part of this step, we automated the deployment of the frontend part of the application on the IIS server.
  • Automated backend server update. At this stage, the following functionalities were added to Jenkins: building a new web application, Unit testing, installing Tomcat, copying the web application file to Tomcat, and starting Tomcat.
  • Updating customizations for specific customers. As part of this stage, the team introduced the necessary improvements in the application architecture, after which deployment automation was implemented.
  • Database update. Jenkins in the general pipeline checks whether it is necessary to update the databases, and then updates each instance.
  • Implementation of automated testing. For automated UI testing of product critical functions, the framework selected according to the results of the research was successfully applied. The engineers started writing UI and Unit tests on a regular basis.
  • Automated deployment to a Live server. This made it possible to automate the actions of developers and lessen the likelihood of human error when deploying to a Live server.

The effectiveness of each stage was regularly assessed and discussed with the team and the founder, so the engineers saw constant progress and were motivated for further work.

Outcomes and achievements

  • Continuous integration and delivery (CI/CD) was implemented. Two months after the moment of implementation, this practice began showing its first results: the process of creating distributions of the product became fast and safe, which made it possible to significantly save time and increase the productivity of the team.
  • Test automation was implemented at all levels (Unit testing, UI). Activity data was seamlessly embedded into the CI/CD process, which ensured fast deliveries, reliable software development, and project process optimization.
  • The introduction of CI/CD in the team allowed for the establishment of an engineering culture and the beginning of continuous work on the technical debt. Before we joined the project, the main goal of the team had been rapid implementation of the functionality; the specialists ignored the quality and support of the product. After 3 months of our cooperation, the development team began to reduce the technical debt, use and accumulate best engineering practices, and maintain the necessary documentation, all while increasing the speed of creating new functionalities.
  • Gradual improvements and automation of a large number of routine actions helped solve psychological problems in the team. The founder noticed the success, and it also encouraged the engineers to continue working efficiently, which allowed for relations to harmonize, and a favorable atmosphere of confidence on the project.
  • All necessary documentation for the implementation of CI/CD on the project was prepared. Using the created manuals, the customer’s team will be able to easily develop the product in the future, and at the same time update the CI/CD process.

Technologies used

tech picture
Jenkins
tech picture
Appium
tech picture
White

    Contact Us

    What happens next?
    1
    Leave your project request. We will contact you and schedule a call.
    2
    Signing of the NDA to ensure the project info confidentiality.
    3
    Negotiation of your request and the required services.
    4
    Team forming, coordination of workstages.
    5
    Contract signing and project start.