0
ThoughtWorks                                    Rails in the Large:                                Building the Biggest (E...
coming   RSN
metrics       feedback        loops        automation                                   time & space                      ...
what OVE.com does
the pursuitGo for the one that’ll beat theone that’ll beat the one youlast did
.NET   Rails
quick start: october 2006Project manager   Business Analyst      Tech Lead    Developer
inception: Jan 17, 2007Started with 2 pairsAdded one pair every 2 weeks                               8 or 9 pairs by July
now  11 pairs of developers             8 business analysts                 iteration manager                             ...
lessons learnedtechnology isn’t as important as responsivenessto business needsdon’t try to convince too earlyspikes are y...
infrastructure                 Rock is for Rookies:                       males have a                   tendency to lead ...
physical infrastructure                         BA                         standalone QA                         integrate...
deployment stack  10 web boxes      2 image servers                                      4 database                       ...
technical statsfeedback loops
environment
lessons learnedscale infrastructure opportunistically......but don’t wait too longMac OS X rockshave fun
testing        Scissors on First:    play scissors as your opening move against amore experienced player
disconnected unit testsUnitRecord and the evolution of unit  tests that don’t hit the database http://github.com/dan-mange...
unit tests
the rule:unit tests don’t hit the       database   mock everything
functional tests
no mocking allowed in   functional teststests that hit the database are           slooooow
feedback loops               DeepTest         http://github.com/qxjit/deep-test
metricsautomation                     time & space             DistributedDeepTest                                    demo...
Selenium grid           time & space
lessons learnedfight the battle to keep tests fastinvent stuff if you have towrite smart testsscale development infrastruct...
knowledge transferPaper is the least obvious   of opening moves.
project Mingle on the         wall
cc_boardhttp://github.com/qxjit/cc_board/
play a song when a    build breaks         communication    play theme song upon      successful checkin
jukebox.rb            currently in alphahttp://subversion.hammersforge.com/          jukebox.rb/trunk/
pairing stations     adium    no email
internal Jabber server     chat rooms            devs            BAs            QAs      shared buddy list
automatically set pair       name         adiumMingle card (upon commit)
feedback             lessons learned   loopssoftware is more about communication thantechnologyuse information radiatorsco...
automateeverything    When playing with   someone who is notexperienced at the RPS,look out for double runs  or, in other ...
1-click deploy to any      environmentusing cc.rb as easy deployment              tool
rake commitrun all unit testsrun all functional testsverification (language keys)commithttp://github.com/pgr0ss/rake_commit...
canonical pairing station     maintenance    cap pairing_stations
radmindhttp://rsug.itd.umich.edu/software/radmind/
strict rules foradvancedlanguagefeaturesTell your opponentwhat you are going tothrow and then actuallythrow what you said.
Try playing the throw that would have                  lost to your opponents last throwbackground               processing
evolution of            asynchronous              messaging
progress bars & async upload     backgrounDrb     http://backgroundrb.rubyforge.org/
3 kinds
use backgroundrb forsimple message queue backed by database
(Starling) switch to a real messaging queue
don’t know what we don’t know “buy the fanciest one we can” (just in case)project time
technical debt    when you        when you    add it          start using itproject time
don’t know what we don’t know “buy the fanciest one we can” (just in case) pay $$$ for technical debt… …that you may never...
trying to predict thefuture leads to over-     engineering
lessons learnedavoid anticipatory designgradually add complexitydon’t use databases as message queues (for toolong anyway)...
performance &                 optimizationWhen all else fails, go with paper: Statistically, in competition play, it   has...
not that many page      views......really complex pages!
daily web trends
monthly web trends
why all therochambeau stuff?
view builds are fragile =>separate cc.rb build =>view builds are slow =>1 pair assigned as view        masters
worst...job...ever
today’s view master    assigned by   yesterday’s... ...or play RPS
http://www.worldrps.com/
ThoughtWorks                                      ?’s                                     This work is licensed under the ...
metrics       feedback        loops        automation                                   time & space                      ...
Rails in the Large - Neal Ford
Rails in the Large - Neal Ford
Rails in the Large - Neal Ford
Rails in the Large - Neal Ford
Rails in the Large - Neal Ford
Upcoming SlideShare
Loading in...5
×

Rails in the Large - Neal Ford

611

Published on

Neal Ford - Agile East 2011

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
611
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Rails in the Large - Neal Ford"

  1. 1. ThoughtWorks Rails in the Large: Building the Biggest (Enterprise) Rails Application in the World PAUL GROSS software developer / consultant NEAL FORD software architect / meme wrangler ThoughtWorks ThoughtWorks nford@thoughtworks.compgross@thoughtworks.com 3003 Summit Boulevard, Atlanta, GA 30319200 E. Randolph St, 25th Floor, Chicago, IL 60601-6501 www.nealford.compgross@thoughtworks.com www.thoughtworks.comwww.pgrs.net blog: memeagora.blogspot.comwww.thoughtworks.com twitter: neal4d
  2. 2. coming RSN
  3. 3. metrics feedback loops automation time & space demonstrationcommunication non- intuitivity
  4. 4. what OVE.com does
  5. 5. the pursuitGo for the one that’ll beat theone that’ll beat the one youlast did
  6. 6. .NET Rails
  7. 7. quick start: october 2006Project manager Business Analyst Tech Lead Developer
  8. 8. inception: Jan 17, 2007Started with 2 pairsAdded one pair every 2 weeks 8 or 9 pairs by July
  9. 9. now 11 pairs of developers 8 business analysts iteration manager client principle6 quality assurance project manager
  10. 10. lessons learnedtechnology isn’t as important as responsivenessto business needsdon’t try to convince too earlyspikes are your friends!demonstration over arguments
  11. 11. infrastructure Rock is for Rookies: males have a tendency to lead with Rock on their opening throw
  12. 12. physical infrastructure BA standalone QA integrated QApairing workstations UAT (sneak peak)XServe (Selenium Grid)
  13. 13. deployment stack 10 web boxes 2 image servers 4 database serversbackground server memcache
  14. 14. technical statsfeedback loops
  15. 15. environment
  16. 16. lessons learnedscale infrastructure opportunistically......but don’t wait too longMac OS X rockshave fun
  17. 17. testing Scissors on First: play scissors as your opening move against amore experienced player
  18. 18. disconnected unit testsUnitRecord and the evolution of unit tests that don’t hit the database http://github.com/dan-manges/unit-record
  19. 19. unit tests
  20. 20. the rule:unit tests don’t hit the database mock everything
  21. 21. functional tests
  22. 22. no mocking allowed in functional teststests that hit the database are slooooow
  23. 23. feedback loops DeepTest http://github.com/qxjit/deep-test
  24. 24. metricsautomation time & space DistributedDeepTest demonstration non- intuitivity
  25. 25. Selenium grid time & space
  26. 26. lessons learnedfight the battle to keep tests fastinvent stuff if you have towrite smart testsscale development infrastructure just likeproduction infrastructure
  27. 27. knowledge transferPaper is the least obvious of opening moves.
  28. 28. project Mingle on the wall
  29. 29. cc_boardhttp://github.com/qxjit/cc_board/
  30. 30. play a song when a build breaks communication play theme song upon successful checkin
  31. 31. jukebox.rb currently in alphahttp://subversion.hammersforge.com/ jukebox.rb/trunk/
  32. 32. pairing stations adium no email
  33. 33. internal Jabber server chat rooms devs BAs QAs shared buddy list
  34. 34. automatically set pair name adiumMingle card (upon commit)
  35. 35. feedback lessons learned loopssoftware is more about communication thantechnologyuse information radiatorsco-location rocks communicationpairing really rockshave fun
  36. 36. automateeverything When playing with someone who is notexperienced at the RPS,look out for double runs or, in other words, the same throw twice.
  37. 37. 1-click deploy to any environmentusing cc.rb as easy deployment tool
  38. 38. rake commitrun all unit testsrun all functional testsverification (language keys)commithttp://github.com/pgr0ss/rake_commit_tasks
  39. 39. canonical pairing station maintenance cap pairing_stations
  40. 40. radmindhttp://rsug.itd.umich.edu/software/radmind/
  41. 41. strict rules foradvancedlanguagefeaturesTell your opponentwhat you are going tothrow and then actuallythrow what you said.
  42. 42. Try playing the throw that would have lost to your opponents last throwbackground processing
  43. 43. evolution of asynchronous messaging
  44. 44. progress bars & async upload backgrounDrb http://backgroundrb.rubyforge.org/
  45. 45. 3 kinds
  46. 46. use backgroundrb forsimple message queue backed by database
  47. 47. (Starling) switch to a real messaging queue
  48. 48. don’t know what we don’t know “buy the fanciest one we can” (just in case)project time
  49. 49. technical debt when you when you add it start using itproject time
  50. 50. don’t know what we don’t know “buy the fanciest one we can” (just in case) pay $$$ for technical debt… …that you may never justifyproject time
  51. 51. trying to predict thefuture leads to over- engineering
  52. 52. lessons learnedavoid anticipatory designgradually add complexitydon’t use databases as message queues (for toolong anyway)DBA’s can sometimes get grumpy
  53. 53. performance & optimizationWhen all else fails, go with paper: Statistically, in competition play, it has been observed that scissors is thrown the least often.
  54. 54. not that many page views......really complex pages!
  55. 55. daily web trends
  56. 56. monthly web trends
  57. 57. why all therochambeau stuff?
  58. 58. view builds are fragile =>separate cc.rb build =>view builds are slow =>1 pair assigned as view masters
  59. 59. worst...job...ever
  60. 60. today’s view master assigned by yesterday’s... ...or play RPS
  61. 61. http://www.worldrps.com/
  62. 62. ThoughtWorks ?’s This work is licensed under the Creative Commons Attribution-Share Alike 3.0 License. http://creativecommons.org/licenses/by-sa/3.0/us/ PAUL GROSS software developer / consultant NEAL FORD software architect / meme wrangler ThoughtWorks ThoughtWorks nford@thoughtworks.compgross@thoughtworks.com 3003 Summit Boulevard, Atlanta, GA 30319200 E. Randolph St, 25th Floor, Chicago, IL 60601-6501 www.nealford.compgross@thoughtworks.com www.thoughtworks.comwww.pgrs.net blog: memeagora.blogspot.comwww.thoughtworks.com twitter: neal4d
  63. 63. metrics feedback loops automation time & space demonstrationcommunication non- intuitivity
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×