In 2019, our team was full steam ahead on our flagship product that pioneered our company, Actovos. During the course of the software development cycle, we noticed a bottleneck in our process. As new features were being produced, we had slowdowns during our review cycle within non-technical stakeholders and our QA team.
“This is how it’s always been.”
There was no easy way for a non-technical QA member to review a feature before release. We’ve all been there, and we tried everything to make the process easy:
All of these “solutions” take up a tremendous amount of time. Our engineers were spending time away from code, and our other team members were at the mercy of the engineers. As COVID raged on, most of these “solutions” became obsolete. Our engineers and non-technicals started conducting zoom calls to share their progress and review; we can’t even count the number of hours wasted!
Here’s the solution we originally settled on: the engineer working on the feature would spin up a separate isolated environment. This environment would include a separate database and other services that were essential to running Actovos. The Engineer would log into our AWS account, create a new micro instance, the database, and the other services needed. They’d create a new DNS record for their branch, and then they would SSH in, pull the code down and get it all running. Many of you are probably cringing at this process but it was the best way to review features and get approval from stakeholders. This took an incredible amount of time away from other team members to spin up these environments and then continuously update them on every commit. We knew we needed to find a better way.
We tried using Netlify and some other static deployment on demand services. This really only solved a small part of the problem as we still had to connect it to an existing backend. We could see the changes the team made on the front-end, but very few updates only affected the front-end. These services just didn't cut it.
These solutions also created a new problem. We now had an incredibly inefficient means of handling feedback. The QA team started managing different GSheets for each branch which was just slightly more efficient than an email chain.
We searched long and hard for solutions, but there just wasn’t anything out there. We realized we’d have to build something ourselves.
We initially wrote an ugly bash script that ran on a server to spin up new environments based on a specific branch. The script would spin up the needed resources and set up a new DNS record to provide us with that true isolated environment. It had its quirks and still required some manual intervention, but at the very least it relieved the engineers of having to do the whole process manually.
This little bash script was the beginning of it all.
Fast forward one year, and we have a production-grade enterprise application called Voyage. Voyage creates dynamic on-demand deployments of your entire application for every PR. This alone saved our engineers about 2-3 hours each time they wanted to request a review. Our engineers can push up a PR, share a link, and let non-technicals review at their own pace.
But we didn't stop at a service that just spins up environments; we wanted to save our QA team time and headaches as well.
Voyage caters to both technical and non-technical stakeholders. If you’re a non-technical person, you don’t need a separate Github or Bitbucket login; just click the link and use the built-in review tools to add comments and screenshots. If you’re a technical person, you don't need to worry about copy/pasting an Excel file full of issues into Jira; comments from Voyage integrate with both Github and Jira.
Some features our users really like:
A motto of ours has always been “build cool shit,” and we believe Voyage will help development teams around the world do the same.