Geekon: I-Tier

at October 7th, 2013

Today is exciting: we’ve completed a year-long project to move Groupon’s web traffic from our legacy Ruby on Rails application to Node.js. We’ve been working hard on this transition and have learned a lot along the way. Groupon will be one of the largest production deploys of Node.js worldwide. We’re currently serving ~50,000rpm and our overall response times have dropped dramatically. Over the next few months we’ll be releasing the libraries we used to power our new Node.js platform and we will be blogging stories about this intense transition.

Some history: Groupon started as a monolithic Ruby on Rails app. Over the last year and a half we’ve been transitioning to a service oriented architecture (SOA) for all of our back-end services. We applied the SOA design pattern to our front-end as well. Instead of having one large web application each internal team can own their own application that only serves the pages for which that team is responsible. Shared logic has moved into services and libraries so teams only need to focus on building the features that their teams own. Groupon is doing cutting edge work in mobile, with nearly 50% of our North American transactions completed on a mobile device in June. Our mobile applications use a JSON API, and our web applications now use the same API, allowing us to focus on maintaining a single contract for all of our consumer web data.

30 thoughts on “Geekon: I-Tier

  1. Nice!!!! its good Choice, nodejs is very rocks now, it's future of web architecture!!!

    by Ferdian on October 8, 2013 at 2:11 am
  2. Bro, WEBrick isn't very good in production. It's just not webscale. Let me know if you need help deploying with something else.

    by Drew on October 8, 2013 at 5:36 am
  3. We're holding an event in Philly (Hack and Hops) in November featuring talks about node projects and why to use node.js over other languages. Any thoughts about Groupon's possible participation in speaking and in particular about this switch?

    by Brett on October 8, 2013 at 11:27 am
  4. Great to see node working so well for you.

    by Dehru on October 8, 2013 at 3:31 pm
  5. Do you still using Rails in backend SOA services o replaced it completly with Node.js services? Some graphics or your architecture might be cool :)

    by Jorge on October 8, 2013 at 4:02 pm
  6. Nice dood! I <3 node and I am happy to see this great report. I do also love ruby though and I think that it can be scaled.

    by Kevin Krauss on October 8, 2013 at 4:30 pm
  7. Does anyone else find this fascinating that Ruby on Rails was compared to an SOA architecture? Are those really apples to apples?

    by Chris Hough on October 8, 2013 at 6:15 pm
  8. a good choice. node.js is cool

    by Lee on October 8, 2013 at 9:06 pm
  9. good news, it's about time to say goodbye to RoR

    by CloneIDEA on October 8, 2013 at 11:51 pm
  10. This is awesome! Would love to read about how the transition went. Node FTW!

    by Sam on October 9, 2013 at 12:35 pm
  11. We'll be following up with lots more information over the next month or so. Can't wait to share it with everybody!

    by Sean McCullough on October 9, 2013 at 12:48 pm
  12. Sorry, i didn't mean it that way. We had an architecture problem primarily: Our Ruby on Rails app became a difficult to manage monolith. We use Ruby on Rails for many of our backend services. More to come soon.

    by Sean McCullough on October 9, 2013 at 12:50 pm
  13. "...and we will be blogging stories about this intense transition." ~refresh~ ... ~refresh~ ... ~refresh~ ...

    by Paul on October 10, 2013 at 8:48 am
  14. Great news!

    by Robert Lawson on October 10, 2013 at 9:52 am
  15. Hi, next time when you are starting a new website will you still use RoR as your first choice? thank you.

    by nakupanda on October 10, 2013 at 7:43 pm
  16. So you had an app that lacked structure, and now it seems like you have an app with a better structure. The fact that these 2 use different languages is wrongfully highlighted in this post.

    by Samer Buna on October 10, 2013 at 8:07 pm
  17. Can you post some numbers about your transition? How many servers cuts, which packages did you choose? A little about your stack and architecture? That would be great

    by Sagi on October 11, 2013 at 11:35 pm
  18. I'm also confused by Sean's post. Everything that was lacking with Groupon's site could have been solved by using distributed Ruby server apps, and didn't require a complete rewrite. There must be other issues that led to this decision, which I happen to be very interested in reading about. I am a fan of node.js and I'm trying to figure out how it makes companies more money.

    by Gavin on October 13, 2013 at 1:16 pm
  19. We're working on follow up posts with this kind of detail soon.

    by Sean McCullough on October 13, 2013 at 1:26 pm
  20. We could have easily used Ruby to solve this problem, but we went with Node after some consideration. Keep your eyes peeled for a followup post with more details about why we chose Node.js.

    by Sean McCullough on October 13, 2013 at 1:28 pm
  21. We ( moved to the same web-app-as-API-client approach earlier this year, and are slowly transitioning away from monolithic Rails backend to a collection of services. Its definitely the way to go, I think. The 'single contract' thing is really great - felt good when all we had to do to add a new section to our mobile app was deliver the API docs for the endpoints to our mobile app developers and sit back :) I think another benefit of SOA is the 'horses for courses' thing, whereby you can pick the best technology stack for each service - we have a Geo service built on top of PostGIS, and a messaging system built on MongoDB. Interesting times ahead :)

    by Rory Sinclair on October 16, 2013 at 10:09 am
  22. Hey man you always says follow up post where is follow up post about this transition. Eagerly waiting................

    by Madhu Rakhal Magar on October 18, 2013 at 2:16 am
  23. The first followup post is now live at: Great work!

    by Zack Steinkamp on October 30, 2013 at 11:06 pm
  24. A question to everyone: i share the feelings about RoR , but what about Sinatra or Padrino ?

    by santiago on December 15, 2013 at 10:59 pm
  25. Great Success, Guys! Moving away from RoR is a decission thats quite popular these days :) Regards

    by Lelala on March 27, 2014 at 2:14 pm
  26. Awesome

    by lellansin on May 11, 2014 at 11:45 pm
  27. [...] Rendr project shows these ideas in action already today.  But there is Groupon’s i-tier and Walmart’s FruitLoop project which might be interesting to watch in the next [...]

    pingback by Next-generation Web apps with full stack JavaScript - O'Reilly Radar on July 16, 2014 at 2:15 pm
  28. [...] Rendr project shows these ideas in action already today.  But there is Groupon’s i-tier and Walmart’s FruitLoop project which might be interesting to watch in the next [...]

    pingback by Next-generation Web apps with full stack JavaScript » Salesforce Marketing on July 16, 2014 at 2:22 pm
  29. [...] migration success story comes from Groupon, who gave up Ruby on rails Ruby on Rails for [...]

    pingback by Young startup? Here's why you should consider Node.js for your back-end development | Thinslices on December 10, 2014 at 4:01 am
  30. […] Successful startups do this! All the time! Look at Twitter. Look at Groupon. […]

    pingback by Gerhard Kuschnik | Technical complexity on August 15, 2015 at 12:47 am

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>