Dr. Dobb's Digest August 2009
Using Google App Engine
Charles Severance
O'Reilly Media
262 pages; $29.99
Even though Google App Engine has been available to developers for some time, deep technical books on applying this scalable cloud service have been sparse. Does O'Reilly's entry, under their Google Press imprint, fill this void? Read on to find out.
Like many web-connected developers, I have been aware of Google App Engine (GAE) since its invitation-only beta days, but never really took much interest in it. I am a big fan of the Python scripting language, but the fact that GAE uses Python as its preferred logic language somehow failed to grab me. One of the main reasons for this was at the same time as GAE's initial public beta, I was busy immersing myself in the Python-based Django framework and I wasn't about to confuse myself with an alternative approach to Python-centric web application development. Fortunately, GAE was constructed with enough flexibility to allow a framework like Django to live within its constructs, as detailed in this April 2008 article by Googler Damon Kohler (http://code.google.com/appengine/articles/django.html). Additionally, with the inclusion of Java support, GAE offers plenty of flexibility for the developer seeking a hosted cloud solution. Unfortunately, author Charles Severance failed to explore either of these important features in Using Google App Engine. The book is instead oriented toward first-time web programmers unfamiliar with even the most rudimentary aspects of web development. Nearly half the book is spent on the basics of HTML, CSS, HTTP and basic Python syntax. Considering the book's brevity and cost, this expenditure left few pages solely dedicated to the GAE.
Once the beginner tutorials of basic web page construction and delivery are out of the way, the second half of the book dives into a high-level overview of the GAE, its use of templates (based on Django's template system, no less), handling cookies and session management, using the proprietary GAE Datastore for structured data storage, creating a GAE account, uploading and testing a GAE-friendly application and understanding and fine-tuning the GAE memory cache parameters. Four appendixes, one each dedicated to the target development OS (Windows XP, Windows Vista, Mac OSX and Linux) literally repeat the same information with the name of the OS replaced and other minor differences. These were quite frankly a waste of paper; the author should have consolidated the OS variations into a simple grid or footnotes where appropriate. That would have left more space for explaining the inner workings, design optimizations and best practices for developing best of breed GAE designs.
Besides the minimal amount of unique material in the book, one of its biggest failings for me was presenting me with a convincing argument to use GAE in the first place. The advantages mentioned by the author read like a Google advertisement from a Google fanboy. The author failed to share any well-known websites that run on GAE, interview others who are as enamored with GAE as he is, provide a chapter or appendex on answering privacy and intellectual property right concerns, service level expectations, etc.. While the book did a fair job at elevating my interest in GAE, it wasn't enough for me to consider placing any of my web apps into Google's cloud.
Overall, O'Reilly (and Google for that matter) missed a golden opportunity with this book to deeply explore the technical facets of GAE. Instead, they spent paper and ink on rehashing basic concepts that have been much better served in other O'Reilly titles. While this might be a helpful book for someone who has no web development experience whatsoever, yet aspires toward understanding MVC patterns and a broader grasp of the complexity associated with modern day web applications, it's a major letdown for practiced developers seeking deeper understanding of GAE in the real world. Perhaps O'Reilly will revisit this technology again under a "Mastering Google App Engine" title.