In the world of DevOps, we regularly see new terms and tools emerging. They are often announced as revolutions, but they are quickly forgotten to be replaced by new phenomena with speed. However, some of them still exist, such as GitOps.
First of all, let’s remember DevOps’ goal: to unite development and operations teams through automation, management and control, with the goal of accelerating and improving the production chain and delivering their applications more quickly. Thus, DevOps brings together a set of tools, best practices, and methods.
To understand how we came to GitOps, you have to understand the concept that has been around for a few years and that represents the latest great revolution in the world of DevOps: Infrastructure as Code. This practice simplifies management of the IT infrastructure and facilitates consumption by teams. To simplify this concept as much as possible:
> Teams Ops writes, within modular files, infrastructure models (Linux server, Windows, etc.);
> Development teams use files written by operations teams, and include a configuration file to customize the infrastructure they need;
> The symbiosis of the two coils makes it possible to provide the required infrastructure and leads to a new and unique coil, which acts as an identity card for the created environment.
In short, three files contain all the information needed to create a single environment. GitOps makes it possible to store these files in a repository and monitor their developments.
This approach, which can be phrased as “infrastructure like Code + CI / CD + Merge Request,” enables better throughput by accelerating development and deployment, while improving the stability and reliability of cloud infrastructure.
But then, how can you take full advantage of GitOps? What are the benefits? Finally, what distinguishes this approach from DevOps?
GitOps, the cloud cookbook
Actions needed to deploy and configure cloud infrastructure and applications are stored in files. One can imagine a recipe book, which the tools will read and implement in order to get a cloud in the expected state.
To modify the expected state (such as changing the tool version, adding a user or secure applications), the developers and administrators will modify these files. Once these modifications are ‘push’, i.e. we decide to incorporate them into the ‘expected state of the cloud’, the tools will detect these changes and perform the necessary actions to make the platform cloud compliant with these expectations.
The important thing is not the tool, but the goal
The GitOps model serves several purposes:
> Reduce downtime : Whether there is a breakdown, an update to be performed, maintenance or deployment of a new solution, an unavailable platform prevents teams from working, or even customers from accessing services. By automating the deployment, configuration and testing of the cloud platform, by allowing tools to coordinate operations, we ensure faster execution and much higher quality delivery. In short, a stable and functional platform with much shorter interruptions.
> Error Reduction : The formulation of procedures and the composition of the tools makes it possible to have a single source of truth, to be able to follow the modifications, and thus prepare the procedures for testing, quality and approval. It is no longer necessary to wait for an error to be posted to realize the abuse.
> Safe country and great agility : The state of the infrastructure stored in the version control system, there is only one place to consult to know the general state of the environment. In the event of a problem, it is thus possible to revert to the old version quickly and accurately. Likewise, a patch for a critical vulnerability can be applied, tested, and validated in a matter of moments.
The most important thing is to be able to deploy and replicate an infrastructure and environment simply and in an iso way.
GitOps is very different from DevOps
The GitOps and DevOps approaches are based on common principles, tools, and goals. While DevOps drives a cultural shift in how operations teams and developers collaborate, GitOps instead offers a suite of tools and best practices to improve collaboration between teams, enabling everyone to work with their own code and standards, but with a common goal of working together.
In short, the gains are significant in implementing GitOps practices including tracking changes (who, what, when?) and simple and fast backtracking; ease of management in the context of complex projects and large teams; And the repository that contains all the code, configurations, inventory, and state of the environments. One source of truth. On the other hand, it will also be necessary to take care to find the right balance between efficient processes and the complexities of follow-up and implementation by the teams.