Table of Contents
To understand GitOps, please do read the previous article on DevOps, Git, and GitHub.
All the Modern Applications we are building today are deployed in the microservices style.
What is microservices?
In this process, the application is broken down into simple components and each component is containerized in a docker container and they work individually.
For example, let’s take an example of an employee management app that consists of mail applications, attendance management, and payroll management systems. Every application will act as a separate microservice.
Suppose there is any problem in the mail application. It doesn’t affect the other modules.
Various software based on its features are put in separate containers so they are isolated from one another and work individually to avoid conflicts as problems in one service will not impact other services.
DevOps applications like Kubernetes and Docker swarm are container management systems that are not only used to create replicas of containers but also to manage the health of containers that are deployed as software.
This is a modern-day architecture of a deployment of applications.
How is GitOps different from DevOps?
Initially, when we were using git it was only for the application code. But, what GitOps suggest is that use git for both application code and cluster configuration of Kubernetes or the infrastructure configuration of the application.
There are a lot of infrastructure management tools like wrike, IBM cloud orchestrator, cloudability, OpenStack, apache cloudstack and many more.
So with GitOps, you manage the entire architecture of the application with the help of code.
When you create and manage your architecture manually it takes a lot of time to get our application to a stable state in case of any problem.
For this purpose, infrastructure management tools are used to speed up this process with less human intervention.
Now, with GitOps, all the infrastructure, Configuration, and application code are now maintained in a single place with Git. So it acts as a single source code. As a result, any questions or references regarding your application can be referenced here.
Git as a Source of Truth, Git as a Deployment Mechanism.
It is a process of implementation in which a version control system like Git is used to house all the information about the product you are developing like documentation, code, dockers and infrastructure for deployment, etc.
GitOps is a word that is derived from DevOps where the word dev is replaced by Git as everything from the plan, build and test everything exists in the Git now.
It is majorly for use cases where Microservices and Container and Architecture management tools are used.
Control for the whole architecture goes in the hands of the developer so there is less intervention of the operations and other teams. As a result, the developer gets more power and they know how their program is deployed.
CI/CD is implemented efficiently in GitOps compared to DevOps.
CI means the changes that are made on the branch on GIT so the branch can be master or any other sub-branch. These Integrations of changes is called CI.
CD means whatever changes in the branch are incorporated on the Kubernetes, Docker Swarm, or on the Infrastructure. After this, it is deployed.
Declarative: Entire System is described declaratively. Applications can be easily deployed and rolled back to Kubernetes. And in case of any disasters, the clusters can be easily reproduced.
Versioning: The canonical desired system state versioned in Git. As a declaration is stored in the version control system it is easy to do rollbacks and commits. It also provides security by authorizing the code and its commits.
Automation: Approved Changes that can be automatically applied to the system. It automated the process of making changes to the system automatically without the credentials of the containers.
Assurance: Software agents to ensure correctness and alert on divergence. This makes the entire system self-healing. In the case of human errors, these agents provide timely feedback and help us to resolve the issue as fast as possible.
Here are some major pros of GitOps over typical microservice architecture.
GitOps is really new concept. Looking at the current demand, this is going to be new technology trend. With this article about GitOps, I hope you go good information. I will be glad to know your thoughts.