Should a Web Startup Go Straight To the Cloud?
Javaman59 writes "I am a one person company developing a web site from home. The site is hoped to attract millions of accounts and daily hits (just to give an idea of the scale of things, as its important to the question). My infrastructure is currently Visual Studio 2010 on a PC. To progress the site I need to set up version control, continuous integration, and staging. I have a Win2008 server VM, with all the Windows software (free and legal) to do this. However, I am only just competent as a Win admin, and I foresee each step of the way (setting up a domain; SQL-Server, etc) as a slow, risky process, and a big disruption to development. Should I forget my VM server (it will make a nice games machine!) and just go straight to the cloud for all my infrastructure?"
You're not going anywhere running windows unless you had shit loads of cash behind you.
I'm sorry, but if you need to ask Slashdot on something like this than your not qualified to do what you want to do. Nothing personal but your only going to have hours to days before your website is hosting malware or gets turned into a spam relay.
The reality is that a "just competent" person is far from qualified to make this choice. It is easy to think that "the cloud" is an easy answer to scaling problems, but if you do not design your service/software with horizontal scaling in mind, you may find that your service does not scale up on "the cloud" any more effectively than it could on your own servers. "Cloud" does not imply scalability, it implies out-sourced infrastructure which is accounted for as an OpEx, rather than a CapEx. You still must plan for scaling up.
Seriously. What is this on Slashdot for?
Disagree != mod troll.
Why would you want to host your website on an MS OS anyway, let alone one you don't even know how to administer properly.
My advice, look around for a good hosting deal (with good backups etc.) on shared hosting. Buy a hosting plan that can easily be upgraded to something dedicated as and when (and if) needed. Use your machine as a developer machine with all that entails (backups, version control etc.).
Forget about "the cloud". You're dreaming at this point. "The cloud" is something for when you actually need to radically increase the number of visitors that the site can handle.
Appended to the end of comments you post. The maximum is 120 characters.
I really don't understand why a small web startup would go with Microsoft. The licensing costs when you (hopefully) start to scale up are going to kill you. There's a reason that all the big-hit startups over the past decade weren't standardizing on Windows as their web platform.
What you really need to do is find an entity who can help you with the tech mechanics. That entity could be a friend you promise to reward later, a business partner you legally go 50/50 with, an independent consultant you hire, a company (large or small) you hire. But you're asking really basic questions about stuff, so you obviously need some help. Moving to the cloud just moves the problem to some place you can't touch; it doesn't address it.
(If you're offended by the suggestion that you need help, you need to adjust your thinking significantly, or abandon the idea of going into business for yourself. No one person can do everything, and any successful business person will need to realize that early on.)
dragonhawk@iname.microsoft.com
I do not like Microsoft. Remove them from my email address.
'The cloud' does not set up your infrastructure. It does not design or enforce your version control. It does not harden against SQL injection attacks.
Your 'infrastructure', Visual Studio on a PC, is not infrastructure. That is merely a basic dev box.
Staging? Needs to be a small scale duplicate of production.
Do you have any clue? Apparently not. If you did, you'd hire someone else that actually knows how to do this. Because you clearly do not.. You have an 'idea'. An idea that you apparently cannot bring to the public.
Sorry, but that the truth.
The guy above said you're not qualified, but the young and inexperienced have come up with plenty of new and innovative stuff, so:
I think the question is: If not cloud, what?
In no case would I run the site from home. You'll probably get your home Internet yanked.
Cloud usually implies the ability to instantly increase/decrease the size of your server. I don't think you need that at the start.
You could go with a cheap VPS. In fact, I think that's what you should do. You should be able to take a stock Windows VPS and install your application, and have everything working. Either write an installation how-to, or reduce the steps to a script (PowerShell or whatever).
After you're able to do that, you could start looking into cloud provisioning, separate database server, database replication, DNS proxying, round-robin DNS, backups/rsync, https and SSL certificates.
You'll need to run email on the server, too, if only to send notification messages to your users (or to yourself). So you need to learn about how to administer and email server. Or rent and Exchange Server.
You also need to learn about CANSPAM requirements.
You'll need to have some kind of monitoring service to alert you to problems with your server. collectd is great for this on Linux.
You also need to look into which ad service you'll be using. Or alternatively, which payment service. Don't keep credit card numbers on your site, don't manage subscriptions by yourself. Let the payment processor do it.
I'm not a lawyer, but I play one on the Internet. Blog
The bandwidth needs alone will push you to the cloud (or to a coloc).
You say you're expecting milions of hits/day - if each user pulls down 50KB of content, and you get a million of those hits over a 10 hour period:
50KB/hit * 1 M hits/day / 10 hours / 3600 seconds/hour = 1388 KB/second
It'll take at least a 15Mbit/second upstream connection to handle that bandwidth which is hard to get on a residential connection in most areas of the USA. Plus the mean-time-to-repair on a residential connection can reach days, so if you have an outage, your site will be offline for a long time. And you probably don't have a generator (and even if you do, there's no guarantee that the equipment that serves your internet connection is also on generator), backup cooling (if needed in your climate), or someone to reboot your server or swap a failed drive when you're on vacation.
You can certainly get that much bandwidth delivered to your house, but you'll likely end up paying more than the cloud hosting costs and still won't have the uptime and reliability you'd get from the cloud provider.
I'd recommend you drop Visual Studio and Windows and "go to the cloud" on an environment that is already scaled out. There are a few options, but I think one of the easiest to set up and get going on is Google's App Engine system.
Yeah, drop everything you've created and move it to a completely different platform. One that is is proprietary so you're locked into that one vendor forever unless you want to rewrite your app.
Or, since you are already familiar with and comfortable with Windows development tools you can pick and choose from dozens of hosting providers that will provider a Windows VM or physical machine and if they change their price or terms of use to something you don't like, you can easily move everything to another hosting provider.
Love or hate Windows, what you said is representative more of an anti-Microsoft meme than anything closely resembling fact.
Personally I'd go LAMP too, but I disagree that LAMP is easier to manage, and anymore portable to the cloud. On the contrary, from personal experience with this sort of thing I think Windows is easier to manage for sure and with Azure is definitely more easily portable to the cloud. The reason I wouldn't go Windows though is because for example if a critical security flaw in the web server or OS comes around then with FOSS you can get a fix quickly, whereas with Microsoft you're potentially left with a choice of being vulnerable, or taking your site offline, that's a disadvantage of proprietary in general for this kind of thing- you're too dependent on an external company to ensure your service is rock solid.