# #Day22: JENKINS

Hello , Everyone, This is my 22blog started my day22 as AWS DevOps Engineer #90daysofchallenge with ShubhamLondhe #devops #trainwithshubham.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1707925883497/82169592-176f-4268-ac5c-95378221fdfe.png align="center")

Jenkins is an open-source , Java-based tool used for continuous integration-continuous delivery n deployment ( CI/CD ) automation. it allows developers to automate the build , test n deployment processes. jenkins achieves continuous integration through its extensive plugin ecosystem.

plugins play a crucial role in integrating various devops stages. to integrate a specific tool u need to install the corresponding plugin. for example git , maven 2 project, amazon ec2 , html publisher , etc

before proceeding with the installation procedure, let’s understand the necessity of this tool :

• In today’s fast paced world , automation has become a necessity. jenkins provides a solution where we can automate processes without having to manually monitor each step.  
• with Jenkins we can achieve continuous integration of projects n end to end automation.

Jenkins History

The Jenkins project was started in 2004 (originally called Hudson) by Kohsuke Kawaguchi, while he worked for Sun Microsystems. Kohsuke was a developer at Sun and got tired of incurring the wrath of his team every time his code broke the build. He created Jenkins as a way to perform continuous integration – that is, to test his code before he did an actual commit to the repository, to be sure all was well. Once his teammates saw what he was doing, they all wanted to use Jenkins. Kohsuke open sourced it, creating the Jenkins project, and soon Jenkins usage had spread around the world.

Advantage:-

* Highly extensible with a huge variety of existing plugins. Plugins contribute to Jenkins’ flexibility and rich scripting and declarative language which supports advanced, custom pipelines.
    
* Robust and reliable at almost any scale.
    
* Mature and battle-tested.
    
* Supports hybrid and multi-cloud environments.
    
* Offers an extensive knowledge base, documentation, and community resources.
    
* Based on Java, an enterprise development language with a broad ecosystem, making it suitable for legacy enterprise environments.
    

Disadvantages:-

* **Single server architecture**—uses a single server architecture, which limits resources to resources on a single computer, virtual machine, or container. Jenkins doesn’t allow server-to-server federation, which can cause performance issues in large-scale environments.
    
* \*\*Jenkins sprawl—\*\*this is a common problem which also stems from lack of federation. Multiple teams using Jenkins can create a large number of standalone Jenkins servers that are difficult to manage.
    
* **Relies on dated Java architectures and technologies**—specifically Servlet and Maven. In general, Jenkins uses a monolithic architecture and is not designed for newer Java technologies such as Spring Boot or GraalVM.
    
* **Not container native**—Jenkins was designed in an era before containers and Kubernetes gained popularity, and while it supports container technology, it does not have nuanced support for container and orchestration mechanisms.
    
* \*\*Difficult to implement in production environments—\*\*developing continuous delivery pipelines with Jenkinsfiles requires coding in a declarative or scripting language, and complex pipelines can be difficult to code, debug, and maintain.
    
* **Offers no functionality for real production deployments**—“deploying with Jenkins” means running a fully customized set of scripts to handle the deployment.
    
* **Jenkins itself requires deployment**—this can be difficult to automate. Organizations that need to combine Jenkins with a continuous delivery solution have traditionally used configuration management to do this, but this adds another layer of complexity and is error-prone.
    
* **Complicated plugin management**—Jenkins has nearly 2,000 plugins, which can be overwhelming to sort through until you find a useful plugin. Many plugins also have dependencies that increase the management burden, while some plugins may conflict with each other. There is no guarantee a plugin you use will continue to be maintained.
