Building Applications in the Cloud Book Review
As cloud computing embeds itself into the computing landscape, developers unfamiliar with the challenges and complexities of writing cloud-based applications will be ill-suited to tackle many of the scalable utility computing problems ahead. Fortunately, author Chris Moyer offers assistance in the form of Building Applications in the Cloud. Read on to find out if his book hits the mark.
Segmented into three parts, the book covers cloud concept, patterns, and projects. The first part defines and reviews the history of the cloud computer, the components that comprise it, and reviews three cloud providers (Amazon, Google, and Rackspace), spending a majority of the book with Amazon's solution. The second part consists of four chapters on designing an image, architecture, data execution on actions, and clustering strategies. Part three demonstrates two projects, a simple weblog written in raw Python (right down to managing the network protocols and HTTP headers) and a rewrite of the weblog application using a custom cloud-centric framework created by the author called Marajo.
The book is optimally written for Python programmers who need to build cloud solutions using the various Amazon Web Services (AWS). Because the author contributed to the boto Python library, the large portion of the book discusses the use of the library and the variety of hooks it providers into Amazon's S3, SQS, EC2, ELB, VPC, EMR, RDS, and SNS services, among a variety of other functions. While a few brief examples are applied using Google AppEngine and Google Storage, this is predominantly a book on using AWS with Python.
The final part of the book spent too much time on the simple weblog by focusing on the minutia of handling page requests at a hand-coded level when a number of Python web frameworks and ORMs already perform this heavy lifting. I was also dismayed to see the other opt to create and promote yet another Python web framework of his own design (Marajo) rather than contribute extensions to existing frameworks like Django or pylons. To his credit, the author did state that these were options he seriously considered, but decided to forge ahead with Marajo to take advantage of AWS without the legacy overhead of pre-existing web frameworks. However, beyond the academic analysis of how Marajo is interfacing with AWS, I don't see the framework being widely adopted since beyond the tight AWS integration, it doesn't offer the rich ecosystem and large community that other Python-based web frameworks currently have to offer.
Regardless of the promotional space given the author's contributions to the Python and AWS communities, the author succeeds in sharing his expertise on building cloud applications, and sold me enough on the concepts to download the boto library to have ready in my toolbox should a Python-based AWS project come along.
[Editor Andrew Binstock adds:
By coincidence, Mike and I were both reading this book at the same time. He's kindly let me tack on my opinion of this book. I am not nearly as enthused as Mike is.
The use of Python would normally be no problem, as Python's syntax is easy enough to map to other languages. However, the use of the author's own Python library makes it nearly impossible to do this.
I also found the text rife with annoying errors and peculiar statements. In the former category I find (for example on p. 80), the comment that a given cloud service "... generally flows first-in-last-out (FIFO)." It's now up to me to clean up after the author and find out which of these is correct: the wording or the abbreviation. Numerous (and I do mean numerous) other errors of grammar and syntax are sprinkled throughout, suggesting careless writing and uncharacteristically poor editing by Addison-Wesley.
Here's an example of peculiar statements: "Developing your Software as a Service (Saas) takes you away from the dark ages of programming and into the new age in which copyright protection, DMA, and pirating don't exist." Huh?
The following sentence combines peculiarity and confused English. He's speaking of cloud providers: "Some provide query-able databases and some that provide you a filesystem, such as a resource."
After reading such content page after page, I was convinced that the author lacked substantial understanding of his topic, save for describing his own project. Not recommended.]
Title: Building Applications in the Cloud: Concepts, Patterns and Projects
Author: Christopher M. Moyer
Publisher: Addison-Wesley Professional
Price: $28.79 (Ebook), $35.99 (Print)