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.
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Controlled Chaos: A Case Study Of Introducing Rails Into An Operational NASA System - RailsConf 2011
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 Gilman
Wednesday, June 1, 2011
2. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
3. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
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 maintenance
Wednesday, June 1, 2011
5. Why are we talking about this...
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
7. Why did we do it?
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
8. Problem had changed
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
9. WIST
ECHO
ECHO
DB
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
10. WIST
ECHO
ECHO
DB
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
11. WIST
ECHO
ECHO
DB
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
12. WIST
ECHO
ECHO
DB
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
13. Technology had changed
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
14. WIST
ECHO
ECHO
DB
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
15. WIST
Perl
ECHO
<!DOCTYPE xml PUBLIC “-//W3C//DT
<html> bgcolor="red">
<body
<?xml
<html> bgcolor="red">
<body
<h1>
<h1>
<body shouldn't be static.
This bgcolor="red">
This shouldn't be static.
</h1> <h1>
</h1> This shouldn't be static.
</body>
</body> </h1>
ECHO </html>
</html> </body>
DB </html>
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
16. ??????
ECHO
ECHO
DB
?
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
17. WIST
ECHO
ECHO
DB
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
18. WIST
ECHO
ECHO
DB
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
19. WIST
ECHO
ECHO
DB
REST API...
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
20. But there was hope...
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
21. Agile Process
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
22. Very Talented Team
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
23. Fantastic Customer and
Management support
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
24. What did we want?
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
25. Happy customer
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
26. Top Notch Client
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
27. Happy Developers
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
28. Quality Development
Experience
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
29. We had about 10 months...
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
30. ...and 4 developers...
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
31. We went shopping.
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
32. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman http://www.cheapbeast.com/profile-vicky
Wednesday, June 1, 2011
33. Prototyping is hard.
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
34. Developers are harder.
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
35. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
36. Why Rails?
Lots of community “sell”
JRuby gave us a transition path*
RailsConf
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
38. What did this impact?
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
39. Everything.
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
40. Java Developers
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
41. List<String> names = new
ArrayList<String>();
Java Developers
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
42. List<String> names = new
ArrayList<String>();
Java Developers
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
43. List<String> names = new
ArrayList<String>();
Java Developers
expe
rts!
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
44. List<String> names = new
ArrayList<String>();
Java Developers
expe
rts! Monthly Iteration
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
45. List<String> names = new
ArrayList<String>();
Java Developers
Dedicated Test
Team expe
rts! Monthly Iteration
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
46. First Attempts
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
47. Adopting a new language
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
50. Novice Equivalent
$ rails generate scaffold
Post name:string title:string
content:text
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
57. 100%
75%
50%
25%
0%
Novice Intermediate Advanced Superior
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
58. Everyone starts here
100%
75%
50%
25%
0%
Novice Intermediate Advanced Superior
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
62. We got a little better...
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
63. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
64. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
65. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
66. git
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
68. Deadlines were getting closer
Developer unrest
Working long hours
We weren't getting things done
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
70. Java
• Got things done
• Dissatisfied by the technology
• Bored
Unhappy
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
71. Rails
•We weren't getting things done
•Technology Unfamiliarity
•Frustrated
Unhappy
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
72. Developer Happiness
Challenged
Meaningful Work Language
Workplace
?
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
73. Developer Happiness
Challenged
Meaningful Work Language
Productivity Workplace
?
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
78. Things we worried about...
Maintainability
Technical longevity
Learning Curve
Developer buy-in
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
79. ...but didn’t need to.
Maintainability
Technical longevity
Learning Curve
Developer buy-in
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
81. ...but didn’t need to.
Maintainability
Technical longevity
Learning Curve
Developer buy-in
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
82. ...but didn’t need to.
Maintainability
Technical longevity
Learning Curve
Developer buy-in
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
83. ...but didn’t need to.
Maintainability
Technical longevity
Learning Curve
Developer buy-in
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
84. ...but didn’t need to.
Maintainability
Technical longevity
Learning Curve
Developer buy-in
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
85. What were the real problems?
http://www.flickr.com/photos/stuant63/2255781557
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
86. Real Problems
Learning curve
Constant refactoring
Cucumber testing is hard to get right
Proliferation of technologies
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
87. RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
92. Generated
WSDL Java
JAXB
Schemas spring-ws
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
93. Would we do it again?
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
94. Absolutely
RailsConf 2011 - Controlled Chaos - Dan Pilone - Jason Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
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 Gilman
Wednesday, June 1, 2011
97. Questions?
Dan Pilone - @danpilone
http://spkr8.com/t/7577
Jason Gilman - @jasongilman
Wednesday, June 1, 2011