Responsive

Automate Progressive Delivery for Risk-Free Application Rollouts

Automate Progressive Delivery for Risk-Free Application Rollouts

Last updated
December 10, 2024
Bruno Lopes
Product Leader
Testkube
Share on X
Share on LinkedIn
Share on Reddit
Share on HackerNews
Copy URL

Table of Contents

Start Using Testkube with a Free Trial Today

Subscribe to our monthly newsletter to stay up to date with all-things Testkube.

Last updated
December 10, 2024
Bruno Lopes
Product Leader
Testkube
Share on X
Share on LinkedIn
Share on Reddit
Share on HackerNews
Copy URL

Table of Contents

Imagine an important production issue where a recent deployment introduces a bug, causing customer-facing downtime. This situation highlights the critical need for an automated solution ensuring secure and robust deployment processes. Progressive delivery emerges here, revolutionizing our deployment automation and reliability approach.

Progressive delivery allows you to gradually (“progressively”) deploy an updated version of your application to an increasing subset of users, evaluating end-user experience during the deployment process and enabling you to roll back your application state if any problems arise. Your application and/or infrastructure automatically restores, minimizing downtime and restoring service. 

Building on this, Argo Rollouts, a Kubernetes-native tool, adds advancement through blue-green and canary deployments, ensuring safer rollouts. Combined with Testkube, it enables comprehensive testing throughout the deployment cycle, thereby increasing reliability. 


In this blog, we will look at progressive delivery, various deployment techniques like blue-green and canary releases, and understand how Testkube helps with progressive delivery.

Understanding Progressive Delivery

Progressive delivery is a contemporary software deployment strategy that enables the planned and secure release of new features and updates over time. It targets a small subset of users, monitoring for potential issues before the changes are more broadly implemented rather than simultaneously pushing updates to all users. This method mitigates the risks of downtime, bugs, and negative user impact and guarantees the smoother execution of deployments.

Progressive delivery improves reliability and allows for quick rollback of issues in continuous delivery pipelines. The key benefits include reduced risks, increased service availability, and faster user feedback. By releasing changes gradually, teams can monitor real-time performance and address issues before they affect all users.

Types of Progressive Delivery Strategies

Canary Release

This strategy involves releasing updates to a small percentage of users. Based on feedback and performance metrics, the deployment is gradually expanded. If problems are discovered, rollback is simple, affecting only a small percentage of the user base.

Source: https://www.infracloud.io/blogs/progressive-delivery-argo-rollouts-canary-deployment/

For instance, a company deploying a new feature to its e-commerce platform might roll it out to 5% of users. They monitor metrics like page load times, errors, and conversion rates. If everything looks good, they increase the rollout to 50% and eventually to all users. If issues are detected, they can stop the rollout and address the problems while most users remain unaffected.


Blue-green Deployment

With this approach, we can maintain two identical environments: blue (current live version) and green (new release). Users are initially directed to the blue environment. After the new version has been deployed in the green environment and passed all tests, traffic is switched to the green environment to reduce downtime.

Source: https://candost.blog/the-blue-green-deployment-strategy/

Similarly, an organization updating its internal HR system might deploy the new version to the green environment, testing it with a few employees. Once validated, they switch all users to the green environment while keeping the blue environment intact if they need to revert quickly due to unforeseen issues.

One tool that can help you with progressive delivery is Argo Rollouts.

Introduction to Argo Rollouts

Argo Rollouts is a Kubernetes-native tool that gives your application deployments more control, flexibility, and security. Advanced strategies, including blue-green deployments, canary releases, and progressive delivery, help teams implement improvements progressively while lowering risk. This application quickly identifies any challenges before a deployment goes live, enabling the reversal of changes without affecting any users.

Benefits of Argo Rollouts

Argo Rollouts offers multiple features that simplify the deployment process:

  • Blue-Green Deployments: You can set up two environments, one with the current version (blue) and another with the new version (green). Traffic is moved seamlessly when the green environment passes all tests, thus preventing downtime.
  • Canary Release: This strategy involves rolling out a new version of our application to a small group of users rather than releasing it to everyone simultaneously.
  • Automated Rollbacks: Argo Rollouts' automated rollbacks feature safeguards the user experience by allowing the software to automatically revert to the previous version in the event that something goes wrong.
  • Seamless Integration with ArgoCD: Integrating GitOps with ArgoCD creates a robust continuous delivery solution combining logical version control and advanced deployment strategies.

Using Testkube in Progressive Delivery

Testkube is a cloud-native test execution framework that simplifies and automates the testing process in a Kubernetes cluster. Testkube interfaces with existing testing tools and frameworks to automate test execution across the software development lifecycle. Testkube ensures dependable and tested deployments in GitOps, where infrastructure and apps are managed through Git. Read our blog post on using Testkube with ArgoCD to leverage GitOps for testing.

Types of Tests Supported by Testkube

Testkube is flexible enough to meet various testing requirements because it supports any testing framework or tool you might already be using, including

  • Unit Tests: These tests focus on specific components or pieces of code to ensure they function as expected.
  • Integration Tests: These types of tests determine whether different components of an application work together as expected. 
  • End-to-End Tests: E2E tests simulate user workflows and ensure that the entire application functions correctly from the user's perspective. These tests frequently require a Kubernetes environment to run the application components.
  • Performance Tests: These tests evaluate the application's ability to handle load and remain responsive under various conditions. They could include stress testing, load testing, and benchmarking on a Kubernetes cluster.
  • API Tests: Testkube supports API testing tools, including Postman and SOAPUI. These tools enable you to verify the functionality of your APIs, ensuring that they process requests correctly and return accurate responses.

Check out the Testkube Examples and Guides for hands-on examples with the most popular testing tools.

Testing is critical to progressive delivery techniques like blue-green and canary deployment to ensure the applications function correctly, and only then are they rolled out to the entire user base.

How Testkube supports Progressive Delivery:

  • Automated testing: Testkube can automatically trigger tests on new versions of applications that are rolled out to validate their functionality, stability, and performance. 
  • Conditional progression: Testkube can validate the release through a series of tests as it allows progression based on test outcomes. For example, after a Canary deployment to 5% of users, Testkube can validate the release through a series of tests, and if the tests pass, the rollout continues; if not, the process halts for further investigation.
  • Seamless integration with ArgoRollouts: Testkube seamlessly integrates with ArgoRollouts, ensuring that tests are run as part of the progressive delivery process and traffic is directed to the new version only if the tests pass.

Read more about using Testkube with ArgoRollouts for various progressive delivery techniques in the following blog posts:

Summary

Integrating Testkube with Argo Rollouts provides major benefits to your deployment process. By combining automated testing with advanced deployment approaches such as canary and blue-green deployments, you can ensure that your upgrades are safe and reliable. Multiple tests performed by Testkube during deployments provide an additional layer of trust, enabling early error identification and preventing downtime. If you want to improve your GitOps processes, introducing progressive delivery testing is a good start.

Why not give it a go yourself? Sign up to Testkube and try one of our examples, or head over to Testkube documentation—if you get stuck or have questions, we’re here to help! Find an answer to your questions in the Testkube Knowledge Base or reach out to us on Slack.

About Testkube

Testkube is a test execution and orchestration framework for Kubernetes that works with any CI/CD system and testing tool you need, empowering teams to deliver on the promise of agile, efficient, and comprehensive testing programs by leveraging all the capabilities of K8s to eliminate CI/CD bottlenecks, perfecting your testing workflow. Get started with Testkube's free trial today!