"Previously, we used Jenkins to handle all the various operating systems that our server component supports," says Ian Bird, Director of Android and iOS at Plex. "And although we continue to use Jenkins for certain development workflows, it wasn’t specialized for mobile and we found ourselves constantly updating dependencies. When developing for mobile there tends to be a tonne of moving components. We quickly realized managing the hardware and Jenkins setup for our mobile platforms came with a significant overhead."
"Without warning, and usually near a release, our Jenkins setup would break because of the many modifications and custom scripts we’d injected. Our development was also slowed whenever Apple released a new version of Xcode. As a result, the work required to fix or update our build infrastructure was the equivalent of losing an engineer," says Bird. "One of the team would need to stop what they were working on and dedicate their time solely to monitoring and patching the build system."
"In order to create the build system we wanted, there was a lot of custom hackery," says Bird. "And our setup was extremely fragile infrastructure to say the least."
And it’s not as if the Plex mobile team are all stationed in the same room, able to debug and collaborate on things simultaneously. Bird leads an engineering team that’s completely distributed.
"On any given day I’ll speak to team members from Scotland, England, Portugal, Spain, Australia and Sweden," says Bird. "Across timezones someone was always working, and the knowledge of how to fix our old build server wasn’t autonomous. There were times we’d have no choice but to wait until the person who could fix the problem woke up."
Having engineers in many timezones means Plex is being worked on 24/7. And while this means their product is continually improving, it also means their build infrastructure is constantly under siege.
After a particularly frustrating release, one where they desperately needed to ship a new version but the build system was so flakey that a team member ended up building and shipping the release from his local machine, Plex started looking for alternatives.
"We needed a reliable build system, so our engineering efforts could focus on developing new features, and delivering to our quickly growing global markets. And honestly, we needed something that would give us peace of mind going to bed at night, knowing the build system would stay functional while we were asleep," says Bird.
When exploring alternative build and release processes for their mobile apps, Plex needed something that was reliable, and helped to remove the complexities around collaborating within a remote team.
"With buddybuild, we found just that," says Bird.
For Bird and the rest of the Plex mobile team, buddybuild allows them to stay focused on the features and sprint on hand, without having to worry about any noise being introduced by a flakey build system.
"Buddybuild has become more than our build system, now it’s fully integrated into our review and release processes for both iOS and Android apps," says Bird.
"Since we’ve started with buddybuild, we’ve made strides towards improving our unit tests coverage on both codebases." Bird says they’ve written a tonne of new tests, and have caught many regressions before production as a result.
"We’ve also started to conduct public betas, allowing us to harness feedback from end users that we wouldn’t have seen otherwise. When we test internally, it’s near impossible to test all of our customers’ scenarios," says Bird. "But by using buddybuild to get new versions of our app to our end users early and often in development, we've significantly cut down on the number of issues and edge case bugs reported post-release."
Not only has buddybuild proven to be a reliable build system, but it’s unlocked capabilities within our development workflow we wouldn’t have thought possible," says Bird. "We’re able to work better within the mobile teams, and within the Plex team as a whole. It’s helped us to streamline our development process end to end, while giving us the support we need to quickly iterate on our product, from wherever we are in the world."