Software development patterns | trial

GitOps is a framework for cloud-native application deployment.

It combines pre-existing DevOps practices, such as Infrastructure as Code (IaC) and Continuous Delivery, with Git-based workflows used in software development, promising to improve security, visibility and auditability, and overall developer experience.

GitOps emphasizes separation between Continuous Integration (CI) and Continuous Delivery (CD) by proposing a model where a CD tool running on target environment contiunously pulls declarative state definitions from a Git repository. It then reconciles application state with these definitions, and pulls artifacts produced by the CI pipeline. This contrasts with the model where a CI/CD tool both builds and pushes the application to the target environment, often in a single pipeline.

At Kiwee, we find GitOps to be a useful framework that binds together CI, CD, IaC, immutable infrastructure and strict versioning. We experienced benefits of CI and CD separation over hand-crafted pipelines to deploy to Kubernetes.

However, adoption of GitOps requires high expertise, skill, and overall team maturity. Shifting from imperative and push-based to declarative and pull-based Continuous Delivery is rarely as simple as installing a few new tools and rewriting some deployment scripts. More often than not, existing workflows and processes will need to be updated, and new ones created to accommodate for this paradigm change.

With all that, we recommend investigating principles behind GitOps and trying it out.


Software development patterns