Case Study: Optimal Workshop — Semaphore
Deploying in Minutes Instead of Hours:
How Optimal Workshop Achieved Continuous Delivery with Semaphore
- 10+ engineering hours saved daily with parallel testing
- Fully automated continuous delivery pipeline
- No more maintaining custom CI servers
Optimal Workshop is a software as a service company based in Wellington, New Zealand. They make usability study tools that help user experience designers, information architects and usability researchers in 106 countries improve the UX of their websites and products. Optimal Workshop’s tools are used by teams at Google, Dropbox, the BBC and NASA, to name a few. Their usability testing tools provide useful quantitative data, as well as assistance with analyzing this data.
The ChallengeTime-consuming Continuous Integration and Deployment Process
Optimal Workshop has a team of 10 developers using Ruby on Rails to develop usability measuring tools. They have been doing continuous integration ever since they started developing their first application. In the beginning, they used Java and TeamCity as their CI solution. Five years ago, the team made a decision that the Java framework they were using just wasn’t a right fit for what the company was trying to achieve.
After some investigation, they decided to rewrite their suite of applications in Ruby, with Ruby on Rails as the web framework. In order to further optimize their workflow, they also decided to look for a reliable continuous integration and deployment solution. Their current solution, Team City, was self-hosted, which meant that the team was wasting hours upon hours on configuring and maintaining CI servers. This took valuable time away from developing and improving their products.
The SolutionHosted Continuous Integration and Deployment Combined with Parallel Testing
After comprehensive research, a decision was made. The best solution would be to switch to a hosted CI solution that is easy to configure, and that would allow them to simply pay a monthly fee and not have to maintain the servers themselves.
The Best Performing CI and CD Solution — Semaphore
While investigating all the hosted CI solutions they could find, the team tested Semaphore. They quickly found that Semaphore was a perfect fit that met all of their needs. What won the team over was the ease with which they could set up CI for all their projects on Semaphore. They were also very happy with Semaphore’s performance, which was far better than that of other hosted continuous integration and deployment solutions.
“We took the time to gather and test all the other options, but we found that none of them performed as well as Semaphore. On the other platforms our tests were running slower, and on some services our test suite would refuse to run with hard to understand errors. That is the biggest reason why we’re Semaphore customers and why we’d recommend Semaphore to other teams as well.”
Ross Baird, Lead Developer at Optimal Workshop
Saving Time with Parallel Testing
The ability to run tests in parallel is what the Optimal Workshop team finds most helpful, and it’s the feature they use the most. With Semaphore in place each of their builds have 16 jobs available to run them in parallel. Having such parallel testing capability saves an hour of waiting time for each build, and it has been a long time since the team has run the entire test suite from start to end on their development environments. Optimal Workshop developers rely on Semaphore to take care of running all of their tests.
“Without parallel tests, our test suite would now run well past the hour mark from start to finish. The ability to split the test suite up across 12 or more jobs in Semaphore and have the test suite run in under 7 minutes is so important for us and it saves us a lot of development time.”
Ross Baird, Lead Developer at Optimal Workshop
Easy Automatic Deployment
In addition to using Semaphore for continuous integration, the team has also configured automatic deployment to staging and production servers, which is triggered as soon as a build passes on a preconfigured branch.
The team is looking at removing the production branch at some stage, so that as soon as something is merged to master and it passes in CI, it will be automatically deployed to Cloud 66. Connecting Semaphore to Cloud 66 is simple, since Semaphore provides an integration that allows users to set up automatic deployment in a few clicks. It’s also more convenient than going into Cloud 66 manually every time and clicking “Deploy” and faster than doing a deploy manually out of Semaphore. Automatic deployments can be easily disabled and re-enabled, which is a very useful feature for the team.
Share this story on Twitter and Facebook