Monoliths Between Microservices
summary
Rails apps split into component-based monoliths using Rails engems (engines + local gems) and a concrete recipe: namespace isolation, Gemfile eval_gemfile sync, shared lock via a root Gemfile, Combustion for dummy apps, migrations via extra migration paths, ActiveSupport load hooks and a Base and Behavior convention, CI that runs tests only for dirty engines, and pub/sub via railseventstore wrapped by active_event_store wrapper. This is applied to Common/Kin (connect_by, meet_by, chat_by, perks_by, admin UI) with faster isolated tests and extractability to services.
AI-written summary · about
chapters (39)
- 0:00Monoliths Between Microservices
- 2:06Components
- 2:54Shopify
- 3:30Hanami
- 3:51Elixir
- 7:26Phase #1: Namespaces
- 8:13Our mission evolves
- 8:44Phase #2: Engines & Gems
- 9:00The Modular Monolith: Rails Architecture
- 10:12Crash Course in Engines
- 11:53Popular Engines
- 14:03Common Engines
- 15:44Dependencies
- 15:55Path/Git problem
- 16:37eval_gemfile
- 17:19Shared Gemfiles
- 17:47Keep Versions N'Sync
- 19:02transdeps: cons
- 19:17Syncing Versions 2.0
- 21:18Bundler.require
- 22:02BUNDLE_GEMFILE: Tips
- 22:25DB vs. Engines
- 22:48Migrations. Option #1
- 23:58Seeds
- 24:23Testing. Option #1
- 24:59Combustion
- 25:36Engines on CI
- 26:23ci/is-dirty
- 27:58Base & Behaviour
- 30:13Modify Models
- 30:33Load Hooks
- 31:13Example
- 31:50Solution
- 33:59Active Event Store
- 35:21Extreme Case
- 35:54Common Case
- 36:16Main App
- 39:04Why engines?
- 39:20Why not engines?
related talks
38mAll you need is Rails (Engines): Compartmentalising your Monolith
35mWrangling Large Rails Codebases
26mMonolith-ifying perfectly good microservices
34m"Taming your Rails monolith"
33mRefactoring Towards Component-based Rails Architectures
32mComponent-based Architectures in Ruby and Rails
21mTaming Monoliths Without Microservices
35mModularizing Rails Monoliths One Bite at a Time
