How Progressive Delivery Drives Fast Feedback and Insights
Apr 25, 2022 by Stephen Atwell
Software has grown exponentially across all industries in the last decade, both in adoption and complexity. This growth is due in part to digitization across sectors. It’s also in part because of the constant evolution of software development practices, which enable developers to build more exciting software better and faster.
Agile methodology has become the de facto standard for software development. Developers satisfy customers through early and continuous delivery of valuable software, then accommodate changing requirements throughout the development process.
Many companies have adopted some form of continuous delivery (CD) to reduce the feedback cycle, improving their software quality and development speed by steadily fixing bugs and adding features. Customers quickly get their requested changes instead of waiting months until the next software version.
We’ll explore how continuous delivery and progressive delivery enable a continuous feedback loop to improve software quality then discuss how Armory helps.
Continuous delivery releases code changes automatically, either internally or externally. This makes a deployment repeatable, reliable, and predictable. When deployments are easy and reliable, it frees your developers to work on features instead of troubleshooting the deployment. They can then take the time to follow best practices instead of cutting corners on the deployment configuration.
So how can you use modern continuous delivery practices to improve software quality and delivery speed? By deploying often.
A modern application typically contains a few different components, each hosted on multiple machines behind a load balancer.
When your engineers release an application, they must deploy the code to not just one server, but all servers hosting the services. This method is both tedious and error-prone. Tools like Kubernetes help automate this process, enabling CD pipelines to push changes to the entire cluster using one simple command.
The ability to automatically push changes reduces your software development cycle’s feedback interval, increasing your software quality and delivery speed.
Progressive Delivery Drives Continuous Feedback
Progressive delivery builds on continuous delivery with two main additions: the use of feature flags to test code in production and progressive rollouts.
Many techniques have evolved to facilitate a rapid feedback cycle. Modern techniques like canary and blue-green deployments progressively release the application. These methods deliver the changes to only a subset of users, making it possible to safely test new features and gather data in a real production environment without a huge impact.
With progressive delivery, the development and release cycle typically looks like this:
- Teams develop code, commit it, and prepare it for release.
- They release the code to selected targets.
- Companies gather relevant data through user feedback, telemetry, or statistics, and use the information to plan the next round of app improvements.
- The cycle repeats.
One possible release strategy is to push the release to only internal stakeholders. Teams release the version to a broader public when internal stakeholders are satisfied with the changes. Customers won’t see the features stakeholders aren’t satisfied with in the release.
To optimize learning, progressive deployment can push new designs to a subset of real users and gather real usage data from a live production environment.
With the help of an observability tool, you can gather and aggregate all kinds of data relevant to your application, including logs, events, performance, and errors. Such tools collect data and also analyze the information to help developers resolve issues faster.
Now all the stakeholders have reliable and indisputable data to learn from. For example, your development team may have a solution to a performance problem, and they want to test it out by deploying to just 10 percent of the traffic through canary releases. As performance and usage data comes in, your team can roll out to more users and observe when performance degradation happens using real load. It’s usually challenging to simulate load using internal tools but possible with progressive delivery.
Iterative development is the engine of a rapid continuous feedback loop that cycles between development, feedback, improvement, and delivery.
Using a progressive delivery strategy can minimize downtime for each release. After-hours or midnight deployments are no longer necessary. Customers are happy, your release engineers are at peace, and your product analysts have the data they need to drive the next round of improvements.
Armory Enables CD and Progressive Delivery
Thanks to tools like Armory, developers can confidently release their changes to production and help stakeholders gather the information they need to drive the next round of iteration. Armory is an enterprise-grade version of Spinnaker, a continuous delivery tool built on best practices learned by delivering software at scale.
The software has many built-in features for you to implement progressive delivery with confidence:
- Canary analysis is available out of the box. It’s easy to create a canary image before each deployment, collect some data, then either manually decide to push the release or make the decision automatically within a pipeline.
- Once the application is released, you can undo the release through a pipeline or with a manual button click.
- You can scale Kubernetes deployments. When the number of clusters grows, it’s typical to experience latency issues, and managing configuration and credentials also becomes a logistical nightmare. The Armory agent for Kubernetes addresses both concerns with a decentralized model and scales to thousands of clusters with ease.
- Its policy engine ensures every rollout meets a set of codified standards. By setting appropriate policies, you can ensure every deployment is compliant with your organization’s standards, unifying DevOps and SecOps in the release process.
While you can implement progressive deployment with other tools like Kubernetes, Armory enables continuous delivery at scale.
For companies seeking a SaaS deployment solution, Armory also offers Project Borealis. Project Borealis delivers intelligent deployments-as-a-service so that your developers can focus on building great code, rather than deploying it. Project Borealis is currently available as an early access service to our design partners. Project Borealis is a drop in replacement for kubectl that can deploy using progressive deployments.
As software complexity has grown, the deployment process has become challenging. You can simplify this process with tools like Kubernetes to roll out changes to a cluster of servers at the click of a button, but that’s not all that continuous delivery is good for.
Today, progressive delivery powers many of the world’s best tech companies as the engine of a continuous learning cycle. Companies progressively roll out their product, gather accurate usage data in a real production environment, and use the information to help build their products.
Using Spinnaker as its core, Armory facilitates progressive delivery at scale, giving your developers the power to deploy with confidence. We invite you to check out what Armory can do for you.