Amazon’s “web services” – AWS for short – have made quite a splash in the developer community. It’s pretty impressive how much horsepower you can harness in a very short amount of time.
However, it’s not the most economical solution, nor the simplest. I think many startups are blinded to these facts by dreams of scaling up (“to infinity and beyond!”), when they should be concentrating on growing their business a bit at a time, and would be better off with something else, like Linode (yes folks, that’s a referral link!), which I use, or Digital Ocean, Hetzner, or one of the many others. If you’re a Silicon Valley company fueled by venture capital and need to get really big really fast, this advice might not apply to you. Otherwise, read on.
Here’s where I would consider using AWS from the beginning of a new project:
- You absolutely positively know you’re going to have to scale horizontally from the start.
- You need massive amounts of storage and want to stay close to Amazon’s S3. Companies that deal in a lot of images or videos or something might need this.
- You know you are going to need to start and stop services as demand rises and falls. This sounds cool, but it’s not easy, so if you aren’t positive you need it, it’s premature optimization and you want to avoid it. An example of this might be a company that gets requests to process large amounts of data: the request comes in, they start up an EC2 instance, farm out the job to it, and then shut it down when the results are ready. This isn’t really something you can do in the time frame of an HTTP request though: the time to start a new instance is most likely measured in minutes.
There are probably other cases where some of Amazon’s services make sense, but where I come from, in the land of smaller, bootstrapped companies, worrying about “web scale” is very likely the wrong thing to be doing. You want to get your infrastructure set up and running, get paying customers, figure out your market, understand which features they need, and so on. If you’re making money by charging customers for your product, you can probably scale vertically by moving to larger instances, or do simple things like splitting the DB server from the web server, before you have to worry too much about scaling problems.
The actual dollar difference in what you spend is something to keep in mind if you’re watching your expenses carefully, but there’s also a complexity factor: AWS instances can be kind of complex to set up and run in terms of all the bits and pieces and understanding how the fit together. Something more basic is just a regular old Linux server that you ssh into and run. It’s pretty straightforward, meaning it’s less of a hassle. As a small or bootstrapped company, or individual, you want to avoid spending too much time on complex stuff that is not likely to pay off for a long time.
Amazon is a Big Company and is not going to pay much attention to a small fish like you or I – you’ll likely get better support from someone who makes their money helping smaller companies and individuals.
You don’t want the absolute cheapest hosting service, because you do get what you pay for, and what you pay for is not for when things are running smoothly, but when things go bad. I’ve always had good service and support from Linode, but I’m sure others are good too. Ask around to see what people are saying.
So: if you’re a small company, don’t know how much you need to scale, or how you might need to scale, do not worry about it or try to “think ahead” too much: save the money and get something better suited to your needs. When you do need to scale – if you reach that point – you can do so with a much better idea of exactly how to scale your own business in a way that makes sense.