Untangling the Monorepo: Moving to Go Modules
summary
CrowdStrike untangles a nearly monolithic repo of ~400 services and libraries by incrementally extracting packages into separate modules, preserving git history with good-filter-repo, analyzing dependencies with the go dependency analysis toolkit, and vendoring converted code back during migration. An internal Athens proxy backed by S3 serves flash-frozen modules (pre-release v0.0.0 tags) while go.mod and go private settings enforce usage. Built tooling (csi, go mod guard) automates conversions; result is smaller dependency graphs, ownership per repo, and noticeably faster CI and builds.
AI-written summary · about
chapters (22)
- 0:00Intro
- 0:55What is Crowdstrike
- 2:01Positive and Negative Buzz
- 3:37Local Changes
- 4:40Crowdstrike
- 5:40MultiRepo
- 7:16Soft Skills
- 8:25Standard Problems
- 8:45Decision Time
- 9:50Solution Planning
- 10:26Dependency Analysis
- 11:02Converting to Go Modules
- 12:18Old crusty code
- 13:55Shiny new tools
- 14:22Quick CLI
- 15:50Flash Freezing
- 16:54Prerelease Tags
- 17:27Go Module Proxy
- 19:01Vanity URL
- 19:36Go Modules Proxy
- 22:05Key Takeaways
- 23:10Lessons Learned
related talks
33mHow to Safely and Efficiently Build your App with Modules
29mOne for all, all for one: The Journey to Android Monorepo
21mGit submodules: we have monorepo at home
46mWe Solved All Modular Project Problems. Want the Same?
34mOrganising Your Code and State for Governance and Self-Service
46mFrom Chaos to Cohesion: Building Modular Monoliths in the Real World
50mImplement the monolith - the one well modularized
45mMonolith to Microservices: Modularizing Fineract 1.x
