My friend and I (both new to RoR) were having a discussion today about
whether or not you could build an exact replica of eBay using on Ruby
on Rails. I think that it could in fact be done, or at least a very
close model of the same concept. My friend seems to think that maybe
in fact, it could not be done.
What are your thoughts? Could an eBay clone be built using only Ruby
on Rails? What do you think would be the pitfalls of doing it? We are
both pretty new to Rails, but the topic did certainly ignite me to do
some thinking and searching into how it would be built and how it
could be done.
Ruby on Rails provides an excellent framework for working with data-
driven websites. I would say "Of course, it can be done". It
certainly would be a big task, but it would be possible. You would
model your data with ActiveRecord and Migrations. Consider using
Ferret or something for fast indexed searching. Build your user-
interface. Sprinkle it with AJAX through Rails AJAX helpers.
Optimize, optimize, optimize. I think you would need to lay out the
application with good partial rendering so as to take advantage of
caching as much as possible. Deploy with a scalable architecture with
Mongrel. You can model the concept, it's just a auction website.
Just like any large-scale application, it would take some work. I
have to say it, I love rails. It gives you a lot of great tools to
work out a site, without over-controlling your design. You are pretty
free to mold the framework to your app.
Yes. You could certainly build an ebay clone using Ruby On Rails. You
could also build an ebay clone using Java, .Net, PHP, Perl, Lisp, C,
C++, etc.
What would vary between these solutions would be the amount of effort to
build it, the maintainability and the amount of hardware necessary to
serve it.
I was thinking the only part that may be difficult to build/manage
would be the user account side of things. Things like the "My eBay"
where you can keep track of past purchases, watched items, etc. That
seems to be the hardest part to me, however, being a new Rails user, I
may just not be familiar enough with it to see how to implement that
easily.
Is there a lot of functionality built into RoR for managing user
accounts and user info? User info, storing payment info, keeping track
of what people have viewed, purchased, or wishlisted? This where I was
thinking it may get a little tough.
Is there a lot of functionality built into RoR for managing user
accounts and user info? User info, storing payment info, keeping track
of what people have viewed, purchased, or wishlisted? This where I was
thinking it may get a little tough.
Rails is not a toolkit that will do things for you, it’s a framework built on top of a programming language. Those things you mentioned are nothing more than records in a database. As was said before, any programming language can do that just fine. The trick will be laying out the data in a way that makes sense.
That said, most large scale operations do a lot of their own custom coding for databases, web servers, etc… because they need that specialized performance. Apache + mongrel probably won’t cut it for an operation as big as eBay, but it would be neat to see someone try.
I see what you are saying Brian, and I am starting to really
understand the whole Rails framework. In fact, I am glad that it is
not just a toolkit that does those things, it makes learning it and
building it that much more rewarding.
My original idea is to build an "eBay type" site, that incorporates
some of the same features that eBay currently uses. Obviously, not
nearly on that same scale, as what I have planned is intended to stay
local to my area. I am certainly going to build it and see how it
goes. The challenge, along with learning a totally new language, has
interested me enough to go for it.
The question of whether eBay can be built with Rails is borderline
silly. Amazon, eBay, etc... all massive websites like that are huge
custom stacks of heterogeneous technologies.
The idea here is not so much the huge scale of eBay, but whether the
same eBay functionality could be accomplished with Rails. And I do
believe in fact that it can be accomplished.
I understand that the huge powerhouse sites are running on a myriad of
custom technologies, practices, and standards. Obviously, if I wanted
this site to serve millions of users everyday, it would most likely
not hold up based solely on Rails. But that was not the point on this,
the idea here about the functionality, not scalability.
The answer maybe yes or no, depending on what you mean.
If you mean, "does Rails provide all the functionality of eBay, out of
the box" then the answer is obviously no, and it would be the same for
any web app framework you care to choose.
If you mean, "can one implement all the functionaliy of eBay, starting
from what Rails provides" then the answer is obviously yes and it
would be the same for all Turing-complete languages capable of
handling standard I/O ever since the common gateway protocol was
invented in the last century.