What do you like best?
- Easy to setup and work with
- Can auto-scale horizontally with minimum configuration and based on metrics (e.g. number of requests being received, CPU load etc.)
- CloudWatch dashboards is great for end-to-end application monitoring
What do you dislike?
- The Elastic Load Balancer (ELB) frontend to the EC2 instances is flaky. It is not mentioned clearly that the load balancer needs to be "pre-warmed", as per Amazon lingo, in order to accommodate spikes in traffic, which is counter-intuitive and, in my opinion, defeats the purpose of having auto-scaling in the first place.
- As far as auto-scaling goes,
- Expensive, unless you opt for the spot instances option
- Pricing is very complicated to communicate to clients
- Tech support is not included unless one opts for a plan
Recommendations to others considering the product
The major thing to consider is the behaviour of your application: are backend services required to respond to heavy spikes in network requests or to continuous, smooth traffic? My view is that for the latter, EC2 can be a great choice. However, be prepared to explain the complicated cost structure to your clients as well as potentially face high usage costs, depending always on your use case.
What business problems are you solving with the product? What benefits have you realized?
The goal was to have a stateless Wordpress installation, as described in the "WordPress: Best Practices on AWS" whitepaper (https://d0.awsstatic.com/whitepapers/wordpress-best-practices-on-aws.pdf). Although we followed the guide to the letter, the end result was frankly disappointing, mostly due to performance issues with the ELB and EFS.