Tuesday, March 8, 2011

Book Review - Programming Amazon EC2

March 08, 2011 Posted by Jason Irwin , No comments

Disclosure: I received a review copy of Programming Amazon EC2 from O’Reilly.

Programming Amazon EC2

I read somewhere that Programming Amazon EC2 is a title for people looking to adopt Amazon’s cloud platforms while avoiding a large amount of trial and error. I’ve been wanting to play around on this platform for a long time but have been a little intimidated by the myriad of terms and acronyms used to describe the available tools and configurations at my disposal. I fit firmly into the demographic that wants to get up and running with Amazon but doesn’t have the time to learn in this manner. The book is a pretty quick read and is packed full of useful information. Despite a couple of issues this is the de facto guide to Amazon’s web offerings and should (and will) act as a bible for anyone embarking on such a project. This book will undoubtedly save me countless hours in my future endeavors with these services and will pay for itself in no time. I highly recommend it.

While this book had a far narrower focus than most of the titles I’ve read recently it fit my needs perfectly and fulfilled its goal of getting me up and running with these services with little fuss. It is a pretty short title but very detailed, breaking down the key technologies and working through examples of improving the infrastructure of existing applications by adopting said technologies. The book starts with a brief timeline of when each technology was created by Amazon and, more interestingly, what gap they were created to fill. This was somewhat insightful and especially interesting when you consider the scale of Amazon’s online store and their adoption of said technologies. The proceeding chapters go into each technology in detail. The authors really know their stuff and there are some great tips from real life experience – some of which have the potential to save a lot of experimentation and frustration as one works their way through some existing idiosyncrasies. Furthermore the authors are cost-conscious and in a number of places provided guidance with regard to maintain resource utilization levels for optimum return on investment. The book provides a number of very useful scripts not only to create an environment but to monitor interesting metrics and planning for improvement once in the wild.
The book’s greatest strength is also its greatest weakness. As mentioned above, the content is based firmly on real world production applications. The issue with this is that it is written mostly from the standpoint of taking existing applications and moving them to the cloud. For greenfield projects there are some very important omissions which I found somewhat frustrating. Firstly, the authors do not discuss alternative development/testing environments. Specifically, when using a service where you pay money based on time, bandwidth etc. I wonder if there is any way to develop offline in a local sandbox or, for the two years it takes to bring the product to market, I am expected to pay regular Amazon rates associated with a production environment? Furthermore, am I expected to be constantly connected when developing a solution against SimpleDB, SQS, etc. It may seem like a small point but, when planning a new project, is extremely important. The answer might be straightforward (and I’m willing to bet most organizations develop against real AWS instances and are online all the time) but having read the title cover to cover I still don’t know the answer. Secondly, the authors omit information about licensing. Most of the discussion is Linux based, but I was really hoping for a breakdown of what is required if, say, I want to run Windows Server and SQL Server Enterprise. How does licensing work in these scenarios? If I get an AMI with these loaded then are my licensing costs included in the fees I am already paying, etc. Again, this is information that I would need before suggesting that my organization adopt AWS, but at this point in time I do not know.

Other than the above issues I really can’t say much bad about this book. It does exactly what it promises and provides a great introduction to the acronym laden world of Amazon’s web infrastructure. The material is extremely specific so this isn’t something I’d recommend to just anyone. But if you’re thinking about moving to the cloud then this title is a must. I could make a pretty good business case for Amazon to offer this title free to developers as it makes a very strong case for using their services.