From 1 to 30: How to Refactor 1 Monolithic Application into 30 Independently Maintainable Applications

Jonathan Palley (Idapted Ltd.), Lei Guo (Idapted Ltd)
General
Location: Ballroom IV
Average rating: ****.
(4.04, 70 ratings)

As your business grows bigger, you just can’t stop adding new models/controllers to your original rails application – resulting in a messy, unmaintainable and difficult to deploy monolithic application. Its time to refactor. This talk will share our experience, results and best practices in splitting a single rails “application-system” into 30 independently maintainable yet interconnected applications.

After two and a half years of development (starting in pre-Rails 1.0 days!), our live-trainer English learning system now supported multiple roles (learner/trainer/trainer supervisor/sales/materials creation/support/etc) and an exhaustive list of features to support our complex business processes. We set ourselves a year-long goal of splitting this monolithic system into small cooperating applications that could be developed independently by individual developers. At the same time, we could not lose the usability cohesiveness and data-interdependence that defined the power of our system.

Through numerous iterations, many mistakes and a bit of pure-luck we developed an optimized process for the refactor and best practices for making 30 independent rails apps behave as one. The results: lower development time, greater stability and scalability and much higher developer happiness.

We’ll talk about specific code, measurements, pitfalls, plugins, process and best practices to answer questions such as:

  • How to know where to split single applications into many. How to measure the result.
  • How the applications should interact with each other. How to reduce administration and DRY configuration applications.
  • How to share data among applications.
  • How to DRY for common logic.
  • How to make a consistent user experience.
  • How to interact with non-Ruby technology; in our case Erlang, FreeSWITCH (VoIP) and Flex

Jonathan Palley

Idapted Ltd.

Jonathan Palley has developed education technology for over 10 years and is co-founder at Idapted. He’s spoken frequently about Rails, iterative development and education technology at such events as SD2C ‘08 and ’09 (China’s largest development conference), The British Council English Research Symposium, RailsConf (‘07), ClueCon, and GloCALL. He was the first person to start an in-house Rails development team in Beijing (where he lives) and has fond memories of trying to build his own Rails plugin system before one existed. He studied physics and theater at Stanford University and can be seen performing monthly improv-comedy shows in Beijing’s theater district.

Lei Guo

Idapted Ltd

GuoLei is System Architect at Idapted developing a live-online learning system that connects trainers in the U.S. to English learners in China. In the past year over 30,000 lessons were delivered using the Idapted platform and it is the sole platform used for live training by the British Council, the pre-eminent global authority in English language learning. GuoLei began his enlightened Rails life in 2007 after years in the trenches developing Java software for the Central Government. He has a master in Computer Science from Beijing University of Aeronautics & Astronautics.

Comments on this page are now closed.

Comments

Picture of Shirley  Bailes
Shirley Bailes
06/11/2010 11:07am EDT

@andrew: we only have video of the keynotes. sessions were not recorded. but the slides are available above.

Andrew Hooker
06/10/2010 11:07pm EDT

Is there any chance video of this will be posted?

Jonathan Crossman
06/10/2010 10:37pm EDT

This was definitely my favorite talk. I wish it could have been broken into 3 sessions that just went the whole day. I would love to see some code whenever you’re ready to start sharing some of it.

Paul Swagerty
06/10/2010 10:15pm EDT

This was seriously the best talk at the conference. It could have been twice as long. Your techniques are quite enlightening. I look forward to following your progress on the open sourcing side of things. I also would have loved to see some of the “CoreService” code that was developed.

Picture of Mark J. Levitt
Mark J. Levitt
06/10/2010 5:57pm EDT

@Yi, it looks like the slides are up. See link above (and here).

Yi Wen
06/10/2010 5:38pm EDT

Can I find your slides anywhere? Thanks

Andres Paglayan
06/10/2010 5:36pm EDT

It was enlightening seeing you guys sharing your experience. The approach will probably work great as a Developer Management technique for big apps.

I am still in search of the light for a big app made out of really distributed inter-apps.

Brad Bennett
06/10/2010 4:00pm EDT

The only reason that this wasn’t the best presentation that I saw at railsconf was because questions weren’t held until the end. Had you been allowed to get through the entire talk it would’ve been my favorite. I think your situation is one that a lot of people can relate to and the more you can share of your experience the better. Thanks!

Matt Scilipoti
06/10/2010 3:19pm EDT

I wish it had more time AND that it was earlier in the Conference. Thanks for sharing!

Bob McClellan Jr
06/10/2010 3:15pm EDT

I only wish there was more time for the presentation.

Jonathan Palley
04/16/2010 12:32am EDT

Thanks guys. Let us know any particular areas/concerns we can go more in depth on. Looking forward to it.

@Pat – would be good to synchronize on what you are talking about to build off each other. We’ll let you know our travel schedules once booked!

Picture of Pat Maddox
Pat Maddox
04/15/2010 6:23pm EDT

Looks awesome & ties heavily into what I’ve been thinking about / working on lately, and will be speaking on at RailsConf. Can’t wait!

David James
04/15/2010 2:04pm EDT

Looking forward to it. Luigi and I at Sunlight have worked on a Web platform where the API lives at the center of a Web app and data importers.

co-presented by Ruby Central, Inc. O'Reilly
  • Engine Yard
  • Heroku
  • 8th Light
  • Blue Box Group
  • InfoEther
  • JetBrains
  • New Relic
  • Open Hosting
  • Rhomobile
  • WyeWorks
  • Linux Pro Magazine
  • Chargify

Sponsorship Opportunities

For information on exhibition and sponsorship opportunities at RailsConf, contact Yvonne Romaine at yromaine@oreilly.com.

Download the RailsConf Sponsor/Exhibitor Prospectus

Media Partner Opportunities

For information on trade opportunities with O'Reilly conferences or contact mediapartners@ oreilly.com

Program Ideas

Send us your suggestions for speakers, topics, and activities to rails-idea@oreilly.com.

Press and Media

For media-related inquiries, contact Maureen Jennings at maureen@oreilly.com.

RailsConf Newsletter

To stay abreast of conference news please sign up for the RailsConf newsletter (login required)

Contact Us

View a complete list of RailsConf 2010 contacts.