Amazon Web Services (AWS) are everywhere. Seriously, I bet you’ll visit a couple dozen sites today, at least, that are built on it. But does that mean it’s right for your app?
First off, let’s discuss what exactly AWS is. In very broad terms, it’s a collection of services that you can use to build an web application. While the list of services may be overwhelming, there are only a few that you probably need to worry about, the most important of which is Elastic Compute Cloud, or EC2 for short. EC2 allows you to spin up servers with the click of a button, ranging from the slow and cheap, for fractions of a cent per hour, all the way up to insanely powerful servers costing thousands of dollars a month. You can build anything you want on an EC2 instance: you have free reign over what’s installed and what it does.
So, at its core, AWS allows you to spin up servers and only pay for the time you need them, rather than buying a physical server and paying datacenter fees. In addition to EC2, AWS has all sorts of other services, ranging from relational databases to push notifications.
Why you should use AWS
1. Everyone knows it. Well, okay, maybe not everyone. But most web developers have likely used AWS before and are at least somewhat familiar with it. It’s pretty much the standard hosting company in the startup world, so there’s a lot of expertise out there. And, since so many people use it, you can be sure that a few years down the road, you’ll still be able to find developers who can help you out.
2. You can use it for free (for a year). If you’re just getting started out, the thought of paying for any hosting may sound overwhelming. The good thing is, Amazon has you covered. With the free tier, you’ll have everything you need to get your application running: application instances on EC2, a database in RDS, free S3 storage, and more. Sure, you’re limited to relatively slow servers, but if all you need to do is get something out there, you don’t need much more than that. You can always upgrade later.
3. You only pay for what you need. This is the best feature of AWS (or any other similar service). Need a super expensive machine for only a few hours to run some difficult computations? That’ll only be a few dollars, and you can just terminate it when you’re done. Similarly, you’re not restricted to the machines you start with. If, a couple months down the road, you realize you need some more computing power, just spin up a few new instances and shut down your old ones. Try doing that with a physical server.
4. The service you need is probably there. At the beginning, you’ll likely be using the basic AWS services: EC2 for your app servers, RDS for your database, and S3 for static file storage. Then, you realize you need some caching, so you sprinkle in Elasticache. And then you find you have a huge group of users on the other side of the world, so you add in CloudFront, allowing you to more efficiently serve them data. Need to handle “Big Data”? They have everything you need: DynamoDB for storing large amounts of data cheaply, Redshift for analyzing your data, and more. Getting the idea? They have just about everything you may ever need, meaning you’ll never grow too big to continue using them.
5. It’s not your hardware, but it’s still your data. When you’re using AWS, you still own all the code and data, they’re just providing the infrastructure. Even if you need a HIPAA compliant host, AWS has you covered.
Reasons not to use AWS
1. You don’t want to bother with setting up servers. AWS is pretty easy to use, but you still need to be able to set up a server. At a bare minimum, you’ll probably need to SSH into a Linux server, install the packages you need, and get your app running. If that sounds awful, you might be better off with a service like Heroku, which definitely costs a bit more, but is way more hands-off. For a Rails app, it’s generally as simple as pushing your code to them, and the app is up and running. I’ll be going into depth on Heroku in a future post.
2. You have a specific need for dedicated hardware. For some companies, you just need your own hardware. If that’s the case for you, Amazon is just not going to work for you. Some might tell you that you should always buy your own dedicated hardware, because it’s better over the long run, but for most companies starting out, AWS is a much smarter investment.
So, to answer the question: yes, you should (probably) use AWS. It’s incredibly powerful, and it’s only getting better.