Cash App Yissachar Radcliffe Oct 12, 2023

From 30 Minutes Down to 10: Taming our Monolith's CI Build Times

Article Summary

Cash App's monolith CI builds were taking 30 minutes at p50. Developers were stuck waiting through multiple build cycles just to get a green merge.

The Cash App team tackled their legacy 'Franklin' service, a million-line monolith that still powers critical functionality. Despite migrating to microservices, this codebase kept growing and its slow builds were crushing developer productivity.

Key Takeaways

Critical Insight

Through nine targeted optimizations (not just throwing money at more workers), Cash App reduced their monolith's CI build times by 67% at p50.

The team discovered why simply adding more test workers actually made things worse, not better.

About This Article

Problem

Franklin's codebase had accumulated dead code and wasn't properly modularized. With over a million lines of code and thousands of dependencies, any change required a full rebuild.

Solution

Yissachar Radcliffe's team removed tens of thousands of lines of dead code and split the monolith into multiple modules. This let Gradle's remote build cache identify unchanged components and compile them in parallel.

Impact

The modularization improved cache hit ratios and enabled more parallel compilation. Build times dropped 67% overall, falling from 30 minutes to 10 minutes at the p50 mark.