AWS doesn't totally suck -- but it may for you
Getting a startup off the ground is rewarding. You come up with a new idea, something that can improve, even in the smallest way, the life of every user. You figure out the best way to make it actually, you know, work. You convince investors that yours is a horse worth betting on. And you show customers why your product is something they definitely want to be using. Even when it is incredibly stressful, as it often is, it’s also a lot of fun. Hell, it's why most of us got into the game to begin with.Other aspects of founding a company are not as enticing – payroll, legal machinations and incorporating, dealing with landlords and navigating government regulation... Another of these less-than-appealing aspects: figuring out how best to host your applications and data at scale once your user base grows.
One of the most obvious solutions is to go with the market leader in cloud computing, Amazon Web Services (AWS). At first glance, this would seem to make sense. Amazon's capacity is huge, its list of big-name clients is exhaustive, and it’s a lot easier to outsource your hosting problems to the cloud than trying to figure out how to configure your own physical solution. In short, AWS is hands-down the number one name in the game, and surely thousands of companies (including some of the biggest in the world) can't be wrong.
You aren’t running thousands of companies. You aren't running Pfizer, or Ticketmaster, or Etsy (unless you are, in which case, hey guys, thanks for reading)! You’re running your company, and you need to pick a server solution that works best for you. Amazon offers enormous serving capacity, and a variety of tools that can be useful if your company is also enormous.
But a startup is, by definition, not enormous, at least not yet. Springing for the big, expensive system before you really need it is not bold or forward thinking. It's lazy and wasteful, two things a startup can ill afford.
With that in mind, here are a few simple rules to keep in mind when making your decision on whether to go with big cloud or littler cloud. Big cloud (AWS) can help you scale to impressive heights. Little cloud may be cheaper and serve your needs just as well, because while Amazon.com may offer the lowest prices on millions of products, AWS doesn’t.
Be specific. Put together a reasonable estimate of what your specific storage needs will be over the next several months. On average monthly price, Google, Lunacloud, and Microsoft are all actually cheaper, the first two substantially so. Remember though, this is an average. You can use price calculators and pricing pages for individual providers (e.g Amazon's, Google's, and Azure's).
Besides capacity, AWS seems attractive because of some features it offers that alternatives do not. AWS is more easily scaleable, for example, than Microsoft, Rackspace or Google. This can come in handy if your business model is such that you may need to scale up and out quickly and unpredictably.
If your startup's scaleability is more predictable and easily managed, however, it may not be as great a priority. Just like you don't want to go car shopping and automatically opt for the Rear-Seat Child-Protection PowerToggle® for only an extra 300 bucks, make sure these are features that would actually be useful to your startup.
Be flexible. Or rather, remember that you can be flexible. We're not talking marriage -- more like renting office space: Just because you hope your startup can someday require 15,000 square feet of prime commercial real estate doesn't mean it’s smart to spring for that when it's you, two buddies and a lot of cold pizza. The decision you make today doesn't need to fit your needs forever, just for the next few months. Then you can reevaluate and, if necessary, choose a different option.
Be open-minded. Don't get trapped by groupthink like a junior high kid feverishly pleading with his mom that “everybody else is doing it!” Consider your options. Again, pricing calculators like those listed above are your friend here, and it is essential that you model a usage plan specific to your startup. Or, if you want real open-mindedness street cred, try and ignore the inherent sexiness of the cloud altogether, and consider using real-world hardware. For our audio/voice component (my startup Speek hosts conference calls) we went with that last option, for a variety of reasons:
First, we simply wanted to reduce the number of variables when we needed to troubleshoot this critical layer. For us, audio quality is a top priority, and the fewer layers of virtualization and their parties between us and the user, the better.
Second, and more technically, we were having syncing issues between the time clock on the physical Amazon machines and the time clocks on the OS and virtual layers, which was causing additional delays. Moving to our own physical servers in a data center instantly solved this problem.
Third, the audio/voice layer of our system scales fairly predictably, giving us a fair amount of lead time to order new physical servers. The elasticity of cloud hosting was thus not a priority for us.
Finally, in our own financial analysis we found that when it came to our audio/voice component, our own physical servers would be cheaper than any of the cloud providers we were considering. For our API layer and Web interface, we found the opposite to be true, and so we host these across a few different cloud providers for the sake of redundancy.
That brings up a secondary point: Being open-minded means remembering that it is fine to mix-and-match. Not only is one server solution the best across all startups, it may not even be the best across all components of one startup. By thinking of these components' needs separately, considering all your options, planning for the near future and not for forever, and finding the best fit for you, you can vastly improve the odds that you've made a good decision.
And then you can get back to the fun stuff.