Does it scale? Who cares (2011)
Couldn&#x27;t agree with this article more.<p>I built the biggest social network to come out of India from 2006-2009. It was like Twitter but over text messaging. At it&#x27;s peak it had 50M+ users and sent 1B+ text messages in a day.<p>When I started, the app was on a single machine. I didn&#x27;t know a lot about databases and scaling. Didn&#x27;t even know what database indexes are and what are their benefits.<p>Just built the basic product over a weekend and launched. Timeline after that whenever the web server exhausted all the JVM threads trying to serve requests:<p>1. 1 month - 20k users - learnt about indexes and created indexes.<p>2. 3 months - 500k users - Realized MyISAM is a bad fit for mutable tables. Converted the tables to InnoDB. Increased number of JVM threads to tomcat<p>3. 9 months - 5M users - Realized that the default MySQL config is for a desktop and allocates just 64MB RAM to the database. Setup the mysql configs. 2 application servers now.<p>4. 18 months - 15M users - Tuned MySQL even more. Optimized JDBC connector to cache MySQL prepared statements.<p>5. 36 months - 45M users - Split database by having different tables on different machines.<p>I had no idea or previous experience about any of these issues. However I always had enough notice to fix issues. Worked really hard, learnt along the way and was always able to find a way to scale the service.<p>I know of absolutely no service which failed because it couldn&#x27;t scale. First focus on building what people love. If people love your product, they will put up with the growing pains (e.g. Twitter used to be down a lot!).<p>Because of my previous experience, I can now build and launch a highly scalable service at launch. However the reason I do this is that it is faster for me to do it - not because I am building it for scale.<p>Launch as soon as you can. Iterate as fast as you can. Time is the only currency you have which can&#x27;t be earned and only spent. Spend it wisely.<p>Edited: formatting