Industry Use cases of Jenkins:- Prepl

Industry Use cases of Jenkins:- Prepl

In 2021, When industries are running towards automation, adopting different DevOps tools to solve their industrial use-cases. In this race, Jenkins is one the most promising tool. These automation tools not only automate the thing but also help in reducing the cost.

What is Jenkins ?

  • Jenkins is a free and open-source automation server. It helps automate the parts of software development related to building, testing, and deploying, facilitating continuous integration and continuous delivery. It is a server-based system that runs in servlet containers such as Apache Tomcat.
  • Jenkins is written in Java with plugins built for Continuous Integration purposes. Jenkins is used to building and testing your software projects continuously making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build.
No alt text provided for this image
  • Basically , to integrate jenkins with other tool , there are pre-created plugins for respective tools. SO we install plugins in jenkins and jenkins easily connect to that tool. Almost all tool support jenkins , we just need to respective plugins and use it.

Features of Jenkins

No alt text provided for this image


1. Continuous Integration(CI):-

No alt text provided for this image
  • In development practice, while developing any software developers need to program and test their code. There are many developers working on the same project over an SCM tool. They need an environment where they can test it quickly.
  • As fast as they test, they can detect the error and solve that quickly. Using continuous integration tools all things become automate and as the code is pushed the testing begins.
  • Jenkins achieves Continuous Integration with the help of plugins. The plugin provides the ability to integrate with various DevOps stages.

2. Continuous Delivery(CD)

No alt text provided for this image
  • In DevOps, when you make changes to your product, such as modifying configuration or adding new features quickly and safely by keeping the code in a deployable state all the time, we call it Continuous Delivery. 
  • Continuous Delivery makes deployments routine affairs. The deployments could be of an embedded system or an extensively distributed system. In this process, the changes in your code get automatically prepared, tested, and built. You do so by removing the hardening, testing, and integration phases that are usually present in ‘dev complete.’

Some other features are:-

1. Easy Installation:- Jenkins is a platform-agnostic, self-contained Java-based program, ready to run with packages for Windows, Mac OS, and Unix-like operating systems.

2. Easy Configuration:- Jenkins is easily set up and configured using its web interface, featuring error checks and a built-in help function.

3. Available Plugins:- There are hundreds of plugins available in the Update Center, integrating with every tool in the CI and CD toolchain.

4. Extensible:- Jenkins can be extended by means of its plugin architecture, providing nearly endless possibilities for what it can do.

5. Easy Distribution:- Jenkins can easily distribute work across multiple machines for faster builds, tests, and deployments across multiple platforms.

6. Free Open Source:- Jenkins is an open-source resource backed by heavy community support. As a part of our learning about what is Jenkins, let us next learn about Jenkins architecture.

How Jenkins use in real world

No alt text provided for this image
  • Developers commit changes to the source code, that uploaded in SCM(github) repository.
  • The Jenkins CI server checks the repository at regular intervals and pulls any newly available code.
  • The Build Server builds the code into an executable file. In case the build fails, feedback is sent to the developers.
  • Jenkins deploys the build application to the test server. If the test fails, the developers are alerted.
  • If the code is error-free, the tested application is deployed on the production server.

The files can contain different codes and be very large, requiring multiple builds. However, a single Jenkins server cannot handle multiple files and builds simultaneously; for that, a distributed Jenkins architecture is necessary.

Now you can understand the Master-Slave architecture

Jenkins Master-Slave Architecture

It contains one master node and other slave node depend upon the requirements.

No alt text provided for this image
  • If you are working on multiple projects you may run multiple jobs on each and every project. Some projects need to run on some particular nodes, and in this process, we need to configure slaves.
  • The Jenkins master acts to schedule the jobs and assign slaves and send builds to slaves to execute the jobs. So to run job , slave resources like ram/cpu are used not Master resources.
  • It will also monitor the slave state (offline or online) and getting back the build result responses from slaves and the display build results on the console output. The workload of building jobs is delegated to multiple slaves.


Case Study of Preply’s online education platform

No alt text provided for this image

Objective of Preply:

To support this online education platform — and over 100,000 students and 25,000 tutors — Preply’s engineering team set out to create a fully automated CI/CD process for its software and development projects. 

CHALLENGE:

Maintain their ‘everything as code’ mantra and enhance their current Jenkins installation. Eliminate manual intervention by using a configuration-as-a-code only solution for all software development.

SOLUTION:

A flexible and scalable CI/CD pipeline that enables their team to introduce and accelerate the deployment of new builds without jeopardizing the entire service. 

RESULTS:

  • Daily release rate increased from 1 to 40 and continue growing
  • Rollback time decreased from 45 minutes to 60-120 seconds
  • Deployment time reduced from 90 to 5-40 minutes (depending on service)
  • Vastly improved conversion and user experience

Let's us understand in details

Automating CI/CD processes to accelerate innovation

“When we talk about DevOps tools, a CI/CD system is the first thing that comes to mind,” said Amet Umerov, DevOps Engineer with Preply. “We use Jenkins at Preply because we run hundreds of jobs every day, and we need to use many features that aren’t provided by other systems, or if provided, these features have stripped-down functionality.”

“In our company, we are trying to use an ‘Everything as a Code’ paradigm which is about having reproducible infrastructure, monitoring, jobs, credentials, jobs, and many other things in code,” Amet said. “Using Jenkins allows us to configure fully reproducible code and fuel a completely automated CI/CD process for all projects inside our company.” 

Preply’s team initially tried running Jenkins in Kubernetes. However, it wasn’t as compatible, nor did it completely address their specific requirements. To automate their platform, they needed to begin by building a more robust underlying infrastructure for Jenkins, and include Jenkins in more aspects, like configuration, jobs, and plugins.

Enhancing and stabilizing Jenkins to accelerate the development

  • Preply’s technology team is continuously creating new product features and experiments for rapid product A/B testing, so speed-to-market is critical. “Having a more stable environment frees up developers to run more experiments. The faster you can get the desired outcome, the faster you validate your hypothesis. Stable deployment means that your work no longer blocks development processes for other product teams, and you can deploy independently.”
  • In order to achieve a more stable Jenkins environment, the team knew the first step was to focus on infrastructure. “We opted to use AWS resources like EC2 instances, SSL certificates, and load balancers,” Amet pointed out. “And for the Advanced Metering Infrastructure (AMI), we chose to integrate Jenkins with GitHub.”
No alt text provided for this image
  • Preply’s team implemented this in combination with CloudFront to allow paths and token validation. With those steps, Amet said they had a ready-made infrastructure with AMI, giving them opportunities to monitor and access credentials within their corporate Vault. But to automate reproducible configurations, they had to tackle the ongoing requirement to update specific Jenkins plugins. For that, they chose to pin versions – using a declarative format – of those plugins by leveraging Docker. 
  • “Docker made it easier to manage Jenkins and its plugin versions,” said Amet. “Now implementing Jenkins plugins is a breeze to update and configure. We can run them locally and easily deploy them on production. And the fun part is we can play with plugins or a new Jenkins version on the local level without disrupting other services: our engineers are free to innovate.” 

Reaping the rewards of a new CI/CD platform

  • More importantly, with a few code changes and by enhancing the plugin architecture of their existing Jenkins instance, Preply’s DevOps team was able to fully automate their CI/CD process for all projects. 
  • “Our time to deployment has decreased drastically: we’ve managed to increase our software release rate up to 40 per day, as opposed to just one per day before we automated our processes,” Amet said. “This has helped us to increase the rate at which we develop and launch the product experiments.”
  • The ability to accelerate its product release schedule has also shown an improved conversion and user experience. But what they like the most is that their small DevOps team can introduce and deploy a new service in any way they want without jeopardizing the entire product. 

Conclusion

By eliminating manual processes with Jenkins, development became easier and freed this global online education company to focus on innovative services for both their students and tutors around the globe. 

Thanks ,










要查看或添加评论,请登录

社区洞察

其他会员也浏览了