Overall Satisfaction with Amazon Elastic Compute Cloud (EC2)
We are hosting a public-facing web application and some internal workers/APIs on a medium-sized pool of EC2 instances. We use Docker with a container orchestration system to manage these services. By running directly on EC2, we are able to utilize spot pricing which saves us 80-90% on our hosting costs.
- AWS EC2 instances are extremely generic and allow you to build infrastructure that isn't tied to a particular provider because it's essentially just a server.
- AWS EC2 allows you to create images from one server and launch other servers with the same image, making scaling and fault-tolerance much easier.
- AWS EC2 integrates with other AWS services like Cloudwatch to make monitoring performance issues very simple.
- You forsake a lot of the added features and tailored simplicity that comes with cloud services like Elastic Beanstalk.
- Launching, configuring, and maintaining your EC2 instance comes with a fair bit of overhead.
- AWS is not the cheapest option if you are just running generic Linux servers on EC2.
- AWS EC2 has made it easy to transition some of our architecture to spot instances, which has saved us up to 80% on hosting costs.
- Transitioning to EC2 was a significant investment for us because of its degree of flexibility. Since ultimately all configuration is left to the administrator, there is a steeper learning curve to get started over using something like Elastic Beanstalk to host your apps.
- Creating EC2 images and launching new instances from these images allowed us to scale some of our services much more easily.
Pretty much every cloud provider has some equivalent to EC2, since it is essentially the most basic offering one could provide. We chose AWS because of its strong track record as a leading cloud services provider and because we were offered free credit to make the switch. We are happy with EC2, but I would recommend reviewing other options like GCE or DigialOcean Droplets, which may be cheaper for your use case.
If you need full configuration control over the servers that your applications run on, then EC2 is well-suited for your use-case. It essentially grants you ownership of your choice of server without the significant overhead that accompanies physical ownership. However, if you're just looking to host a standard application like MySQL or Elasticsearch, I would recommend checking whether or not AWS offers that application as a hosted service. Using hosted services will reduce the amount of time you need to spend configuring and maintaining your servers.