Manage episode 517534465 series 3674688
In this episode of OnRails, Robby is joined by Miguel Conde and Peter Compernolle from Gusto, where they work on a "biolith"—two distinct Rails monoliths serving 600+ engineers. Peter leads the HIPAA-compliant benefits domain, while Miguel is extracting the time product from the main monolith. They explore how Gusto identifies boundaries, manages temporal data, handles eventual consistency, and navigates the trade-offs of GraphQL federation.
🧰 Tools & Libraries Mentioned
ActiveAdmin: Admin UI for Rails.
after_commit_everywhere: Run code after commits.
Datadog: App and CI/CD observability.
FactoryBot: Build test data.
GraphQL: API layer for SPAs.
Kafka: Event streaming backbone.
Packwerk: Enforce boundaries in monoliths.
PaperTrail: Model change auditing.
React: Front-end framework.
Sidekiq: Background job processing.
Sorbet: Gradual Ruby types.
TypeScript: Typed JavaScript.
explicit_activerecord: Guard writes to models.
Ruby Koans: Learn Ruby by practice.
Cracking the Coding Interview: Interview prep book.
Gusto Engineering Blog: Posts from Gusto engineers.
On Rails is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails.
On Rails is brought to you by The Rails Foundation, and hosted by Robby Russell of Planet Argon, a consultancy that helps teams modernize their Ruby on Rails applications.
Chapters
1. Intro and welcome to Miguel and Peter from Gusto (00:00:00)
2. What keeps them "On Rails" and Rails' speed advantage (00:01:08)
3. The "biolith" setup and HIPAA compliance separation (00:02:51)
4. Working in the larger monolith versus benefits app (00:07:55)
5. Identifying boundaries when extracting services (00:10:15)
6. How Packwerk helps define and detect dependencies (00:11:28)
7. Why Sorbet transformed Packwerk's usefulness (00:13:47)
8. Enforcing boundaries Rails doesn't give by default (00:21:49)
9. Making Active Record models private with Explicit Active Record (00:26:56)
10. Rethinking database normalization and snapshots (00:34:47)
11. Temporal and bi-temporal data for audit trails (00:39:34)
12. Company Pool system for scrubbed production data (00:46:45)
13. How GraphQL federation affects service boundaries (01:06:10)
14. Rails as a Formula One car: fast but tricky with weight (01:12:20)
15. Book recommendations and learning by building (01:29:57)
8 episodes