The document discusses how AT&T Interactive, formerly known as Yellowpages.com, uses Ruby and Ruby on Rails extensively. It overhauled Yellowpages.com using Rails and now has one of the largest Rails sites. It discusses how Rails is used for the website tier and a Merb-based services tier. It also describes using Ruby for other projects including mobile apps and internal tools. AT&T Interactive contributes to many open source Ruby projects and conducts research on new technologies using Ruby.
5. Coby Randquist
Director, Web Development
at
AT&T Interactive
crandquist@yellowpages.com
Joined the company in April of 2008, after the Big Re-Write
6. Partner in
http://www.confreaks.com
Expert recording and networking services for conferences, seminars and workshops
Yukihiro ‘Matz’ Matsumoto - speaking at Lone Star Ruby Conference 2008
8. Audience Poll
Self Employed
0 - 10 in product development
10 - 25 in product development
25 + in product development
9. A bit about us
Lots of small teams
– web-tier currently three teams 3-5 developers + manager
– HTML CSS team
– service-tier 3-5 developers + manager
– everyone does TDD
– test-automation team 3-5 developers + manager
– mobile development teams (being built up)
– product teams 4 product managers for web, 1 product manager for
each mobile platform
– creative 3-5 designers + manager - comps
– usability 2-3 information architects + manager - wire frames and all
human use factor analysis
– systems architecture 3-5 architects + manager (application support,
performance)
– software architecture 3-5 architects + manager ( web, services,
windows, search, data)
10. The many facets of Ruby at AT&T Interactive
One of the largest sites running on ruby and rails.
Consistently in the top 30 trafficked web-sites
27 million monthly unique visitors
165+ million page views
11. The Big re-write of YELLOWPAGES.COM
The re-write for us, is ancient history.
See John Straw’s presentation from RailsConf 2008 for
more details.
http://en.oreilly.com/rails2008/public/schedule/detail/2082
We replaced the Java based legacy application with a Ruby
on Rails app and service-tier, that was developed with a
small team (4 developers + product folks).
Launched June of 2007 on Rails 1.2.3
Site has been live on Rails for nearly 18 months.
Currently running on Rails 2.1.1
12. How we scaled rails
See DHH’s article from
“It’s boring to scale with Ruby on Rails” from July of 2005
http://www.loudthinking.com/arc/000479.html
Load Balancer
Data Center Data Center
Load Balancer Load Balancer
Web-Tier Web-Tier
Load Balancer Load Balancer
Service Tier Service Tier
Load Balancer Load Balancer
Search Engine / Oracle Cluster Search Engine / Oracle Cluster
13. The web-tier
Ruby on Rails - 8,415 LOC
Approximately 20 servers per data center
16 Mongrels per server
Minimal Active Record
Communicates with the Services Tier
Asset Packaging, Content Distribution Network with Akamai
and AT&T
14. The service-tier (today)
Ruby on Rails - 10,108 LOC
Approximately 8 servers per data center
30 mongrels on each server
memcached running on each server
ruby wrapper to our FAST search engine
oracle client for communications with Oracle Clusters
15. So how else do we use ruby?
Our production environment runs a custom compile of ruby.
– the key compilation option is disabling the native thread used for
timing, leading to a 20-30% performance boost from the reduced
context-switch overhead (--disable-pthreads). Most distros
compile with pthreads support to allow compatibility with Tcl/Tk
libraries, but other than that Ruby 1.8 doesn’t benefit from using
the extra native thread.
– The rest of it is to make life easier for our operation center
– Ruby 1.8.6 p114 base + security patches
– standalone RPM, doesn’t interfere with OS provided RPM
– bundled with Rubygems
We host our own internal gem server to maximize control over
production environments.
16. It’s not all rails, or at least it won’t be
Our services tier is currently being re-written on Merb!
Why?
– Rails footprint for our app - 60MB per mongrel
– Merb footprint for our app - 25MB per mongrel
Performance - testing is not yet complete, but initial results
are promising enough to do a full re-write.
Effort required 3 developers, approximately 8 weeks.
17. Mobile platforms and ruby
Native iPhone app available in the App Store, runs against a
rails service app that sits in front of our service tier.
Same model is in development for other mobile devices
including the Google Android.
18. Our commitment to Open Source
Our developers have contributed to Rails, Merb, Sequel, and
many other open source projects.
We promote community participation, some projects from
employees of AT&T Interactive:
– waves - Resource-oriented open source Ruby framework for
Web apps
– functors - patterned based dispatch for Ruby
– kablame - easily summarize who has done how much on work
on your code base
– crufty - find unused code with ease
– hoshi - a library for creating real first-class HTML/XML views
– live-console - a ruby gem for providing irb over channels other
than stdio
19. And even more - Research & Development
AT&T Interactive’s Research & Development group is building
out waves, and hoshi.
Waves uses bacon as it’s testing framework
They have written a rack handler for jetty, and are currently
developing none branded apps, Speak 4 it, and Need 2 Pee.
Both of which will be in the App Store soon, running a native
iPhone client against Waves on Jruby and jetty behind
nginx on Amazon’s EC2 for dynamic scaleability.
Additional research is being done with search, natural
language recognition, speech recognition, and a lot more...
20. Conference created content
Don’t get too big...
– Small 3-5 developers + manager(hands on)
– Mockup to HTML is separate
– Still experimenting with pairing
Interviewing
– Code screening in the form of a test class plus requirements
– Short turn around
– each candidate is decided on independent of all others
– open source and community involvement count
Version Control
– Subversion for production and deployment
– git-svn for life
– most developers use git and gitjour then git-svn back into primary
repository
21. What does the name change mean?
AT&T Interactive means
– we will be building out additional
properties in the future
– we’ll take our passion for ruby to
additional properties
– we’re continuing to hire
passionate developers
– we get to build even more cool
stuff
Drink the Ruby Kool-aid