If you read my last post about servers, you may be wondering how much this is going to cost to get a server. Don't worry. It's not as expensive as it once was. Let's go over the options.
Why can't I just run my startup on my own computer?
It's a noble thought, and you wouldn't be the first to think it. First of all, your ISP is not going to approve of you running a web server on their network. Second, your IP address at your home will change from time to time. If it does, your site will be down because your domain (www address) will be pointing to the old address. There are ways around that but just don't.
Server Options
As you go shopping for a server to host your site, you'll get many options:
Shared hosting: you'll share a computer with other websites, and share memory and processor
Virtual server: this is a virtualized (self-contained) server running on a beefy server along with other virtualized servers.
Dedicated server: this is a physical computer that you alone use
Shared hosting is cheap. Very cheap. But when some amateur programmer spikes the CPU or exhausts the memory, every site running on that server will suffer.
Virtual servers have been around a long time, but nowadays they are the hotness. Your server operating system and your site will run in a self-contained environment, meaning that you can reboot it, allocate more memory, allocate more disk space, make entire backups, all without incurring penalties from other sites running on the same computer. In effect, it's a complete computer environment on its own, completely separate. The big advantage with virtualization is that with the right setup, you can add more servers instantly, use them for a heavy traffic day or two, then shut them down or delete them. You only pay for the time you use them, and you don't have to call anyone to do it. In fact, they have a programming API that allows you to do it all programmatically. I recommend a virtual server due to its great flexibility.
A dedicated server used to be an expensive thing. If it was a box you purchased, you needed to house it in a datacenter (and rent space), get it hooked up to the network (and pay for bandwidth), and make sure the air conditioner didn't leak on it. If you chose to rent one, that was also expensive. Much has changed.
Laying that money down
These days, virtual servers and dedicated servers can be had for about $30 a month. Here are services I've used and have been happy with:
Rackspace Cloud Servers
If you want to rent a virtual server, Rackspace is inexpensive and highly reliable. The pricing page states that you can get a Linux server for $10.95/month (256MB memory, 10GB hard disk space), but I wouldn't run a Linux server with less than 512MB. You would run out of memory pretty quickly. At 512MB and 20GB it's only $21.90 per month. Add bandwidth charges and you're still less than $30/month. I currently use this service.
If you're going Windows for your server environment, Rackspace now offers Cloud Servers for Windows in beta. For the same 512MB server, it will be $28.80 (before bandwidth charges). So it's more affordable than buying a Windows Server license.
My experience: Shortly after I moved my site to Rackspace Cloud, I found that the 256MB wasn't enough, so I did a "resize" upgrade through the web interface.
The timeline:
- 6:08 - clicked to resize to 512MB and 20GB
- 6:14 - site down for resize
- 6:16 - site back up and running
What that short process did was make a complete copy of the virtual server, allocate space, apply the copy to the new space, apply the existing IP to it, and start it up. Very hot.
There was no data loss or data conflicts in database (which was constantly adding records). I even had the option of going back to the previous version if anything was wrong. Nice!
ServerPronto
If you want to rent a physical box, ServerPronto served me well for 4 years. For $32.95 a month (includes bandwidth) you get a decent box that should serve you well.
Caveat: renting a virtual server from Rackspace or dedicated from ServerPronto, you'll need to make sure you or your IT pro are pretty good at configuring, upgrading, and solving your issues on your own. Even with Rackspace's reputation, there are limits for this product.
A little more handholding, please.
If your IT pro is a capable programmer but still needs some help fixing server issues from time to time, you may want to investigate a managed solution.
Again I can recommend Rackspace Managed Hosting. At a past employer, when we were using Rackspace, there were times I've put in tickets, and wasn't disappointed. They handle monitoring, backups, hardware issues, and are there to help when something goes wrong, be it replication issues, problems in your application, configuring server software, etc. But for all this love you'll pay more. Servers currently start at $419/mo (dual-core with 4GB of memory).
I have also worked with JubJub for server hosting and it was a positive experience, but since I never dealt with the bills, I'm not sure how much it costs.
One server is enough for now
Unless you're expecting tens of thousands of page views daily, one server is probably enough. In fact, 37Signals ran Basecamp on one server for a year until it warranted more scale. When things start to slow down, and more memory, code optimizations, database optimizations, and caching can't keep up, then scale up to 2 or 3 boxes. I'll be discussing how to squeeze more out of a server in future articles.