Listen to the middle days of the first StackOverflow podcast and you'll hear that for a long time they ran StackOverflow on a single server. They were serving a million uniques with the web app and database running on a single box! It wasn’t even a very big box.
As a former .NET guy, I think the hosting part of deploying .NET wasn't well addressed by this post.
Jeff Atwood built and colocated a dedicated 2 or 3U server to run Stack Overflow. I certainly wouldn't call that an easy or recommended thing to do for a startup, especially if none of the founders have enough hardware and system administration experience.
Compare this to signing up for EC2, Linode, or Rackspace and spinning up a Linux instance to run Rails, Django, or Node. Even easier to just spin something up for free on Heroku. These are mature, solid solutions being used by many startups today.
There are a few providers like AppHarbor that are trying to make .NET hosting a bit more startup friendly, but there weren't any mention of those in this post.
It's just as simple to spin up an EC2 Windows instance as it is for a Linux one. Just costs you a bit more, and as a .NET developer, the only thing that still bugs me about .NET are the licensing fees for Windows - but if my business isn't making enough to pay for that then I have bigger problems.
As for deployment, if your .NET app doesn't have highly specialised dependencies you're likely to get away with a simple file copy deployment. Even if you do need to install some frameworks/packages, offerings from e.g. ScaleXtreme (who allow you to manage both Windows and Linux servers from a single dashboard, private or in the cloud), make managing instances (via templates, scripts and integrated monitoring and patching) extremely simple.
This is great because I prefer writing my code in C# and running it under Windows but prefer Linux for the heavy-lifting (PostgreSQL, memcached, nginx for static content, etc.). I do accept that not everybody knows how to use both platforms or would like to learn, however that is a matter of preference not practicality. I'd say the two platforms are on par with practicality.
Have you considered running your apps on AppHarbor? That way, you wouldn't have to worry about servers at all. We also have many of the services you use as add-ons: https://appharbor.com/addons
I did and in principle it's a great idea but I can't wrap my head around the pricing - as a solo founder earning South African Rands with the requisite technical expertise to manage these things myself, I can't bring myself to pay more than I know I strictly need to until my business is profitable.
I'm not primarily a .NET guy (I have done a fair bit though), but why wouldn't it be possible or reasonable to spin up a VPS instance of Windows if it's a platform you're totally familiar with (much like someone being familiar with a linux instance?)
Firing up a linux instance does require more sysadmin skills from the command line (this can be non programmer skills to some), compared to a gui based OS.
Disclaimer: I use linux myself but have spent enough years in the professional world to know that there are things that windows can do equally well, just don't ask it to do everything. A basic startup stack of IIS (included), mysql, and a framework (download asp.net MVC) doesn't take much setup.
It's definitely possible to spin up a Windows instance on EC2 and get it running. Many startups built on .NET do that today.
As for the sysadmin on the software side, I agree most .NET devs that want to build something probably have those skills. It's the hardware aspect that I think needed to be addressed.
The OP espoused the easy scalability of .NET using the Stackoverflow example without mentioning that they colocated with dedicated hardware.
good point. StackOverflow used physical boxes not virtual servers and that certainly makes scaling a database easier. On the other hand I currently host HireFlo on a single Rackspace cloudserver. I have 3 web apps, a SQL server instance, and 2 processors hosted on the same VS and it's working well so far. I'll definitely move SQL Server off to it's own box at some point though.
Yes, you can spin an instance up and configure everything with Power Shell (if you have a lot of instances).
SQL Server's a little harder to setup but it scales really well vertically (unsurprising given its Enterprise origins). As with most databases it really needs to be installed on physical hardware for the best performance.
You never had to get and configure/maintain dedicated servers to do .NET. The only two reasons that dictate dedicated or VPS hosting on .NET are the same as not .NET - you need more hardware or more privilege.
Deployment's always had a variety of simple-to-complex options just like everything else.
But its equally simple to spin a windows server and even more simpler to setup (thanks to RDP). Amazon even offers a free microsoft micro instance (I even got a $50 windows credit for april month) :)
My impression is that the SO crew knew about running machines in front of them more than they knew about running cloudy things that depend on people they didn't hire. They like to reduce leaky abstractions, not add to them. So getting the biggest badass server and slapping SQL Server on it is exactly what I'd have expected them to do.
As a former .NET guy, I think the hosting part of deploying .NET wasn't well addressed by this post.
Jeff Atwood built and colocated a dedicated 2 or 3U server to run Stack Overflow. I certainly wouldn't call that an easy or recommended thing to do for a startup, especially if none of the founders have enough hardware and system administration experience.
Compare this to signing up for EC2, Linode, or Rackspace and spinning up a Linux instance to run Rails, Django, or Node. Even easier to just spin something up for free on Heroku. These are mature, solid solutions being used by many startups today.
There are a few providers like AppHarbor that are trying to make .NET hosting a bit more startup friendly, but there weren't any mention of those in this post.