Based in Toronto, Canada, 500px is developing a photo community and marketplace designed to enhance and support the creative process for creators and buyers. More than 6 million creatives use the 500px platform to improve, showcase and monetize their work. The 500px marketplace provides buyers with the opportunity to license fresh, powerful images to use in their creative campaigns.
While working on building the 500px platform, the developers at 500px needed to set up a process that would allow their growing team to detect and solve problems quickly. They wanted to make sure that the source code of key user interactions such as galleries and photography marketplace is covered with tests that run automatically.
To take care of this, they adopted the use of automated testing and test-driven development, and started with a continuous integration (CI) system.
Before switching to Semaphore, 500px used an in-house instance of Jenkins for continuous integration. As their platform grew, Jenkins proved to be a suboptimal solution, facing the team with some technical difficulties.
500px found it difficult to maintain Jenkins and the software it needed to run on. Being responsible for the maintenance of the entire software stack running on its CI server was neither their core competency, nor did it provide the company with any business advantage.
Jenkins also did not scale well for the needs of 500px. In order to support its millions of users, 500px has created a large software system composed of multiple components. The largest software application had a test suite that would take more than an hour to complete. With many developers working on the same code base, it was necessary to scale up Jenkins to run on multiple machines, something which 500px found time consuming and difficult to do well. As a consequence, developers suffered from limited CI resources and wasted time waiting for their tests to finish.
Jenkins' complex user interface also made it difficult to onboard new engineers. With thousands of tests in their suite, and their growing team’s need to collaborate more effectively, Jenkins just wasn’t cutting it for the 500px engineering team.
500px overcame the restrictions of a self-hosted continuous integration system by migrating to the cloud-based solution provided by Semaphore. By not having to worry about maintaining complex CI infrastructure, the team can concentrate on the important stuff — building and improving their service.
Scaling on the go proved to be the first and most important advantage for 500px. “Semaphore allows us to build anywhere from two to twenty branches in parallel, each one in a threaded environment. We had thousands of tests that were running for a really long time and with Semaphore we got the build to run in under 20 minutes”, says Artem Lypiy, QA Lead at 500px.
When 500px needs more bandwidth to run their tests because they've developed more code or added developers on board, they have it on Semaphore right away.
“It’s really easy to scale with Semaphore compared to Jenkins, where a lot of maintenance and overhead is required. When we need more concurrency we just upgrade. Semaphore just works for us.”
Through a built-in integration with Slack, Semaphore keeps 500px’s developers updated on their build status in real time. “Semaphore is also part of our daily standup, when we discuss what's the status of work in progress, what's passing and what's falling.”
With a team distributed around three cities and two time zones, having a central place to test all source code and communicate the status is a major benefit for collaboration between the people in the engineering team. “If the build is green on Semaphore, that means that the critical tests are passing successfully and we can deploy with confidence.”
Thanks to Semaphore's easy-to-grasp interface, 500px found that it’s easy to onboard new engineers to the continuous integration process. “With Semaphore's Organizations feature, it’s really easy to manage large teams. Managing access permissions and adding limitations takes only a few clicks.”
With on-demand scalability, easy-to-use interface and technical support from the engineering team, 500px has found Semaphore to be a stable and fast continuous integration solution, improving their overall development process.