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

Taming Monoliths without Microservices - RubyConf AU 2019

Kelly Sutton
February 07, 2019

Taming Monoliths without Microservices - RubyConf AU 2019

Kelly Sutton

February 07, 2019
Tweet

More Decks by Kelly Sutton

Other Decks in Programming

Transcript

  1. 1 # app/models/company.rb 2 class Company < ApplicationRecord 3 has_many

    :employees 4 end 5 6 # app/models/employee.rb 7 class Employee < ApplicationRecord 8 belongs_to :company 9 end kellysutton.com
  2. 1 # app/models/company.rb 2 class Company < ApplicationRecord 3 has_many

    :employees 4 end 5 6 # app/models/employee.rb 7 class Employee < ApplicationRecord 8 belongs_to :company 9 end Do we need this? kellysutton.com
  3. 1 # app/services/company_signed_up.rb 2 class CompanySignedUp 3 def self.call(company) 4

    CompanyMailer.welcome_email(company) 5 StatsTracker.company_signed_up(company) 6 end 7 end kellysutton.com
  4. 1 # app/services/company_signed_up.rb 2 class CompanySignedUp 3 def self.call(company) 4

    user_first_name = company.admin_first_name 5 email = company.admin_email 6 7 CompanyMailer.welcome_email(email, user_first_name) 8 StatsTracker.company_signed_up(company.id) 9 end 10 end kellysutton.com
  5. 1 # app/models/company.rb 2 class Company < ApplicationRecord 3 after_create

    :send_update_email, if: :has_email? 4 5 private 6 7 def send_update_email 8 CompanyMailer.welcome_email(self) 9 end 10 end kellysutton.com
  6. 1 # app/services/create_company.rb 2 class CreateCompany 3 def self.call(company_params) 4

    company = Company.create!(company_params) 5 6 CompanyMailer.welcome_email(company) 7 end 8 end kellysutton.com
  7. –Kent Beck “Make the hard change easy (this may be

    hard), then make the easy change.” kellysutton.com
  8. References • Bernhardt, Gary. “Boundaries.” 2012. • Bernhardt, Gary. “Functional

    Core, Imperative Shell.” 2012. • Evans, Eric. “Domain-Driven Design: Tackling Complexity in the Heart of Software.” 2003. • Fowler, Martin, et al. “Refactoring: Improving the Design of Existing Code.” 1999. • Feathers, Michael. “Working Effectively with Legacy Code.” 2004. • Hickey, Rich. “Simple Made Easy.” 2011. • Hickey, Rich. “The Value of Values.” 2012. • Scott, James C. “Seeing Like a State.” 1999. • Searls, Justin. “My Preferred Method of TDD.” 2017 • Spolsky, Joel. “Things You Should Never Do, Part I.” 2006.
  9. Special Thanks • Noa Elad • Matan Zruya • Sihui

    Huang • Natalie Wong • Karlo Hoa • Amelie Meyer-Robinson • Quentin Balin