3x3: iOS Build Speed and Stability
Article Summary
LinkedIn's iOS team set an audacious goal: ship to production three times daily, with just three hours from commit to release. Here's how they actually pulled it off.
In 2016, LinkedIn's mobile engineering team documented their journey to achieve a 3x3 release cadence for their Voyager app. They started with 4.5 hour build times and needed to get under three hours while maintaining stability.
Key Takeaways
- Modular refactoring cut debug builds 50% and release builds from 2 hours to 35 minutes
- KIF framework optimizations achieved 5-10x faster UI testing, dropping from 2.5 hours to 20 minutes
- Distributed building across 10 machines reduced total time to 45 minutes
- Consolidated testing on one machine with 5 parallel simulators improved stability from 0% to 96%
- Key insight: 10 machines at 95% reliability each equals only 60% system reliability
Through code refactoring, hardware investment, and smart architecture choices, LinkedIn reduced their iOS build pipeline from 4.5 hours to 45 minutes while achieving 96% stability.
About This Article
LinkedIn's iOS build pipeline had hardware stability issues. Memory leaks in xcodebuild processes and simulator failures kept popping up, and their distributed infrastructure required manual fixes each time.
They built PoolGuardian, a monitoring system that catches simulator failures and automatically reboots the affected machines. It also cleans up stale processes and sends alerts when swap usage gets too high.
With better hardware stability, the team could stick with their distributed testing approach and handle their release schedule of three times daily without constant firefighting.