At Stripe, we manage a codebase of tens of millions of lines of Ruby with many tightly coupled components. With our business shifting towards microservices, we found it necessary to decompose this code into reusable building blocks. How do you break apart a monolith a decade in the making? What practices could help a small codebase avoid unwanted technical debt?
Building on top of the Sorbet static type system for Ruby, we’ve created a suite of tools and approaches for managing and breaking up tangled dependency cycles, a practice we refer to as “detangling”. In this talk, we’ll cover the approaches we’ve used and the tooling we’ve built to cut apart a tightly-coupled codebase without sacrificing forward momentum on new features.
Speaker
![](https://qconsf.com/sites/qcon_sf/files/styles/medium/public/pictures/2024-07/Jake%20Zimmerman.jpg?itok=_lsmwYSt)
Jake Zimmerman
Tech Lead of Sorbet @Stripe
Jake has been at Stripe for the last 7 years, 6 of which he's spent working on Sorbet, a type checker for Ruby. His focus is on using types to make Ruby developers more productive: improving the type system, building type-driven tooling, and making sure that type checking is fast.
Jake first became interested in types while attending CMU, meaning he's still a recovering Standard ML enthusiast. Outside of work, he loves anything that takes him outdoors.