How to build an API on top of an existing Rails app with NodeJs and what architecture to use?
- by javiayala
The explanation
I was recently hired by a company that has an old RoR 2.3 application with more than 100k users, a strong SEO strategy with more than 170k indexed urls, native android and ios applications and other custom-made mobile and web applications that rely on a not so good API from the same RoR app.
They recently merged with a company from another country as an strategy to grow the business and the profit. They have almost the same stats, a similar strategy and mobile apps.
We have just decided that we need to merge the data from both companies and to start a new app from scratch since the RoR app is to old and heavily patched and the app from the other company was built with a custom PHP framework without any documentation.
The only good news is that both databases are in MySQL and have a similar structure.
The challenge
I need to build a new version that:
can handle a lot of traffic,
preserves the SEO strategies of both companies,
serve 2 different domains,
and have a strong API that can support legacy mobile apps from both companies and be ready for a new set of native apps.
I want to use RoR 3.2 for the main web apps and NodeJs with a Restful API.
I know that I need to be very careful with the mobile apps and handle multiple versions of the API.
I also think that I need to create a service that can handle a lot IO request since the apps is heavily used to create orders for restaurants at a certain time of the day.
The questions
With all this in mind:
What type of architecture do you recommend me to follow?
What gems or node packages do you think will work the best?
How do I build a new rails app and keep using the same database structure?
Should I use NodeJS to build an API or just build a new service with Ruby?
I know that I'm asking to much from you guys, but please help me by answering any topic that you can or by pointing me on the right direction.
All your comments and feedback will be extremely appreciated! Thanks!