Progressive delivery was first introduced by James Governor of RedMonk to describe a set of modern practices in application deployment. These practices include canary releasing, blue-green deployments, A/B testing, and feature flagging to name a few. While there are subtle differences between these practices, what's common between them is the idea of releasing new application features or updates only to a subset of users initially to test for performance, bugs, and issues. If the new release is proven to be stable and performant is it gradually expanded to a wider set of users until it finally reaches all users. This deployment strategy is used by companies large and small to deliver web, and mobile applications of all kinds.
While the idea of progressive delivery is exciting, it comes with a new set of challenges on how to implement, manage, and monitor these phased out releases. Weave GitOps can greatly simplify the management of progressive delivery. Not only this, Weave GitOps has the potential to implement complex progressive delivery patterns that would otherwise be difficult to achieve.
What it Does
GitOps is based on the idea of declarative infrastructure, applications, and configuration. The entire system is declared in Git repositories, and these repositories are viewed as the single source of truth. Production environments should be a replica of the Git repositories they are spawned from. Any deviation or drift from these repositories is noticed and corrected back to the declared state using specialized GitOps tools like Flux.As part of the GitOps tool set, Flagger (Flagger on Github) is an open source tool that is purpose-built to manage progressive delivery of applications. Flagger integrates with service meshes like Istio, Linkerd, or Kuma to control the traffic flow between the multiple versions of an application. The service mesh tools allow you to set traffic splitting policies that split traffic by percentage.
Flagger delivers essential monitoring metrics like HTTP/gRPC success rates, latency and more. It also shows you live updates on the traffic split between the original and the canary version of an application. To enable DevOps workflows, you can integrate Flagger with Slack and other collaboration tools to receive notifications on the status of each release.
Why should I care?
If you're considering progressive delivery, it is likely because you want to make your deployments safer and more predictable, and to deliver the possibly best experience for end users. Weave GitOps and Flagger are delivering a robust solution to manage progressive deployment strategies for Kubernetes infrastructure.
GitOps delivers more control enabling you to implement complex deployments that span multiple cloud platforms and clusters. These deployments can be automated and ease the operational workload off the Platform team.
If a deployment fails, it can be easily rolled back by simply reverting to the previous version of the Git repository. This is easy to implement as every change in Git is versioned.
Weave GitOps offers effortless integration with service mesh tools like Istio, Linkerd, and Kuma. For a more in-depth look at how Flagger works with service mesh tools read this post on using Flagger with Linkerd, or Flagger with Kuma Mesh.
If a change has been committed, the developer does not need to touch the production cluster and can initiate the deployment right from Git. For the platform operator, once they define the specifics of the deployment, all that needs to happen is for them to approve the release, and it gets propagated into production automatically. This reduces human error, and brings reliability, security, predictability and precision to deployments.
Watch GitOps and Flagger in action:
Find Out More
If you've considered progressive delivery but have always held back because of how complicated the implementation is, Weave GitOps is just what you need. Get in touch with us to explore how your organization can graduate from traditional manual releasing to progressive delivery.
Ask us for a demo of Weave GitOps Enterprise
Progressive delivery with GitOpsSchedule Demo