The list of tools with the “DevOps” label is growing faster everyday.Getting to know the needs of your team is important. It will enable the team to use the right services to facilitate the development of new applications.
This article will show you the different Devops tools by category to improve the productivity and collaboration of your teams.
DevOps Culture and its Advantages
DevOps is the contraction of the words “developers” and “ops”. It is a collaborative culture of automating processes between development teams and operational departments to facilitate software development, testing and delivery.
In a previous article, we saw that these teams have traditionally rather opposite interests: the developers are supposed to create value and make the product/service always more innovative and the operational ones aim at maintaining the stability of the infrastructures.
The benefits of Devops culture are numerous. A Devops collaboration enables faster, higher quality production releases. The Devops team delivers more often while maintaining the quality and stability of infrastructures. A good Devops strategy relies on a close collaboration between the ops and the developers, a better communication and therefore a better performance of the teams.
Different tools used in DevOps
Devops teams use various tools on a daily basis for a variety of tasks and assignments. We prepared a list (not exhaustive) with these tools.
Source code management tools
The first step in a Devops collaboration is to align development and ops teams with the same source code management tool. In concrete terms, this enables us to know the various modifications of the code and their authors.
This is a versioning tool: any code change will create a new version. Historically, ops do not use this kind of tools because there is little automation, everything is manual and there is no code. But once there is a code, the best practice is to share it and have it re-read by peers. This is where code management tools come into play.
There are two types of code management:
- Tools like Git and Subversion, which are used to create a history of its files: at that moment, such change was made in your files. Subversion is an older and less efficient tool than Git.
- Tools like Github, Gitlab and Bitbucket that serve to share its code, and thus the history that goes with it. They are based on Git and it is possible to have the history of the code and work on several. If historically Github has a monopoly, Gitlab becomes more and more popular, thanks to Gitlab CI which is effective.
Continuous Integration/Continuous Deployment Testing
The Continuous Integration and Continuous Deployment tools, or CI/CD, enable the automation of source code change testing. Concretely, CI/CD tools enable the modernization of applications by reducing the time needed to create new functions.
There are many CI/CD tools. One of the most used platforms is Jenkins, an open source tool (which can be hard to handle, though).
There are also paid solutions like GitlabCI, Bamboo, TeamCity, Concourse, CircleCI or Travis CI.
Containers make it possible to isolate an application with all the elements that it needs to function. The use of containers makes it possible to be as “iso” as possible from the code of the developers until the production and to have no surprise at the time of the production.
Docker automates and standardizes application deployment in these virtual containers and is the leader in this tool segment. The alternative to Docker is RKT, which is the standard pushed by the CoreOS foundation.
When using containers, the need for an orchestrator is very quickly felt.
Container orchestration simplifies deployment and management. The most used orchestrator on the market is Kubernetes, but there are others like MesOs and Docker-Swarm.
Automation and Configuration Management
Automation eliminates the repetitive tasks of Devops teams.
There are several types of automation in Devops:
- Set up automatic configurations on servers
- Automate server actions
There are numerous tools depending on the existing infrastructure and the needs of the company:
- Terraform: infrastructure provisioning;
- Ansible: configuration management of slave servers;
- Puppet: configuration management of slave servers;
- Salt: management of the configuration of the slave servers.
Monitoring and alerting
The monitoring and alerting tools allow you to have an overview of your infrastructure, solve problems that arise and improve performance.
The open source Prometheus application and Grafana service are used to monitor Kubernetes clusters. By coupling three tools, ELK (Elasticsearch, Logstash and Kibana) is a powerful log analysis solution. One can play on the performance of each tool individually and adapt to its needs: Logstash for normalization/sends logs, Elasticsearch for storage and Kibana for visualization. ELK allows for log analysis (forensics) and aggregation (dashboard).
Project Management Tools
To carry out software development, it is essential to rely on a common project management tool in the Devops team.
Jira is an agile project management tool that allows you to plan, track and manage software development projects. With Jira, each member of the development team can track project progress and set sprint priorities.
On the other hand, Trello distinguishes itself by its intuitiveness and simplicity to manage the different tasks of the project.
With the need to have an ever more secure security, new tools for managing secrets appear as Vault. Vault allows an organization of static and dynamic secrets.
Secrets, the Kubernetes Secrets Management Service is an alternative to Vault.