Advice from smart and well-intentioned people notwithstanding, I firmly believe you should think about scale early and often. Google thought about scale early - their very name is scale.
My deep concern is that those who work on improving the Ruby on Rails framework may have this “worry about scale later” mentality. I’m concerned that many of the programming paradigms in Rails lead to unscalable practices like “transparent” joins that novice programmers won’t know to avoid (e.g. image.user.comments.categories - in views no less). It would be very helpful if RoR actually solved some of the tough scale issues by, for example:
- Including support for Amazon’s Simple DB service
- Intelligently unwrapping joins in AR layer, or allowing/encouraging developers to do that
- Providing a mysql proxy (better than mysql-proxy) which is scriptable in Ruby, that provides for db load-balancing, failover, multi-master, master-per-model, index-modulo multi-master, etc. acts_as_readonlyable is a great start, but you can only scale so far without multi-master.
- Support for lazy insertion, insert ignore, insert later, insert many, batch insertion, etc. Perhaps “acts_as_batched” ?
- Providing better examples and support for logging using syslog over udp (there actually may be plenty of support for this already, I just haven’t had time to dig into it yet). Educate/encourage through examples how to write certain log-type info to logs instead of writing to db. m