Controlled Chaos: A Case Study Of Introducing Rails Into An Operational NASA System - RailsConf 2011

1,802 views

Published on

A case study in introducing Rails into a public NASA Earth Science system presented by Dan Pilone and Jason Gilman at RailsConf 2011. Despite a broad investment in Java, we conducted a survey of modern development technologies including Flex, Django, JSF2 and Rails. We chose to move forward using Ruby on Rails with JRuby. This presentation discusses our experiences, including technical, process, and psychological, using RoR on a production system.

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

No Downloads
Views
Total views
1,802
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Controlled Chaos: A Case Study Of Introducing Rails Into An Operational NASA System - RailsConf 2011

  1. 1. Controlled Chaos A case study of introducing Rails into an operational NASA system Dan Pilone / Jason Gilman RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  2. 2. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  3. 3. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  4. 4. ECHO Key Metrics Support 13 Data Centers 3200 Earth Science Datasets ~100M pieces of science information ~100% uptime* RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman *excluding planned maintenanceWednesday, June 1, 2011
  5. 5. Why are we talking about this... RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  6. 6. http://pastorweasel.blogspot.com/ RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  7. 7. Why did we do it? RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  8. 8. Problem had changed RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  9. 9. WIST ECHO ECHO DB RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  10. 10. WIST ECHO ECHO DB RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  11. 11. WIST ECHO ECHO DB RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  12. 12. WIST ECHO ECHO DB RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  13. 13. Technology had changed RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  14. 14. WIST ECHO ECHO DB RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  15. 15. WIST Perl ECHO <!DOCTYPE xml PUBLIC “-//W3C//DT <html> bgcolor="red"> <body <?xml <html> bgcolor="red"> <body <h1> <h1> <body shouldnt be static. This bgcolor="red"> This shouldnt be static. </h1> <h1> </h1> This shouldnt be static. </body> </body> </h1> ECHO </html> </html> </body> DB </html> RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  16. 16. ?????? ECHO ECHO DB ? RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  17. 17. WIST ECHO ECHO DB RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  18. 18. WIST ECHO ECHO DB RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  19. 19. WIST ECHO ECHO DB REST API... RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  20. 20. But there was hope... RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  21. 21. Agile Process RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  22. 22. Very Talented Team RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  23. 23. Fantastic Customer and Management support RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  24. 24. What did we want? RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  25. 25. Happy customer RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  26. 26. Top Notch Client RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  27. 27. Happy Developers RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  28. 28. Quality Development Experience RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  29. 29. We had about 10 months... RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  30. 30. ...and 4 developers... RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  31. 31. We went shopping. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  32. 32. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman http://www.cheapbeast.com/profile-vickyWednesday, June 1, 2011
  33. 33. Prototyping is hard. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  34. 34. Developers are harder. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  35. 35. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  36. 36. Why Rails? Lots of community “sell” JRuby gave us a transition path* RailsConf RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  37. 37. What Rails offered us Developer interest and excitement Clearly the right tool for the job Hoped for a significantly reduced code base Hoped for rapid development and releases RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  38. 38. What did this impact? RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  39. 39. Everything. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  40. 40. Java Developers RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  41. 41. List<String> names = new ArrayList<String>(); Java Developers RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  42. 42. List<String> names = new ArrayList<String>(); Java Developers RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  43. 43. List<String> names = new ArrayList<String>(); Java Developers expe rts! RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  44. 44. List<String> names = new ArrayList<String>(); Java Developers expe rts! Monthly Iteration RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  45. 45. List<String> names = new ArrayList<String>(); Java Developers Dedicated Test Team expe rts! Monthly Iteration RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  46. 46. First Attempts RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  47. 47. Adopting a new language RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  48. 48. ACTFL Stages 1. Novice 2. Intermediate 3. Advanced 4. Superior http://www.languagetesting.com/scale.htm http://www.sil.org/lingualinks/languagelearning/otherresources/ gudlnsfralnggandcltrlrnngprgrm/IntroductionToGuidelinesForALa.htm RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  49. 49. Novice Can not hold a conversation "memorized survival phrases" "Where is the bathroom?" "What time is it? "Check, please." RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  50. 50. Novice Equivalent $ rails generate scaffold Post name:string title:string content:text RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  51. 51. Intermediate Conversations with pauses, inaccuracies, and self corrections Struggle to answer questions "vocabulary and syntax are strongly influenced by their first language" "I + want + beer + for + me + drink" RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  52. 52. Intermediate Equivalent class Person def getName() @name end def setName(newName) @name = newName end def self.getNames(peopleList) nameList = Array.new() for(person in peopleList) nameList.push(person.getName()) end return nameList end end RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  53. 53. Advanced "connected narrative discourse" "comprehend language related to a vast range of topics, situations and contexts" "easily process many social nuances" RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  54. 54. Advanced Equivalent class Person include XmlSerializer attr_accessor :name def self.names(people) people.map &:name end end RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  55. 55. Superior "increasing facility in abstract and hypothetical discussions" "provide lengthy and coherent narrations, all with ease, fluency, and accuracy" Ability to speak at length on abstract topics without hesitation. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  56. 56. Superior Equivalent module ActiveRecord class Base def method_missing(method_id, *arguments, &block) # generates find_by_field type methods ... end end end RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  57. 57. 100% 75% 50% 25% 0% Novice Intermediate Advanced Superior RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  58. 58. Everyone starts here 100% 75% 50% 25% 0% Novice Intermediate Advanced Superior RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  59. 59. Everyone starts here 100% 2 weeks to 2 months 75% 50% 25% 0% Novice Intermediate Advanced Superior RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  60. 60. Everyone starts here 100% 2 weeks to 2 months 75% 3 - 6 months 50% 25% 0% Novice Intermediate Advanced Superior RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  61. 61. 8 months to a year Everyone starts here 100% 2 weeks to 2 months 75% 3 - 6 months 50% 25% 0% Novice Intermediate Advanced Superior RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  62. 62. We got a little better... RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  63. 63. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  64. 64. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  65. 65. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  66. 66. git RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  67. 67. celerity git jasmine mocha FactoryGirl formtastic soap4r rspec echoe jammit sass cucumber capybara nokogiri rufus minitest webrat 2011 - Controlled Chaos - Dan Pilone - Jason Gilman xmlsimple RailsConf TestUnitWednesday, June 1, 2011
  68. 68. Deadlines were getting closer Developer unrest Working long hours We werent getting things done RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  69. 69. http://www.flickr.com/photos/ewwhite/4462922520/ RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  70. 70. Java • Got things done • Dissatisfied by the technology • Bored Unhappy RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  71. 71. Rails •We werent getting things done •Technology Unfamiliarity •Frustrated Unhappy RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  72. 72. Developer Happiness Challenged Meaningful Work Language Workplace ? RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  73. 73. Developer Happiness Challenged Meaningful Work Language Productivity Workplace ? RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  74. 74. Am I trying to understand a business problem or am I trying to figure out why bundle install just failed? RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  75. 75. http://www.flickr.com/photos/ladybeames/2896787167/ RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  76. 76. Addressing the problems Disciplined refactoring and introduction of new gems Communication Brown bags Chat rooms Pair programming Wiki RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  77. 77. http://www.flickr.com/photos/camknows RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  78. 78. Things we worried about... Maintainability Technical longevity Learning Curve Developer buy-in RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  79. 79. ...but didn’t need to. Maintainability Technical longevity Learning Curve Developer buy-in RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  80. 80. ...but didn’t need to. Lines of code 300000 Maintainability 225000 Technical longevity 150000 Learning Curve Developer buy-in 75000 0 WIST Reverb + REST RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  81. 81. ...but didn’t need to. Maintainability Technical longevity Learning Curve Developer buy-in RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  82. 82. ...but didn’t need to. Maintainability Technical longevity Learning Curve Developer buy-in RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  83. 83. ...but didn’t need to. Maintainability Technical longevity Learning Curve Developer buy-in RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  84. 84. ...but didn’t need to. Maintainability Technical longevity Learning Curve Developer buy-in RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  85. 85. What were the real problems? http://www.flickr.com/photos/stuant63/2255781557 RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  86. 86. Real Problems Learning curve Constant refactoring Cucumber testing is hard to get right Proliferation of technologies RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  87. 87. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  88. 88. Better than expected... Ruby language productivity Metaprogramming application to domain problems Wide availability and applicability of gems Community (enthusiasm, meet ups, speed of improvements in technology) RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  89. 89. It’s just Ruby 1.9 Gave us a transition path and ROI on our Java All the benefits of the JVM - performance, threading, GC, etc. Combined with Warbler allows us to leverage existing deployment model RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  90. 90. It’s just Ruby 1.9 Gave us a transition path and ROI on our Java All the benefits of the JVM - performance, threading, GC, etc. Combined with Warbler allows us to leverage existing deployment model But we actually reused less Java than we thought... RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  91. 91. Time on a logarithmic scale! REXML source: http://www.rubyinside.com/ruby-xml-performance-benchmarks-1641.html RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  92. 92. Generated WSDL Java JAXB Schemas spring-ws RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  93. 93. Would we do it again? RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  94. 94. Absolutely RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  95. 95. What would we have done differently? Not a whole lot Consultants? Training? Medium sized pilot project? Address build and deployment approaches earlier? RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  96. 96. Key Take-aways It will impact everything Communication is essential Rails has been a good choice but.. Dependent on team and management to pull it off Developer happiness = Developer Productivity Control the change RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason GilmanWednesday, June 1, 2011
  97. 97. Questions? Dan Pilone - @danpilone http://spkr8.com/t/7577 Jason Gilman - @jasongilmanWednesday, June 1, 2011

×