GitOps or DevOps?
You’re likely more familiar with the concepts of DevOps than the more recently coined term GitOps. Among the goals of DevOps are to reduce friction within development, testing, and operation departments, and to improve the iteration efficiency of application deployments and versions to reduce human errors.
With advancements in cloud computing and more applications becoming cloud native, DevOps is more empowered than ever before. As technology advances, the demand for DevOps progresses.
GitOps is a logical extension of DevOps. GitOps builds on DevOps with git as a single source of truth for the whole system. It’s like using a different framework to implement the methodology of DevOps. GitOps delivers the outputs that you get from DevOps implementations, but from a more mature perspective since there is an element of experience attached to it.
How does GitOps work?
As mentioned above, in GitOps methodology, git is the single source of truth for the entire DevOps workflow. In general, we can summarize the functions of the GitOps methodology as follows:
- Ops practices follow git.
- Git is the source of truth.
- Drive operations through git.
- Version control, history, peer review, rollbacks.
- Continuous delivery (CD).
- Pull request (PR) & branch merges to deploy.
- Webhook to trigger a build.
Now, to help associate the GitOps functions with the DevOps workflow, let’s take a look at what we expect out of the DevOps workflow in general:
- Configure, build, test, and deploy.
- Monitor, fix.
The term GitOps was coined by Weaveworks in 2017. As a relatively new term, the way one might implement it may depend on their perspective and experience. What would you check on your list to achieve GitOps? PR & branch merges that trigger configure, build, test, and deploy with CI/CD using a webhook? Writing an AWS CloudFormation script? An awesome Jenkins plugin?
When we take a more in-depth look at GitOps, it goes beyond the integration of tools and focuses on how you perform implementation. With git as your single source of truth for the entire DevOps workflow, GitOps should ideally cover the following as well:
- Infrastructure as code.
- System configuration as code.
- Application configuration as code.
- Application source code.
The benefits of GitOps
- Facilitates the adoption of new technologies and tools.
GitOps helps your application development team cope with the cultural challenges of changing development practices driven by the ever-evolving world of technology and tools. The team may need to understand an entirely new ecosystem to be able to test, deploy, and run their applications, and they may need to rethink how their work is synchronized.The 2019 CNCF survey cites the following evolving technology trends:1. The use of Kubernetes has grown dramatically. Based on the responses of 1,300 professionals, Kubernetes in production is as high as 78%, compared to 58% the prior year.2. Likewise, the use of containers in production has increased. Compared to the prior year, the number of respondents using 249 containers or less dropped by 26% and those using fewer than 50 containers dropped by 43%. Meanwhile, the number of respondents using 250 containers or more increased by 28%, to more than half.3. Even though GitOps is technology-agnostic and not dependent on Docker or Kubernetes, the survey points to the continuous change occurring in technological landscapes. Therefore, as expected, the leading challenge companies face in the adoption of containers is the cultural changes it brings to the development team.
- Enables centralized version management.
GitOps provides centralized version management for the entire DevOps workflow ‒ application, infrastructure, containers, etc.
- Improves auditing.
With GitOps, every action can be traced back to a commit, enabling DevOps teams to more easily find the root cause of any issue that arises.
GitOps builds on DevOps with git as a single source of truth for the whole system. It goes beyond the integration of tools and focuses on how you perform implementation. In the ever-evolving world of technology and tools — e.g., Kubernetes and containers — development teams face the cultural challenges of changing development practices. GitOps helps them with those challenges by facilitating the adoption of new technologies and tools, enabling centralized version management, and improving auditing. To learn about how to drive CD on Kubernetes with GitOps, see our recent article published on DZone.