Rails in the Large - Neal Ford

  • 558 views
Uploaded on

Neal Ford - Agile East 2011

Neal Ford - Agile East 2011

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
558
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
4
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. coming RSN
  • 3. metrics feedback loops automation time & space demonstrationcommunication non- intuitivity
  • 4. what OVE.com does
  • 5. the pursuitGo for the one that’ll beat theone that’ll beat the one youlast did
  • 6. .NET Rails
  • 7. quick start: october 2006Project manager Business Analyst Tech Lead Developer
  • 8. inception: Jan 17, 2007Started with 2 pairsAdded one pair every 2 weeks 8 or 9 pairs by July
  • 9. now 11 pairs of developers 8 business analysts iteration manager client principle6 quality assurance project manager
  • 10. lessons learnedtechnology isn’t as important as responsivenessto business needsdon’t try to convince too earlyspikes are your friends!demonstration over arguments
  • 11. infrastructure Rock is for Rookies: males have a tendency to lead with Rock on their opening throw
  • 12. physical infrastructure BA standalone QA integrated QApairing workstations UAT (sneak peak)XServe (Selenium Grid)
  • 13. deployment stack 10 web boxes 2 image servers 4 database serversbackground server memcache
  • 14. technical statsfeedback loops
  • 15. environment
  • 16. lessons learnedscale infrastructure opportunistically......but don’t wait too longMac OS X rockshave fun
  • 17. testing Scissors on First: play scissors as your opening move against amore experienced player
  • 18. disconnected unit testsUnitRecord and the evolution of unit tests that don’t hit the database http://github.com/dan-manges/unit-record
  • 19. unit tests
  • 20. the rule:unit tests don’t hit the database mock everything
  • 21. functional tests
  • 22. no mocking allowed in functional teststests that hit the database are slooooow
  • 23. feedback loops DeepTest http://github.com/qxjit/deep-test
  • 24. metricsautomation time & space DistributedDeepTest demonstration non- intuitivity
  • 25. Selenium grid time & space
  • 26. lessons learnedfight the battle to keep tests fastinvent stuff if you have towrite smart testsscale development infrastructure just likeproduction infrastructure
  • 27. knowledge transferPaper is the least obvious of opening moves.
  • 28. project Mingle on the wall
  • 29. cc_boardhttp://github.com/qxjit/cc_board/
  • 30. play a song when a build breaks communication play theme song upon successful checkin
  • 31. jukebox.rb currently in alphahttp://subversion.hammersforge.com/ jukebox.rb/trunk/
  • 32. pairing stations adium no email
  • 33. internal Jabber server chat rooms devs BAs QAs shared buddy list
  • 34. automatically set pair name adiumMingle card (upon commit)
  • 35. feedback lessons learned loopssoftware is more about communication thantechnologyuse information radiatorsco-location rocks communicationpairing really rockshave fun
  • 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. 1-click deploy to any environmentusing cc.rb as easy deployment tool
  • 38. rake commitrun all unit testsrun all functional testsverification (language keys)commithttp://github.com/pgr0ss/rake_commit_tasks
  • 39. canonical pairing station maintenance cap pairing_stations
  • 40. radmindhttp://rsug.itd.umich.edu/software/radmind/
  • 41. strict rules foradvancedlanguagefeaturesTell your opponentwhat you are going tothrow and then actuallythrow what you said.
  • 42. Try playing the throw that would have lost to your opponents last throwbackground processing
  • 43. evolution of asynchronous messaging
  • 44. progress bars & async upload backgrounDrb http://backgroundrb.rubyforge.org/
  • 45. 3 kinds
  • 46. use backgroundrb forsimple message queue backed by database
  • 47. (Starling) switch to a real messaging queue
  • 48. don’t know what we don’t know “buy the fanciest one we can” (just in case)project time
  • 49. technical debt when you when you add it start using itproject time
  • 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. trying to predict thefuture leads to over- engineering
  • 52. lessons learnedavoid anticipatory designgradually add complexitydon’t use databases as message queues (for toolong anyway)DBA’s can sometimes get grumpy
  • 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. not that many page views......really complex pages!
  • 55. daily web trends
  • 56. monthly web trends
  • 57. why all therochambeau stuff?
  • 58. view builds are fragile =>separate cc.rb build =>view builds are slow =>1 pair assigned as view masters
  • 59. worst...job...ever
  • 60. today’s view master assigned by yesterday’s... ...or play RPS
  • 61. http://www.worldrps.com/
  • 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. metrics feedback loops automation time & space demonstrationcommunication non- intuitivity