Ask Slashdot: Building a Web App Scalable To Hundreds of Thousand of Users?
AleX122 writes "I have an idea for a web app. Things I know: I am not the first person with a brilliant idea. Many others 'inventors' failed and it may happen to me, but without trying the outcome will always be failure. That said, the project will be huge if successful. However, I currently do not have money needed to hire developers. I have pretty solid experience in Java, GWT, HTML, Hibernate/Eclipselink, SQL/PLSQL/Oracle. The downside is project nature. All applications I've developed to date were hosted on single server or in small cluster (2 tomcats with fail-over). The application, if I succeed, will have to serve thousands of users simultaneously. The userbase will come from all over the world. (Consider infrastructure requirements similar to a social network.) My questions: What technologies should I use now to ensure easy scaling for a future traffic increase? I need distributed processing and data storage. I would like to stick to open standards, so Google App Engine or a similar proprietary cloud solution isn't acceptable. Since I do not have the resources to hire a team of developers and I will be the first coder, it would be nice if technology used is Java related. However, when you have a hammer, everything looks like a nail, so I am open to technologies unrelated to Java."
Java is slow*, don't go that route if you are planning a large userbase. There is a reason huge traffic site's don't use it. Facebook, Yahoo, and wikipedia use php, Google/Youtube use python (and strait C).
If you actually want something that will scale well to huge numbers of concurrent visitors the answer really is you're going to have to go with php, Perl (and slashdot's page load times don't give me much confidence in Perl), Ruby (has had serious scaling issues, but I think they may be largely fixed now), or python.
Here is a high performance well coded php mvc framework if you do decide to go that route: http://www.yiiframework.com/
For database MySQL/MariaDB can be an option, but it's quality has been going down in recent years (don't know how much MariaDB has fixed that) and it's not very feature rich in terms of things like stored procedures, custom datatypes, views, etc. If you want something more powerful like you may be used to with Oracle go with Postgresql.
You are also going to want to keep in mind when designing the structure that you will want to make use of something like memcache in the future to increase performance and reduce server load.
Disclosure: I run a high traffic website that get's millions of page views a day. Uses Yii php framework and Postgresql as the database backend. There are about 1,250 people browsing it at this moment (based on active tcp connection count to port 80)
* Yes, I know *in theory* in a certain very limited set of circumstances Java can be faster than compiled code, but the theory doesn't actually match the practical reality of the situation.
1984 was not supposed to be an instruction manual.
My friend, you are 18 and in junior college, right? It shows.
If you want news from today, you have to come back tomorrow.