I must say I’ve been happy with Amazon Web Services. I utilize accounts both for business and personal, and I’ve been very pleased with the progress of their development of additional services, including SQS, SES, and RDS. I’ve been aware of some of the holes in the stretched pizza dough, but like many consumers, there’s no reason to evaluate other options until things actually get painful.
To be clear, there have been points where the pain has come close to inspiring me at least to see what else is out there. Some examples come to mind:
- If you stop or reboot a running instance— which obviously stops your production instance— you’re required to confirm your intention. If you create a new machine image from a running instance— which in not-at-all-an-obvious way stops your instance— there’s no warning.
- If you use the Amazon Web Services console to manage your various tools, you’re shown only the obscure initials for the services— EC2, SES, S3. If you try to manage the administrative logs, you’re shown only the fully spelled out service names.
- Meeting all the recommended security points on their checklist requires that you turn off the default login. But if you already have a retail account connected with your AWS account— which is encouraged and can’t be separated— then you must use the default login.
The pain arrived today. According to AWS billing records, my otherwise innocent micro instance had been spending several days last month spewing obscene amounts of data for an unknown reason to an unknown destination, racking up a huge bill. While chances are this is something I might have been able to do something about, there’s little evidence immediately available to even corroborate that this data actually transferred. I haven’t submitted a ticket yet to Amazon to see if there’s anything they can do to, at a minimum, explain what happened.
In any case, this has inspired me to evaluate deploying my software on other platforms. It’s certainly advantageous to at least be very clear on the extent to which you’re committed to a vendor.
I’ve begun separating the actual requirements for the services I use from the niceties that AWS has been providing. To wit:
- SSH keys to access from any terminal and SFTP service
Niceties from AWS I’ll probably miss:
- EC2 (instance) roles
- AWS command line tools to talk to S3
Niceties from Google I might learn to appreciate:
- Save money on instances that stay up without having to pay for reserved instances
- Customizable instance sizes
- Automatic detailed monitoring stats
Here are some existing comparison articles that have been useful:
http://cloudacademy.com/blog/ec2-vs-google-compute-engine/