AIM Delivers Test Automation Solution with CI/CD to SaaS Company
Case Study: Application Development
SITUATION & BUSINESS CHALLENGE
A SaaS company wanted to establish engineering best practices for its numerous development teams, especially around test automation and deployment. The automated testing system currently used for the company’s flagship application would regularly become congested, especially when multiple development teams would run tests concurrently, which resulted in slowdown of the testing environment for several hours and impacted developer productivity and efficiency.
The company knew that better development, test and deploy processes were possible and wanted to set up a “greenfield” testing ground for automation services which would include a CI/CD (continuous integration/continuous delivery) pipeline to prove viability and serve as an example for other groups. The system would provide developers with continual feedback on software (CI) while making sure that software is always deployable through automated checks on the correctness and readiness of an application for production whenever changes are made (CD). The idea was to demonstrate the potential automated testing services with CI/CD has to improve quality and efficiency in the company’s software development, but in a risk-free manner removed from the flagship application that serves all the company’s customers.
Lacking available resources to dedicate time to the project, the company turned to AIM Consulting to provide experts who were not only familiar with CI/CD but could also build out the test code and simulated data as well as do any customization required to create a working solution within the company’s dependencies so their development teams could actually use the automation services.
AIM Consulting deployed a team of highly experienced software engineers to develop the solution. The team began by analyzing the constraints for infrastructure in the client environment and the technology requirements to achieve the CI/CD pipeline. For example, Jenkins, an off-the-shelf CI/CD tool, was a client-mandated constraint for workflow orchestration.
AIM brought a wealth of insight as well as expertise to the table. The team advised the company on how the congestion experienced by the testing teams could best be alleviated through virtualization of services with virtual machines and containerized microservices. The AIM team recommended a microservices architecture that would leverage time shifting so that larger or sluggish preparation tasks could be performed ahead of time and their outputs stored (smart cached) for later recall. This approach would remove the bottleneck impacting the development team’s automated testing system and eliminate the daily slowdown that had become such a problem.
The AIM team then developed the software that automated the creation of the test assets and configurations needed by development teams to run, test and deploy new features.
As anticipated, the CI/CD pipeline challenge proved to be more complex than a simple installation of off-the-shelf CI/CD tools. The AIM development team needed to account for constraints within the company’s enterprise systems, such as multi-stage publishing and promotion of the virtual machine images produced by the build pipeline. Although Jenkins is a popular CI/CD tool with strong community support, its plugins largely proved unworkable in the client environment. This is because Jenkins plugins have rigid workflow expectations. Seemingly minor details in how the client’s enterprise systems mandates its build workflow function increased costs of configuring and testing the plugins to the point that custom scripting was a better value.
Ultimately, the AIM consultants developed a custom solution using a stack of technologies to create a working CI/CD pipeline With BASH scripting and Python scripts to connect the various technologies. The technology stack used to create a CI/CD pipeline solution included the following:
|Microservices||Java and Spring Boot|
|Containerization||Docker and Kubernetes|
|Version Control System||Git|
|Software Library||Quake and FEAR|
|Test Framework||Test NG (Run) and Mockito (Write)|
|Code Quality and Analysis||SonarQube|
|Java Code Coverage||Jacoco|
|Binary Repository Manager||JFrog Artifactory|
In addition, at the project’s completion, the AIM development team was able to work with an overseas team in Prague to transfer maintenance and additional scope offshore.
The automation services solution with CI/CD built by AIM Consulting worked perfectly. Completed under budget, it earned visibility up to the CTO and has since been adopted by the company’s development teams to test private builds. Developers can finish features, upload them to Git, automatically build and optionally deploy. In addition, dev and test engineers can run and build unit tests and static code analysis easily in a manner that operates consistently across the whole team. This means that one developer using the tool would get the same results as another developer and all can run their tests easily without any set up.
The project is acknowledged to have provided unquestionable value to the company, with the expectation that it will be expanded to the flagship application software development teams in the future.