The Need for Speed: Focus on Agility and Quality through Deployment Automation
July 30, 2020
The past few months have proven one thing: change is imminent within our industry.
As a technology team, we can prepare for such change by having a software development methodology that allows us to experiment and iterate quickly. Servicing hundreds of independent retailers and their thousands of shoppers, our goal is to be agile and forward-thinking to best prepare for whatever might be next.
What is a software deployment?
A software deployment is the process of getting your product to the customer. For our team, investing in automated software deployments has been the most impactful tool we’ve leveraged. It has allowed our team to rapidly test, measure and adjust quality software.
For example, consider a patio set you’ve recently ordered from Amazon. This physical product is loaded onto a truck, and shipped from point A to point B, landing at your doorstep ready for a socially-distanced BBQ. Software follows the same process: it needs to be “shipped” from where it was created to where it can be used.
Similar to products wasting away in a warehouse or factory floor, software that has been developed but not released has no value. Automating the deployment process is key to speeding up the software development cycle. This allows us to capitalize on opportunities the new software represents.
The benefits of automated deployment?
Manual deployments are prone to human error, require continuous overhead, and result in large releases that are challenging to digest and learn.
An automated software deployment uses specialized code to ship our updates to you, rather than requiring a member of our team to carefully perform a difficult software release procedure. The advantages of automated software deployments are:
- Error-Free: Automatic deployments are always correct and repeatable.
- Low-Cost: Once the upfront cost of setting up the automation has been invested, all future deployments incur very low to no cost.
- Frequent, Small Releases: We are able to push updates to customers immediately as work is completed, tested and approved. This encourages our teams to optimize around small atomic units of change that are easy to verify. Small releases drastically reduce the overall cycle time, resulting in improved speed and quality across the board.
- High-Value: Users get access to new features, bug fixes, and usability enhancements the moment they are ready.
- Low-Risk: Small amounts of change are easy to test, verify, troubleshoot and repair.
What have the results been?
From a product maintenance point of view, we have seen an incredible boost in our ability to address and respond to bugs and usability tweaks. Issues that crop up are able to be developed, tested and released in a matter of hours, not weeks or months.
The Weekly Ad Manager is a great example of what’s possible. As new features and fixes were completed they were immediately and automatically available on a test environment for our QA team to review. This greatly reduced the typical cycle time between development, QA, and deployment, enabling the team to hit each of their milestones on schedule. This allowed us to build the Ad Manager product bit by bit into a fully-fledged client facing platform in a few months.
As we dive into Q3 and anticipate a new wave of shoppers in Q4, automated deployment allows our team to test and create a retailer and shopper experience that continues to evolve based on fundamental needs and new behaviors.