Today my colleagues shared a presentation by Gusto's Alex Evanczuk.
It presents a clear ideology and tooling for carving up a monolithic Rails app into something more manageable by multiple independent teams while leaving everything in the same repo.
For me, the most important aspect of a growing Rails app is handling of complexity and interdependencies and turns out Shopify's packwerk is just what the doctor ordered - it leverages zeitwerk loader to improve on Rails' vanilla file structure, allowing to group files by business concept or sub-domain and control visibility and ownership.
Ever wanted to create a tight, team-owned API that can (indeed, must) be used by other teams, without giving them access to internals? packwerk
lets you do that.
Ever wanted to maintain SOLID and clean component architecture principles in a large Rails codebase and push abstractions/ core business logic to the core and everything else to the periphery? packwerk
lets you do that.
Check out Shopify's own writeup.
Come fall, I'll be carving out my team's components from the monolith.
Photo by Jack Sloop on Unsplash