Microservices Automation for Telecom Project
Submitted By Jenkins User Brijnandan Singh Chauhan
India-based development teams for a global telecommunications company find build and deploy efficiencies thanks to Jenkins CI/CD.
Organization: IT company that provides technology used by telecommunications companies in mobile networks
Industry: Information Technology | Telecom
Team members: Brijnandan Singh Chauhan, Lead Software Engineer and Venkata Sai Nuthalapati, Software Engineer
Project funding: Radisys Corp.
Programming Language: Java, Python, Golang, Ansible
Platform: Docker or Kubernetes, Linux, Vagrant, Mesos
Version Control System: Bitbucket Server
Build Tool: Make
Community Support: Jenkins.io websites & blogs, Spoke with colleagues and peers
Build and deployment cycles slashed by 75% for a large telecom company
Background: The product has more than 15 unique microservices making it very difficult to track all the changes going to the repositories of these microservices. Building the microservices — and integrating them — was a bigger challenge. As the project grew in scope, the number of developers working on the project also increased significantly.
Not only was a continuous integration framework needed to improve the management and efficiency of the project, a continuous deployment and delivery process was also needed to get the necessary feedback returned quickly.
Goals: Automating the build and release process by implementing CI and CD using Jenkins.
Solution & Results:
The project was composed of multiple microservices and managing all these services was a really hectic task. We used Jenkins integrations with different tools like Mesos, Vagrant, Docker, and Artifactory. It was quickly clear that managing this process with Jenkins is way easier than it was without using Jenkins.
The continuous integrations using Jenkins multi-branch pipelines helped to provide feedback to developers immediately as they introduce bugs in the version-controlled source. Pull request webhook plugins in Jenkins are advanced and are used to trigger builds only when the feature is ready, which had helped in controlling the frequency of builds: the integration builds were slated to run on a regular interval when there are code changes in the repository of any associated microservice. Finally, all the microservices that are built during the day are assembled at night and the product is deployed to a vagrant VM by a job that is created by a Jenkins job.
This deployed setup has the integration test suite, which is a robot framework that gives detailed test results. These results are automatically published in the Jenkins dashboard and circulated to stakeholders via email. The feedback, received after continuous integration, has helped to dramatically reduce static code analysis bugs.
The integration of all the plugins in Jenkins had helped in having a centralized location for all types of dashboards. For example, the multibranch pipeline is a boon for setting up CI and keeping a track of feature/developer branches. And integration of different DevOps tools via plugins have reduced a lot of scripting/coding efforts.
Jenkins is the instrument of a project’s success. Members of our dev teams are happy that they do not have to waste time and effort fixing bugs at later stages due to earlier feedback. Plus, I’m able to manage the project easily with just two engineers rather than having an army to support these activities if they were done manually.
Overall, we saw the following results:
- feedback is received 15 times faster
- build and deployment cycle has been reduced from 100 hours to just 24 hours
- deployment scripting was reduced by the availability of different plugins
- significant time was saved with plugin integrations