You've probably heard of terms like Continuous Integration (CI) and Continuous Delivery (CD), but what in earth means Continuous Release Orchestration? In this blog post we will explain what Cloud-Native Continuous Releas Orchestration is and how it helps to increase your software quality and time-to-production.
What is Continuous Release Orchestration?
Continuous Release Orchestration is a practice that builds on the capabilities of Continuous Integration (CI) and Continuous Delivery (CD) to help you release software faster and more frequently for a great customer experience. It's the missing element that connects your CI/CD pipeline to your most important asset: your end-users and customers.
We define release orchestration as a more business-focussed act of taking running code and making it “live” and accessible to users, in a predictable, repeatable and efficient way. It's about paying particular attention to ensure that releasing a new version doesn’t result in a worse experience for your users. If there is already a live version of a service, why would you replace it with a less well performing version?
Manual release processes struggle to be predictable and efficient. Human operators make subjective decisions especially when trying to follow tedious and laborious processes.
Automation Alone Is Not Sufficient
Kubernetes provides an automated, predictable and repeatable way of releasing code as containerised workloads, but Kubernetes will not prevent you from replacing “good code” with “worse code”. If the new provided code runs for long enough and passes a few simple checks, Kubernetes will use it as a replacement for the current version.
In contrast, Continuous Release Orchestration solutions (like Vamp.io) will protect you and your users from the outages that come from replacing “good code” with “worse code”. Each release is controlled by a release policy which contains precise criteria for determining whether the new version is “good enough” to replace the current version.
A release policy is a set of rules that define how a version of a service should be validated when it's added to an application. If the policy conditions are not met then the new version will be automatically rolled back with the minimum of impact on your user's experience. These release policies act as guard rails, automating the process of validating new software in production. This makes releasing software to production a consistent, scalable and self-driving process. In SRE terms, a policy validates that a new version of a service complies with the SLOs defined for that service.
You set which release policy will be used for different types of release, for example emergency fixes, planned improvements or new features. You can select from a library of predefined policies. You can use these policies out-of-the-box or you can customise them to suit your application.
Releasing As A Business Decision
Continuous Release Orchestration tools provides your DevOps engineers with a holistic understanding of your application and not just the individual microservices. If you provide a dependency map for your microservices, Vamp can go further and manage releases at the application level. Delaying the release of new microservice versions until all their required dependencies are satisfied.
Typically this type of dependency management is something that your DevOps team will currently be managing through conversations with their peers, the Product Owners and perhaps other business stakeholders. Vamp makes it possible for you to separate out these decisions and place the control of when to release a new feature in the hands of the Product Owners - making it a business decision and not a technical one.
Your DevOps team remains in control of what is deployed and when. They have control over technical releases such as emergency fixes and planned technical improvements. Your engineers also retain oversight of the release policies that will be used for feature releases. However, the decision to release a new feature now sits with the business. This frees up your DevOps engineers to focus on other tasks.
This is especially powerful if your business is required to comply with legal or other regulatory requirements before releasing a feature to users. It is also invaluable if you need to rollout new features across multiple applications, for example as part of a regional or multi-cloud SaaS solution.
Making the release process less technical and more goal focussed also means feature developers can self-manage the pre-production environments more efficiently with greater confidence. Further freeing up your DevOps engineers to focus on other tasks.
Automate and improve your release process with Vamp
The beauty of Continuous Release Orchestration is that it has something for everyone. Risk-averse enterprises can use it to release as frequently or infrequently as they need to. The same goes for startups and everyone in between. Continuous Release Orchestration increases your time-to-production while reducing the cost of failure. It gives you and your teams the precise control to release whenever and to whomever. If you're looking to improve and automate the last and most critical part of your software delivery pipeline, I recommend trying Vamp. You can get in touch with us right here to get you started.