Overall Satisfaction with Amazon Elastic Compute Cloud (EC2)
I've used EC2 for numerous use cases:
* Hosting Node.js applications of varying complexity, from borderline static sites (http://plugins.mongoosejs.io/) to more sophisticated apps (http://sixplus.com/)
* Hosting a Go-based CI tool that used the EC2 API to spawn build workers
* Hosting MongoDB instances
EC2 is my go-to tool for any sort of production server application. It's much more cost effective than in-house hardware at the scale I've been working at, primarily because EC2 instances have solid internet connections and don't change the IP of instances while they're running. However, I've started using Azure more as cloud computing is becoming a commodity and Azure gave us a better deal.
* Hosting Node.js applications of varying complexity, from borderline static sites (http://plugins.mongoosejs.io/) to more sophisticated apps (http://sixplus.com/)
* Hosting a Go-based CI tool that used the EC2 API to spawn build workers
* Hosting MongoDB instances
EC2 is my go-to tool for any sort of production server application. It's much more cost effective than in-house hardware at the scale I've been working at, primarily because EC2 instances have solid internet connections and don't change the IP of instances while they're running. However, I've started using Azure more as cloud computing is becoming a commodity and Azure gave us a better deal.
- Point-and-click spawning of production-ready instances running whichever OS you prefer.
- Solid API for more advanced use cases. Instead of having in-house Windows build machines you can just spawn EC2 instances via API to build your project on demand.
- AMIs make it easy to set up a machine once and make copies of it once you need to scale.
- The UI is cumbersome and confusing
- The API is usually reliable but hard to rely on at scale - spawning a machine via API sometimes just hangs
- Online support is borderline non-existent. If something goes wrong, you're probably on your own.
- At previous businesses we wouldn't have been able to run our infrastructure reliably without EC2. No more hour-long downtimes because Verizon decided to change our server's IP address without warning.
- On the CI project, EC2 allowed us to iterate quickly and scale the CI tool on demand, without having the massive upfront cost of setting up our own server farm.
- EC2 also allows us to easily spawn development machines when we need to connect mobile apps to a development backend, letting us iterate more quickly with partners.
I currently use GitHub pages and Azure for projects, in addition to EC2. I use GitHub pages for my blog because it's free and convenient, and because my blog is a static site (HTML and client-side JS only) so there's no need for me to pay for an EC2 instance to host a web server. At my current startup we use Azure because they offered us a very generous free tier and their support is excellent. However, I still use EC2 for applications where the app requires an actual backend and I'm the only engineer, because I'm most familiar with EC2.