The DevOps culture and its advantages
DevOps is the contraction of the words "Developers" and "Operational". This culture is around collaboration. The DevOps aims to automate processes between development teams and operational departments. Thus, it will facilitate software development, testing, and delivery.
In a previous article about DevOps culture, we saw that traditionally these two teams have rather opposite interests. Developers are supposed to create features to make the product/service ever more innovative while operational teams aim to maintain infrastructure stability.
DevOps culture advantages are many. DevOps collaboration enables faster and better quality production releases. DevOps teams deliver new features more often while maintaining the quality and stability of the software infrastructure. A good DevOps strategy is based on extensive collaboration between Ops and Developers, through better communication to have better team performance.
The different tools used in DevOps
DevOps teams use various tools daily for various tasks and missions. Here is a (non-exhaustive) list of these tools.
Source code management tools
The first step of a DevOps collaboration is to align development and operational teams on the same source code management tool. In concrete terms, it helps to know the different modifications of the code and the authors of these code modifications. It is a versioning tool: any code modification results in the creation of a new version. Historically, Ops do not use this kind of tool because there is almost no automation, everything is manual and there is no code. Once code is written, it is good practice to share it and have it reviewed by peers. This is where code management tools come in.
There are two types of code management:
- Tools like Git and Subversion, which are used to create a history of your files: at that time, this change has been made in your files. Subversion is an older and less effective tool than Git.
- Tools like Github, Gitlab, and Bitbucket are used to share your code, and therefore the history that goes with it. They are based on Git and it is possible to have the history of the code. It is also possible to work on it with several people at the same time. Historically Github has the monopoly but Gitlab is becoming more and more popular, thanks in particular to Gitlab CI which is efficient.
Continuous integration/ continuous delivery
Continuous integration (CI) is an essential component in an agile development environment and in DevOps culture.
Continuous integration and continuous delivery tools, or CI/CD, automate the testing of source code after every modification. In concrete terms, continuous integration and continuous delivery tools allow the modernization of the software by reducing the time required to create new features.
There are many continuous integration and continuous delivery tools available.
- One of the most widely used platforms is Jenkins, an open-source tool (which can be difficult to use though).
There are also paid solutions such as:
- GitlabCI (which we use at Padok),
- Travis CI.
Some cloud providers also offer tools for continuous integration and deployment, such as:
- Google (GCP)
- Amazon (AWS),
Containers allow an application to be isolated with all the elements it needs to operate. The use of containers allows being as "ISO" as possible from the developer code to the production avoiding any bad surprises.
- Docker is the leader in the tool segment. It automates and standardizes the deployment of applications in these virtual containers.
- The alternative to Docker is RKT, which is the tool promoted by the CoreOS Foundation.
When using containers, the need for an orchestrator is very quickly felt. The containers' orchestration simplifies their deployment and management.
- The most widely used orchestrator on the DevOps market is Kubernetes,
but there are others such as:
Cloud providers offer remote storage solutions to companies and individuals. Cloud and DevOps are independent and yet hardly work separately, since the Cloud is boosting DevOps.Today, three major players share the cloud service market:
- Google Cloud Platform (GCP),
- Azure (by Microsoft)
- Amazon Web Services (AWS).
When we talk about cloud providers, we are thinking of load balancing services. The goal of load balancing services is to spread loads over different devices, allowing an improvement in response time.
- HAproxy is the reference tool in load balancing.
Automation and configuration management
Automation eliminates the repetitive tasks of DevOps teams.
Several types of automation in DevOps exist:
- Set up automatic configurations on servers
- Automate server actions
Several tools exist depending on the existing infrastructure and the needs of the company:
- Terraform: infrastructure provisioning;
- Ansible: management of the slave servers configuration;
- Puppet: management of the slave servers configuration;
- Salt: management of the slave servers configuration.
Monitoring and alerting
Monitoring and alerting tools provide an overview of your infrastructure, solve problems that arise and improve performance.
- Prometheus open-source application and Grafana service allow Kubernetes clusters to be monitored.
- By combining three tools, ELK (Elasticsearch, Logstash, and Kibana) is a powerful log analysis solution. The performance of each tool can be adjusted individually and adapted to its needs: Logstash for normalization/sending logs, Elasticsearch for storage and Kibana for visualization. ELK is doing log analysis (forensics) and aggregation (dashboard).
Project management tools
To successfully develop software, you have to rely on a common project management tool within the DevOps team.
- Jira is an Agile project management tool that allows you to plan, monitor and manage software development projects. With Jira, each member of the DevOps team can follow the progress of the projects and define the priorities of the sprint.
- On the other hand, Trello stands out for its intuitiveness and simplicity in managing the various tasks of the software development project.
With the need for ever more efficient security, new secret management tools are emerging such as:
- Vault. Vault allows the static and dynamic organization of secrets.
An alternative to Vault is:
- Secrets, Kubernetes' secret management service.
The DevOps tools according to Padok
There is no perfect stack in DevOps. It is especially important to know the tools adapted to your needs, which requires time and many tests. We recommend that you test tools using free trials offered by most services. It allows you to evaluate those tools without allocating financial resources.
A quick reminder: the deployment of these various tools is useless if they are not guided by a real desire for collaboration between development teams and ops.
At Padok, our techno stack is:
- Containerization: Docker, Kubernetes
- Accommodation: Amazon Web Services (AWS), Google Cloud Platform (GCP)
- Monitoring: Grafana, Prometheus
- CI: GitlabCI
Feel free to contact us if you have any questions about these tools or why we chose them.