As we approach 2009, there are only two reasons to pick JSP over PHP or .NET over JSP or any combination:
- You have existing resources skilled in the technology.
- You have an existing infrastructure that best integrates with a particular technology.
Ideological arguments aside, you can use each as the foundation for whatever web application you want to build. Each one certainly has individual advantages over the others. Over the scale of a web application, however, those advantages even out and it simply comes down to inertia.
In the cloud, existing infrastructure is irrelevant. A well-built cloud application uses the network as its integration point and can exchange data with any other application, whatever the underlying technology.
That leaves the "I have an army of (insert your technology of choice) programmers" argument. In general, it's a powerful argument. If you are going with .NET + SQL Server in the cloud, this one reason ends up having a heavy Microsoft tax associated with it.
In short, you pay a significant tax to Microsoft for the privilege of building your web applications in .NET + SQL Server in the cloud without getting any functional benefits for doing so.
This configuration for the baseline system is essentially a $0.10/hour load balancer with 2 large application servers and 2 large database servers. The Microsoft tax is $14,016/year—almost double the cost of a JSP+MySQL or PHP+PostgreSQL or other web architecture. In addition, under the MySQL solution, you could save about $2,500/year by switching out the slave database for a less expensive small database server (assuming you are not using the slave to gain performance advantages on read operations).
That does not mean you should not use .NET+SQL Server, but it makes the calculation fairly straightforward:
If the cost over three years of building and maintaining a solution based on a different architecture is less than $42,048, you should go with the alternate architecture.
The Exception to the Rule
Obviously, if you are porting an existing application that leverages SQL Server stored procedures, the calculation is very different. The cost of migrating the SQL Server stored procedures over to another database engine alone will probably justify the cost of using SQL Server.
Another issue is that the database technologies have meaningful differences and strengths for different kinds of web applications. In particular, SQL Server is vastly superior to MySQL when it comes to reliable clustering for high performance write transactions. Even if you assumed MySQL and SQL Server were functionally equivalent in a clustered environment, you run into another concern... The MySQL Tax
A reliable (for various shades of reliable) MySQL cluster really needs five servers. The database end of the equation ends up being $17,520/year compared to $19,272 for a SQL Server cluster. For $1,752/year, I'll take the SQL Server solution over the MySQL solution.
Don't agree with this assessment?
Start a discussion below or get me in real time on Twitter at @GeorgeReese.