GitOps Takes DevOps Teams To Higher Levels of Maturity
Read more here about how continuous delivery, progressive delivery, and self-service fuel developer autonomy. These steps are made possible by GitOps.
Join the DZone community and get the full member experience.Join For Free
Stream-Aligned and Platform Teams
The 2021 State of DevOps report identifies two types of teams as the way high-maturity teams organize themselves: stream-aligned teams and platform teams. The idea of a "platform" or "internal developer platform" is fundamental to GitOps. While a GitOps pipeline begins with committing code to a Git repository, it is made possible by a platform that paves the way for that new code to move in an automated way from the repository to a production environment.
The platform is how the Ops team provisions resources such as cloud services, storage, service meshes, and security and monitoring tools in a ready-made template. These templates are created even before they are needed and made available to any developer within the organization. The big shift due to this is that developers need not raise a ticket for the resources they need: they can pick a ready-made template and deploy their code in a matter of minutes. From the Ops side, they have peace of mind knowing they have configured this template and that it follows security protocol by default. It does not require developers to separately configure security for deployments.
GitOps tools like Flux are essentially platform-building tools. They help to build and maintain platforms that contain these ready-made templates. Flux leverages Helm to define resources as Helm charts.
Maintaining the Platform as a Product
Another key idea in the report is to treat the platform as a product. This is easier said than done. With the numerous products and services that need to be developed within the organization, another complex product is the last thing the Ops team wants. However, GitOps provides a framework for this idea.
Just like the application code, GitOps requires that the platform itself be fully described in Git. This means all cloud services, service meshes, and every other component that makes up the infrastructure stack are defined in code. The benefit of this is that whatever is defined in code can be kept from drifting from its original state. Further, when changes need to be made, all it takes is to edit a line of code in the repository. Ops teams can even enforce policies that span multiple repositories, and these policies are defined in code.
Flux, the open source CNCF-adopted GitOps tool, enables Ops teams to manage the platform using Git repositories.
A Self-Service Developer Experience
For developers, the biggest benefit of having a platform from which they can create and utilize resources is that they enjoy a self-service experience. This improves developer productivity. GitOps and the platform model are key to enabling a self-service developer experience and greater developer productivity.
"So much of infrastructure and operations are really now in service of elevating developer productivity." -Gene Kim, Author, The Phoenix Project
Further, developers need not worry about configuring security manually: it's all baked into the templates. This is not only a relief for developers, but also results in a better security posture for applications as Ops has more control over security, and security is defined as code.
Automating More Than Infrastructure
The 2021 State of DevOps report talks about the need to move beyond infrastructure automation to automate higher-level processes like developer components. Delivering cloud infrastructure and resources is a starting point, but the platform model really shines when it is also used to deliver developer experiences in ready-made packages. This may include readily available service mesh tooling like Istio, or monitoring tools like Prometheus and Grafana.
From Continuous Delivery to Progressive Delivery
The report noted that continuous delivery is a unique character trait of high-performing teams. GitOps is particularly geared towards enabling continuous delivery. Flagger is an open source tool that simplifies progressive delivery.
Progressive delivery involves using deployment tactics such as canary releasing, blue-green deployments, and A/B testing to improve reliability during releases and enhance user experience. However, these approaches have been difficult to implement in a complex Kubernetes application stack. Now, with GitOps, and powerful tools like Flagger, progressive can be defined and controlled using Git repositories. All it takes is defining the policies for the deployment process in Git. This can be as few or as many lines of code as required. Flagger reads these policies and implements them along with service mesh tools like Istio or Linkerd. Tweaking the policies involves editing a couple of lines of code in the Git repository.
The 2021 State of DevOps report touches on the central issues facing DevOps teams today. It points out the principles to be applied to achieve higher levels of maturity. GitOps is the ideal way to implement these principles. It addresses key areas such as developer experience, developer productivity, security, automation, continuous delivery, and reliability. These are key priorities for every DevOps team, and a GitOps solution is the simplest and quickest way to achieve these goals.
Published at DZone with permission of Twain Taylor. See the original article here.
Opinions expressed by DZone contributors are their own.