I am using Ruby on Rails 3 and I have a monolithic application that uses na开发者_JAVA百科mespaces 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.
Another great book to look into (and much more up to date) is:
http://amzn.com/0321659368
Service-Oriented Design with Ruby and Rails (Addison-Wesley Professional Ruby Series) [Paperback] by Paul Dix
精彩评论