Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Myth of the Modular Monolith - Day 2 Keynot...

The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024

As Rails applications grow over time and turn into a so-called “ball of mud”, organizations ask themselves what’s next? Should we stay the course with a monolith or migrate to microservices? At Shopify we went down the path of modularizing our monolith and since then GitHub, Gusto, and others have followed our lead. But after 6 years it’s time to ask ourselves: “Did we fix what we set out to fix? Is this better than before?”

Eileen M. Uchitelle

September 27, 2024
Tweet

More Decks by Eileen M. Uchitelle

Other Decks in Programming

Transcript

  1. Operational ‣ Flaky tests and slow CI Architectural ‣ Lack

    of organization and structure ‣ Tight coupling & no boundaries
  2. Operational ‣ Flaky tests and slow CI ‣ Scalability of

    deployments Architectural ‣ Lack of organization and structure ‣ Tight coupling & no boundaries
  3. Operational ‣ Flaky tests and slow CI ‣ Scalability of

    deployments Organizational ‣ Dif fi cult to assign and fi nd owners Architectural ‣ Lack of organization and structure ‣ Tight coupling & no boundaries
  4. Operational ‣ Flaky tests and slow CI ‣ Scalability of

    deployments Organizational ‣ Dif fi cult to assign and fi nd owners ‣ Onboarding new hires takes too long Architectural ‣ Lack of organization and structure ‣ Tight coupling & no boundaries
  5. Operational ‣ Flaky tests and slow CI ‣ Scalability of

    deployments Organizational ‣ Dif fi cult to assign and fi nd owners ‣ Onboarding new hires is dif fi cult Architectural ‣ Lack of organization and structure ‣ Tight coupling & no boundaries
  6. 📁 app 📁 models 📄 dog.rb 📄 cat.rb 📄 tree.rb

    📄 flower.rb 📁 controllers 📄 dogs_controller.rb 📄 cats_controller.rb Fur & Foliage Application
  7. 📁 packages 📁 pets 📄 dog.rb 📄 cat.rb 📁 app

    📁 models 📁 plants 📄 tree.rb 📄 flower.rb 📁 app 📁 models
  8. 📁 packages 📁 pets 📄 dog.rb 📄 cat.rb 📁 app

    📁 models 📁 plants 📄 tree.rb 📄 flower.rb 📁 app 📁 models
  9. 📁 packages 📁 pets 📄 dog.rb 📄 cat.rb 📁 app

    📁 models 📁 plants 📄 tree.rb 📄 flower.rb 📁 app 📁 models
  10. 📁 packages 📁 pets 📄 dog.rb 📄 cat.rb 📁 app

    📁 models 📁 plants 📄 tree.rb 📄 flower.rb 📁 app 📁 models
  11. # packages/pets/package.yml metadata: stewards: - "@FurAndFoliage/pets" slack_channels: - "#help-pets" -

    "#team-pets" enforce_dependencies: strict dependencies: - packages/plants
  12. # packages/pets/package_todo.yml packages/billing: "::Billing::Subscriptions::TestHelper": violations: - dependency files: - packages/pets/test/helpers/dog_test_helper.rb

    packages/stores: "::Store::TimelineEvent": violations: - dependency files: - packages/pets/app/models/dog.rb - packages/pets/app/controllers/dogs_controller.rb
  13. # passing primitives instead of the cat AR object class

    Flower < ApplicationRecord def cat_can_eat?(cat_id) cat = Pets::CatGetter.find_cat(cat_id) cat && self.safe_for_cat?(cat) end end
  14. Operational ‣ Flaky tests and slow CI ‣ Scalability of

    deployments Organizational ‣ Dif fi cult to assign and fi nd owners ‣ Onboarding new hires is dif fi cult Architectural ‣ Lack of organization and structure ‣ Tight coupling & no boundaries
  15. Architectural Cultural ‣ Lack of organization and structure ‣ Tight

    coupling & no boundaries Operational Cultural ‣ Flaky tests and slow CI ‣ Scalability of deployments Organizational Cultural ‣ Dif fi cult to assign and fi nd owners ‣ Onboarding new hires is dif fi cult
  16. Architectural Cultural ‣ Lack of organization and structure ‣ Tight

    coupling & no boundaries Operational Cultural ‣ Flaky tests and slow CI ‣ Scalability of deployments Organizational Cultural ‣ Dif fi cult to assign and fi nd owners ‣ Onboarding new hires is dif fi cult
  17. Architectural Cultural ‣ Lack of organization and structure ‣ Tight

    coupling & no boundaries Operational Cultural ‣ Flaky tests and slow CI ‣ Scalability of deployments Organizational Cultural ‣ Dif fi cult to assign and fi nd owners ‣ Onboarding new hires is dif fi cult
  18. Architectural Cultural ‣ Lack of organization and structure ‣ Tight

    coupling & no boundaries Operational Cultural ‣ Flaky tests and slow CI ‣ Scalability of deployments Organizational Cultural ‣ Dif fi cult to assign and fi nd owners ‣ Onboarding new hires is dif fi cult
  19. Architectural Cultural ‣ Lack of organization and structure ‣ Tight

    coupling & no boundaries Operational Cultural ‣ Flaky tests and slow CI ‣ Scalability of deployments Organizational Cultural ‣ Dif fi cult to assign and fi nd owners ‣ Onboarding new hires is dif fi cult