Amazon EC2. I love it! I hate it! It frustrates and frees me. It is many things. However, EC2 fits into my business in an unusual way. I need to host websites to facilitate my clients’ goals. To do that I need servers and I need many of them. I’m a veteran Linux admin, I’ve written more than my fair share of shell scripts, and managed NOCs and engineers seperated by hundreds and thousands of miles so I don’t think I’m asking for too much that this service would be easy to use.
These days I rely on simplicity to ensure that I can squeeze my server administration tasks into my spare time. However, as my free time shrinks and my server numbers grow (slowly, but surely) I find EC2 less of an ally. I’ll give you a couple of examples:
Example 1:
I’m building a server to replace a busy local forum. I want to start my newest AMI for the running server. Wait a minute… I have data backups but I don’t have all the newest changes built into a bootable AMI. Ok. I’ll just make an ami then boot it. Easier said than done.
I know there is a sequence of steps I can carry out with the HTTP API for EC2. I don’t really have the extra time to code that up and make sure it works like expected. So I pop over to the EC2 management console. No dice. If I make an AMI without stopping the running instance first it stops it for me. Did I mention the management console doesn’t warn me about that? Bottom line: Using the web interface to EC2 management I must disrupt service for my otherwise stable server.
Of course I could build a more robust cluster however do you think I have time for that if I’m spending most of my time each week consulting and writing? I just want to turn on a server, back it up, keep track of which data is associated with it and easily launch a new copy of it. In the modern cloud environment that doesn’t seem like a tall order. Does it?
Example 2:
I’ve managed the downtime I needed to make a fresh AMI of my running server. I’m making changes to the way it works, the way it boots, and configs for various daemons. To ensure I’ve got a good config I need to reboot the server. This tells me definitively if a new server started from my, underdevelopment AMI, will boot correctly with all the needed services and no unneeded services. Rebooting…
Darn, now I can’t connect to the database server. Oh! That’s right. Every time I reboot or start and stop an instance it gets a new private ip address. No biggie; right? Wrong. The private IPs are the ones used for on-amazon connections. This means I have to go to my development server and get its new private IP, find the security group for the database server, and allow the development server’s new private IP.
Whew! Honestly, that’s just the start of how amazon makes NOC/server management so easy AND so complicated.
I might not care so much but I have probably 10 sites I’ve written on Google’s App Engine. That is as close to effortless as I can imagine. I’m not in love with the degree of vendor lock in there. Nor can App Engine solve all problems. Not by a long shot. However, it has its place and does what it does with extreme simplicity. Thank you Google.
So, recently I’ve been looking for a successor to EC2. I’ve hear about rackspace for years and I thought “Maybe just one or two physical servers could simplify this? Maybe the virtual thing isn’t necessary for my tasks?” Then I visited http://www.rackspace.com/cloud/cloud_hosting_products/servers/technology/ and found that they seem to have a very competitive cloud sever environment. Reading their tech specs the server image creation might be easier. Backups might be easier to manage. I’m dying to try it! I just signed up and I’m in the management console now. Wish me luck!
PS I’ll give you one guess what my next post will be about. Know what it is?
PSS I’m not getting anything from rackspace to write this. They look like a good alternative and I’m excited!