• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Thinking Small
 

Thinking Small

on

  • 2,661 views

A defense of building small, focused, and interconnected apps instead of monolithic apps.

A defense of building small, focused, and interconnected apps instead of monolithic apps.

Statistics

Views

Total Views
2,661
Views on SlideShare
2,624
Embed Views
37

Actions

Likes
0
Downloads
0
Comments
0

5 Embeds 37

http://coderwall.com 26
http://speakerrate.com 7
http://www.linkedin.com 2
http://twitter.com 1
http://localhost:3000 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Thinking Small Thinking Small Presentation Transcript

    • Thinking SmallBig things, small packages, yadda yaddaBen Scofield / @bscofieldRubyNation / 2 April 2011
    • Specialization
    • Resource Usage
    • Big vs. Small
    • Hey, That’s me!
    • THIS VPS rockS!
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • MONOLITH ADMIN SEARCH PAYMENTS API PUBLIC DATA REPORTS HELP CACHINGTWITTER
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • Like, WHOA
    • ADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • Hmmmm.
    • M1ADMIN APIREPORTS
    • M1ADMIN APIREPORTS Ow, Quit It!
    • Ow, Quit It! M1 M2ADMIN SEARCH API PUBLICREPORTS HELP Ow, Quit It!
    • Ow, Quit It! M1 M2 M3ADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING Ow, Quit It! Ow, Quit It!
    • Shared Hosting, AIYEEEE!
    • ADMIN
    • ADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • Lame! Anyother reasonS?
    • Bye now!
    • Smaller Is Better
    • (bear with me)
    • Classes
    • Small classes are easier to:designbuildtestdebugreplacereuseunderstand
    • SOLID
    • SOLIDSingle Responsibility Principle
    • SOLID Interface Segregation Principle
    • Demeter Principle
    • MVC
    • Applications
    • Small apps are easier to:designbuildtestdebugscalereplacereusepurchase
    • Design
    • BDUF
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • LDUF
    • ADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • ADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • Mockable
    • Build
    • Build == Start
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • ADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • Ship It!
    • Baby Steps
    • Easy to Start,Easy to Finish,Motivating
    • red red green refactor
    • red green refactor
    • ASIDE:
    • $ rake test.........F............$ rake test......................
    • Test
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATA APIREPORTS HELP CACHING
    • red green refactor
    • Debug
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATA APIREPORTS HELP CACHING
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATA APIREPORTS HELP CACHING
    • Scale
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • MONOLITH M1ADMIN SEARCH PAYMENTS DATA API PUBLICREPORTS HELP CACHING
    • MONOLITH M1ADMIN SEARCH PAYMENTS DATA API PUBLIC Ow, Quit It!REPORTS HELP CACHING
    • ADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • ADMIN SEARCH PAYMENTS DATA DATA DATA DATA API PUBLIC DATA DATAREPORTS HELP CACHING
    • BL AT AN T PL UG$ heroku addons:upgrade shared-database:20gb
    • or, you know, sharding and stuff
    • Replace
    • Hey, my search sucks.
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • ADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • ADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • Should I write this in ?
    • Reuse
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • ADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • ADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • Purchase
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • ADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • Thanks for bearing with me:
    • But I’m already doing that!
    • How distinct are your functions?
    • Tests never lie
    • Code changes never lie
    • How do we do it?
    • You’re already doing it!
    • Caching
    • Payments
    • Search
    • Databases
    • The Past
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • ADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • Integration Tests
    • Isolate
    • Hey, my search sucks.
    • MONOLITHADMIN SEARCH PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • SEARCH
    • # in the applicationArticle.where([title LIKE ?, q])Article.where([tag_list LIKE ? OR title LIKE ?, q, q])# ...
    • # in the applicationArticle.search(q)Article.search(query, :include => [:tags])# article.rbclass Article < ActiveRecord::Base def self.search(query, options = {}) if options.empty? where([title LIKE ?, query]) else # ... end endend
    • Integration Tests: pass
    • Replace
    • # Gemfilegem texticle# article.rbclass Article < ActiveRecord::Base index title do title end index full do title tag_list end def self.search(query, options = {}) if options.empty? search_title(query) else # ... end endend
    • Integration Tests: pass
    • SEARCH MONOLITHADMIN PAYMENTS API PUBLIC DATAREPORTS HELP CACHING
    • Repeat!
    • THE FUTURE
    • Integration Tests
    • Plan for Modularity
    • Look for Opportunities
    • UG PL T AN ATBL
    • API-Driven Design
    • API-Driven Design
    • HTTP and REST
    • Discoverability
    • API
    • ADMIN updates schemaPUT / POST / DELETE what is editable? DATA
    • SEARCH metadata / data what should we index? DATA
    • queryPUBLIC SEARCH results metadata / data what should we index? DATA
    • queryPUBLIC SEARCH results metadata / data what should we index? DATA
    • Mountable Apps
    • Think Small
    • Smaller Is Worse?
    • M1ADMIN APIREPORTS
    • M1ADMIN APIREPORTS Ow! ... Hey, that wasn’t so bad
    • M1ADMIN APIREPORTS Ow! ... Hey, that wasn’t so bad
    • Latency
    • Reliability
    • Ben Scofield / @bscofieldhttp://spkr8.com/t/7028http://benscofield.com
    • THANKS! Ben Scofield / @bscofield http://spkr8.com/t/7028 http://benscofield.com