I'm running a saas service which is growing rapidly. The customers are ecommerce websites and we get hit on every page view on each of our customers sites (currently 10M's hits/day). The current architecture is Mysql master/slave farms (run with scalr.net on EC2). We keep adding new customers to a farm until the indexes take about 70% of the RAM and then open a new farm for the next customers.
Obviously as we grow this architecture is becoming an issue for 2 reasons: 1) Once a customer or few customers get large traffic on their websites, the farm they are located on can become a bottleneck. 2) we currently have 4 farms but we can easily get to large number of farms which is hard to maintain.
What strategy would you recommend to enable growing in the long run? Most of the data is suitable for key storage. We have no foreign keys and small number of joins.