Programming Amazon Web Services
I really wanted to love Programming Amazon Web Services and it does have some things going for it, but there are enough minuses to keep me from giving it full marks. Let me start by talking about what the book covers, then we will take a look at what it did well and not so well.
This book provides full coverage of Amazon's suite of Web services. You'll find detailed chapters on Amazon's file storage service S3, their cloud computing service EC2, their messaging service SQS, their payment gateway FPS, and their document database service SimpleDB. The book begins by explaining Amazon's philosophies for these services, how they affect the suite as a whole, and why that should be important to you. For each service you will find detailed information about the design and intent of the service, how to interact with the API (including a full client implementation), and example applications making use of the service. The larger and more complicated services span multiple chapters to make sure all key aspects of using that service are covered.
The description above really hints at what the book does very well. It's fantastic coverage of all the Amazon services from design to implementation and including practical usage. You'll have no doubt as you read that the author is a domain expert who really knows his stuff. He'll walk you through basic usage for the service, strengths and weaknesses, and even give suggestions for how to use the service in exciting new ways. This is all top notch.
As I've mentioned though, the book has downsides and they are significant. The first is that the content is definitely time sensitive and the clock is already ticking. As Amazon makes changes to these API's, the content will become less and less relevant. While that's to be expected of most computer manuals, it may be a little more significant here as most of these services are still beta releases undergoing significant development. This hits home most in the SQS chapter which received a significant upgrade just as the book went to press. The author does mention the differences, but he admits that it invalidated much of his content. Keep that in mind if you are readying this review a long time after I've written it.
I'm afraid the other minus is worse. The book uses Ruby for most of the code examples and I hate to judge the code of a language I know we all write differently, but the fact is that this Ruby is pretty bad. It's clear Ruby is not the author's forte and it really feels like it was selected just to score more points with the popular crowd. The code shows poor programming practices like never closing file handles, a total misunderstanding of the purpose and usage of IRb, poor use of Ruby's modules in an attempt to avoid subclassing, and much more. That's just in the first few examples too. At one point, after developing a full client library for a service, the author downloads an alternative client implementation to show examples with. Hint, hint. The code is just bad.
Amazon provides these Web services to enable us developers to lean on the world-famous infrastructure of Amazon.com in our own applications. There are some very real advantages to integrating these solutions and thus it's very valuable for developers to be familiar with what they can offer you. This book will give you that and thus is probably worth a read. It would be a rare developer indeed who cannot think up many uses for S3 and EC2 at the very least. If you don't know what those two services are and what they could do for you, I strongly recommend you learn a little more about them. Just don't take the code in the book too seriously.