I started my startup journey about 4 years back, right around the time Amazon introduced AWS. We started with a VPS and eventually moved to dedicated servers for Muziboo, completely skipping the cloud wave. We are doing the same for SupportBee. We do use S3 but we never used EC2 for hosting. However, I have worked as a consultant a couple of times in the last few years and I have worked with EC2 on client projects. I understand the benefits of cloud hosting but I don’t think that cloud is the right solution for every company. Traditional dedicated server hosting still makes a lot sense for majority of companies out there. However, before I get to that, let’s first quickly go over the benefits of cloud hosting
The biggest benefit of providers like Amazon is that you can provision new servers (and other infrastructure) on demand using their API. You can get pretty creative with this actually and scale up and down your infrastructure depending on your needs. Some sites (for example Zencoder) absolutely need this to save money and also ensure great quality of service. You can build a fairly high performance, fault tolerant and cost effective solution using these APIs.
One issue with cloud providers like Amazon is that you have to build around uncertainty. Your instances can go down or degrade anytime. In fact Netflix has a Chaos Monkey to simulate such situations and make sure their system stays up. Ofcourse, dedicated hardware goes down too and you have to build some sort of failover around it but in my experience I have seen cloud instances going down a LOT more. Also, the disk performance in AWS is pretty sad and so you have to be extra careful when hosting your database on an EC2 instance. How does this impact you? You have to spend more engineering hours worrying about such things and if you are not at the scale where you really need the benefits of scaling up and down using the APIs, you are probably wasting your time (and as we’ll see next, money).
The biggest issue with cloud is that it is expensive. A small EC2 instance costs about USD 60 a month. You then pay for EBS and for bandwidth. What you get in return is about 1.7GB RAM and a 32 bit machine. Compare that to a standard Hetzner server that we use. For about 51USD a month (if you are non EU), you get 16GB RAM, 3TB RAID 10 and an i7 processor. Oh and you also get 10 TB of data transfer at 100 Mbps. You can request Hetzner to put a bunch of these in the same rack for you and wire it up with a Gigabit switch and you have a fairly awesome setup. Getting the same computational power in EC2 would cost several times more. In fact, there are some things you can do here that you just can’t in EC2 (atleast not yet). For example, you can get a machine with SSD for hosting your database. Btw, none of the links above have any referral code so there is no conflict of interest here.
We have been running Muziboo on Hetzner for several years now and we have saved thousands of dollars in costs while still providing great quality of service to our customers. This has helped us stay profitable and bootstrap SupportBee comfortably.
How do you decide if cloud is for you?
My simple test is this - Do you use the cloud APIs to provision new servers automatically? If you don’t (and most startups I know don’t), then you are probably just wasting time and money on the cloud. If you are treating cloud infrastructure like EC2 as a replacement for traditional hosting where you have a bunch of servers running all the time at the same capacity, you would probably be much better off using a dedicated provider. Also, one must remember that though not instantaneous, providers like Hetzner and Softlayer can bring up a new machine for you in less than an hour and you can use something like chef to get it up and running really fast. Next time you are starting a project, give dedicated hosting a shot.
Some great comments on Hacker News thread.