DevOps has become much more than a just trend, it has evolved as a survival kit for enterprises and ISVs. As it continues to mature, new challenges are posed, but parallel to them are the new tools in the market to help us tackle the challenges.
This is the first blog of the three blog DevOps Tools Comparison series where we discuss the benefits attained through DevOps tools’ for Dev and ITOps teams. In part-1 of the blog series, we have covered the following tools: Jenkins, Saltstack, Ansible and Puppet.
Jenkins tool was built to achieve continuous integration and continuous delivery (CI/CD) in software development projects. Through automation, Jenkins helps organizations to accelerate their software development process. According to Datanyze, over 69% of the companies use Jenkins for Continuous Integration practice.
- Self-contained Java-based program. Ready to use Out of the box with Operating systems like Windows, Mac OS X, and other Unix-like operating systems.
- Hundreds of plugins in the Update Center
- Easy to integrate changes to projects and have access to outputs to easily notice when something goes wrong.
- Jenkins is a widely used tool in the market. It is installed on workstations and servers both on intranet and internet, to help achieve CI/CD. As it is a very commonly used tool, the talent base ready whenever needed.
- Easy set up and configuration via a web interface
- With Jenkins, we can instantly deploy code and generate test reports. It can also be configured according to the requirements for CI/CD.
- Analytics- Jenkins does not provide visibility into the end-to-end metrics; hence, it does not communicate the key changes in the entire organization or the challenges faced by the employees.
- Collaboration and visibility: With Jenkins, it is really hard to track the changes made by the development team as it does not allow developers to see the changes made by other team members. The only way is to reach out to the release manager or interact with the team members.
- Microservices: Jenkins does not support Microservices well. It was developed before Microservices became popular. Jenkins can’t support integrating and testing multiple services at once which is essential for a Microservices environment.
- Unpredictable Costs: Even if it’s an open source tool, the servers cost no less. The load on the server cannot be predicted easily which makes the costs of hosting unpredictable.
SaltStack provides DevOps engineers and IT complete control over the systems both on-premises, and on cloud. It also provides event-driven automation and orchestration for natively integrated configuration management, infrastructure security and compliance. According to Datanyze, about 6% of the companies use Saltstack for Configuration management practice.
- Modular and extensile codes in the form of formulae and packages promote community style of development
- Uses simple SSH key pairs for authentication.
- Supports both Agent and agentless architecture
- Real-time data, automation and parallel management
- Set-and-forget configuration management
- Highly scalable deployment to dozens of nodes
- Ready to use after the initial setup phase
- Saltstack’s DSL is feature rich and isn’t required for logic and states
- Input, output configuration are very consistent – all YAML, making it easy to read.
- Strong user community
- Since it is centralized, it is easy to configure and maintain.
- Provides both configuration management and orchestration
- Copying high volume of files is slow and not optimal
- The lack of best practices guide or good documentation makes it difficult for developers.
- Managing network hardware is not so easy
- Scaling problems occur while running a huge number of states across servers.
Ansible is an IT Configuration Management, Deployment & Orchestration tool. The agentless automation app is simpler to use in comparison to Puppet and Chef but still very powerful. This is one of the primary reasons for many IT organizations to opt for Ansible. The automation helps you end repetitive tasks, speed productivity and scale your efforts. According to Datanyze, over 43% of the companies use Ansible for Configuration management practice.
- Open source configuration management
- Supports push configuration
- Based on the master-slave architecture
- Fully agentless. It uses YAML which is a very simple syntax.
- Variable registration. This allows tasks to register variables for later tasks
- Much more streamlined code base than many other tools
- Since it is based on SSH, it doesn’t require installing agents on remote nodes.
- OS Restrictions: Ansible is OS dependent, it means that the code working for one OS will not necessarily work for others, apart from that, one can’t use a windows box as a Management Server
- Unlike Chef, Ansible employs a Push methodology rather than Pull. This might not scale well for certain areas
- The absence of sandbox, dry run, and execution plan mode. This makes it difficult to iterate quickly during development.
Puppet is a configuration management tool. It is used to automate infrastructure management and configuration. It supports a wide range of platforms such as HP UX, BSD, Gentoo, Mandriva, Debian, RedHat, Microsoft Windows, etc. According to Datanyze, a little less than 2% of the companies use Puppet for Configuration management practice.
- Automatically enforce consistency of environments
- Works across physical and virtual machines
- Supports best practices of DevOps, including continuous delivery
- Has the most robust interface and can run on almost every operating system
- Full-fledged web UI
- Idempotency: This feature in Puppet is very helpful for keeping the machine updated for a long period of time rather than rebuilding it multiple times whenever there is any change in configuration.
- Over-ride mechanism: While applying configurations, Puppet supports an easy mechanism to override instructions for exceptions.
- To extend Puppet, one has to be familiar with Ruby which may not be easy as it is not hugely popular.
- Frequent releases and changes
- Comprehensive reporting features are missing
- It may not be suitable for smaller setups and businesses
- Some of the features like comprehensive reporting are not complete
In part-2 of the blog series, we shall cover the following tools: Chef, Puppet, GitHub, Spinnaker.
Watch our webinar where we’ve discussed a templated approach to infrastructure management and automation that helps you choose tools based on your development and infrastructure needs.
Latest posts by Saipavan Grandhi (see all)
- Choosing the Right DevOps tool for a Successful Continuous Delivery and Automation | Part 3 - February 27, 2019
- Choosing the Right DevOps tool for a Successful Continuous Delivery and Automation | Part-2 - January 18, 2019
- Choosing the Right DevOps tool for a Successful CI/CD and Automation –Benefits and Disadvantages - January 4, 2019