Is GitOps just another name for Continuous Deployment? Yes and no! 🧵
On the surface it may seem like GitOps and CD are the same. Configuration is stored in Git (or any version control system) and a change triggers applying the new configuration.
But only applying the configuration if it changed in the repository, is not enough to automate the full life-cycle of a distributed system.
For many legacy platforms this leads to only partial Continuous Deployment that requires careful human coordination between the few automated and many manual parts of the full life-cycle.
Enter cloud native platforms that provide API’s to declare desired state and reconciliation loops to sync desired and current state.
GitOps is a better implementation of the Continuous Deployment idea that relies exclusively on systems with this fundamental separation of concerns between desired and current state.
So, if your automation takes what’s committed in the repository and changes the current state it’s not GitOps.
But, if your automation takes what’s committed in the repository and applies that as the new desired state it’s GitOps.
To make this clearer, I differentiate between committed, desired and current state. GitOps syncs committed and desired state but does not touch current state.
Examples of platforms that provide this separation of concerns enabling GitOps are of course Kubernetes, but also managed database services and with limitations even VM auto-scaling groups, if your VM images are truly immutable.
This means you can implement CD the GitOps way with any tool, as long as you don’t break the fundamental separation of concerns. Yes, Ansible, Chef, Puppet or even Bash.
Still, dedicated GitOps tools provide additional value, because they simplify the implementation by pulling the logic out of the pipeline. Thereby making it testable and easier to maintain.
To summarize, GitOps is an opinionated Continuous Deployment implementation that explicitly depends on key foundational platform features. In my opinion, GitOps as a new name makes sense to highlight this seemingly small but crucial difference.
• • •
Missing some Tweet in this thread? You can try to
force a refresh