I am using Ruby on Rails 3 and I have a monolithic application that uses namespaces in order to “divide” the logic in that. Namespace examples are “users”, “profiles”, “articles”, ….
I am planning to expand a lot this application with new functionalities, but those that at this time are already implemented should be a performance problem if I want to handle thousands of users.
At this time, I still have to deploy my application but I am considering to create a web services for each namespace in order to improve performance (I already improved caching to avoid database queries). I know that create and interact with a web service is a very strong\hard thing and it will require a lot of time to be finished (I tryed to do that!).
Do you think that I can deploy my application with a monolithic architecture? If so, how much hard will be to move from a monolithic to a distribuited architecture? When I should switch to a distribuited architecture?
P.S.: I am thinking, for example, what steps Facebook and Twitter have done to become what they are…
This is a very big question, but I recommend reading Enterprise Rails by Dan Chak. It has a lot of great information on how to do this in Chapters 13 and up. There’s a preview available at Google Books, but unfortunately it doesn’t include those chapters.
Of course, you can always go sit down in a Barnes and Noble and read through it in an afternoon. You’ll probably end up buying it anyway – that’s what I did 🙂
Also you should be a bit wary, because the code samples are for Rails 2.3 instead of 3, but that shouldn’t be a huge problem. The basics are all the same.