Google’s AppEngine - Comparisons to Django
I’ve long been a fan of Amazon’s E2, S3, FPS, SimpleDB, etc. These services are changing the way that early-stage startups make their platform decisions.
News outlets are quickly picking up that tonight Google is launching a hosted platform for web developers: App Engine.
I’m extremely excited about this for several reasons:
- Google is one of a handful of companies that have truly understand Internet scale. In addition, they have regularly dealt with the challenge of taking a small application and scaling it very quickly (nearly all of Google’s acquisitions go through this)
- By offering application hosting, Google is stitching together many of the components that Amazon’s services provide, making app development even quicker.
- While Amazon has been doing a great job pushing itself, the competition will be great and will raise the bar.
- It started off with Python support and is modeled after Django (which BrandVerity is built on and I’ve been very impressed with)
I look forward to seeing AppEngine develop further. I’m especially curious what it will take to launch an existing Django application on AppEngine.
I also learned for the first time that Google uses Python internally for its scripting. I guess that could explain all of the Google Python developer ads that keep popping up in my gmail account.
Update: I took a look through the documentation and now have a better handle on how AppEngine operates. It definitely borrows a number of aspects from Django:
- Django Templating Engine: The SDK provides Django’s templating engine (although it allows others to be used). The engine has been criticized by purists for allowing too much logic in the presentation layer, however I’ve found that the templates allow sufficient logic (if statements, for loops) to actually build webpages, while preventing the more complex view logic from making it to the front-end (variable assignment, method calls, etc.)
- Similar modeling system: In Django, you define your model classes and the framework provides common object methods that handle the sql underneath. The AppEngine models look very similar although it looks like the similarities are only conceptual (they definitely don’t share the same code and are interacted with in different ways). I can easily see how frameworks like Django (or Rails) could be modified to treat App Engine as another storage backend.
- Similar request and user frameworks: Django provides a few frameworks that are commonly used request.user (via contrib.auth) and its session middleware. These handle things like authentication, permissions, cookies, etc. Google’s APIs seem to function pretty similarly, although this isn’t exactly groundbreaking as these frameworks are fairly standard.
I don’t see a way to run python scripts that are independent of web requests. The O’Reilly article suggests that developers may utilize EC2 for batch operations. However, I have to believe that Google will support batch processing in some form as this forms a critical component of just about any web application (and I’m sure they don’t want to encourage people to write batch applications that are initiated by get statements)


