Last night, Google announced App Engine, a hosted web application platform. We’ve now tested the service directly by writing and deploying a test application called appengine.crunchbase.com—a HotorNot popularity contest for startups. Our experience with building and launching an app is below.
Google promises developers two things with App Engine: to reduce the time from writing code to deploying it on a web server, and to leverage Google’s massive infrastructure. We decided to write a simple app on the platform, deploy it, and get some traffic to really see how easy App Engine is.
Getting Started
Looking at the developer documentation, App Engine boasts a powerful API. The platform comes with a Python scripting runtime, static file serving capabilities, easy and tight integration with Google user accounts and email services (obviously a big play), simple access to a powerful persistence engine with queries and transaction support (aka a really good database), near real-time site monitoring and statistics, and the promise of consistent high performance and essentially linear scalability.
Despite its potential power and underlying sophistication, App Engine was surprisingly easy to get started with. Now, being Ruby on Rails guys, the fact that the only currently supported language is Python was a bit humbling. Still, the SDK provided by Google proved dead simple. Our first application was contained within a single Python script, making the path the code was taking to produce responses very clear. We incrementally added features: first accepting input from the users through forms, then storing and retrieving that data using the provided persistence API, and finally breaking out the user-facing web page code into a proper Django template.

The App
The web app we came up with is super-simple, shamelessly self-promoting, and easily game-able. It’s a one-page voting site using company logos slurped in from CrunchBase, our main project. The app has only two requests: one for rendering the page, the other for recording a vote (one GET, one POST request). The first real issue was getting our initial data, some URLs and names, into the database. While we later found that Google provides a slick bulk-update tool, we got going with a simple action that manually parsed our comma-separated values into the database. Another thing we wanted from the service was it to be served from our own domain. By default, Google hosts all App Engine projects on your-project.appspot.com (think blogspot), but they do offer domain services through Google Apps, which was pretty painless to setup if you just want App Engine functionality.
Deployment
The SDK provides a server that emulates the App Engine platform, making it possible to easily develop applications locally that will later deploy to Google’s cloud. Once we had a presentable first app coded up and tested locally, we deployed the app to Google’s server easily from the command line. This was particularly compelling; we’ve spent hours or even days deploying web apps to comparatively trivial servers.

Overall, the process from sign-up to deployment took about 4 hours, with the vast majority of that figuring out what we wanted to do and remembering how to do things like sort arrays in Python (we also spent an embarrassing 15 minutes on some poorly formatted hidden HTML fields). The rapid prototyping of the app and the ease of deployment is clearly the real power of App Engine right now. The scalability of App Engine is exciting but elusive; most apps won’t need it for a while. It’ll also be interesting to see how truly scalable it is, considering the linear scaling efforts on Amazon EC2. The redundancy and ease of deployment should be the immediate attraction for developers.
Try our app out: appengine.crunchbase.com.
Mark McGranaghan took the lead on coding for the site and contributed heavily to this article.
Update: Looks like our app was a little bit too popular:

Update #2: Back up now. Great success!









See all



I’d love to see a skip button on there too.
Fantastic stuff, Henry! It’s really useful seeing this from you guys, and I’m amazed it happened so quickly. Bravo.
Hassan - I doubt we’ll be doing much in the way of feature enhancements on the app. The point was just to test the platform.
It would be interesting to see an app that simulates load and how the performance compares on Google vs. Amazon.
Henry/Mike
One thing that none of the blogs , TC included , addressed is the fact that GAE doesn’t permit the installation of any standalone software. Lets say you need to install a software that is not run on the app server but as a standalone component. EC2 would allow for this but not GAE. This might be a serious limitation.
That app is actually kind of fun. Hot or Not for startups.
This is probably one of Google’s infamous 20% spare-time projects led by some technical guru with absolutely no business sense.
No wonder people are leaving Google.
App is cool. Agree that a skip option would be nice (i guess refresh works too). Awesome that you got it up so fast and wrote about it.
Are the 404 errors a result of Google apps or your programming? I am just curious.
Mark/Henry, good work and thanks for the write up. Will be messing with Google App Engine later this week.
Qik Micheal, Todd, Sam, Jorge: cheers.
karthik: definitely a limitation. it exposes the differences of the approach.
FigureB: not getting any 404 errors. I of course blame Google for all issues.
“The scalability of App Engine is exciting but elusive; most apps won’t need it and those that do won’t use Google.”
Can you elaborate why apps needing scalability won’t use Google? Thanks!
This is the single biggest service, bar none, that Techcrunch has ever contributed to the readership and community at large. It makes the preceding body of journalistic work pale.
By just going and using the service, and clearly writing about the experience, you, sir, have distinguished yourself as unique from the awful pundits that are writing great fictions and strategy pieces about Amazon vs. google platforms.
I am getting back to active programming after years of working the Product management side, and now it seems that I must add Python to the Ruby books.
I would highly recommend that shops and developers seeking to deliver w20 apps to the small and med business community also look at http://Keroku.com.
Thanks ever so much, again.
I have been playing around with it for a minute and the number of votes when from 8,000 to 10,000. Is this a test to see if the new app engine can handle it? (its obvious it can handle it, if you have read Matt Cutts blog)
This app is addictive, Henry. Great job. Maybe we should make it a real app after all. But we’ll need a name. Suggestions?
I think you should make it a real app. Put limits on if you have voted for it, you can’t vote for it again. Maybe make it so you compare competitors. Call it ‘Start Down”.
Thanks Erick: we probably should have a name.
Also, we are also at 20% of our CPU quota for the day… uh oh. Might need to call Google.
Anyone have any good name suggestions?
I was wondering about this…5,000 votes in 10 minutes? I think you caught on to something. You should post stats from today in the next few days.
Looks like somebody figured out how to game the thing and is pumping Mahalo.
why do you guys hate pay per post so much. its hard for me to believe that TC users actually voted it down to be the worst. not that i care much, but just a thought.
Cameron, You’re right. Someone twitter Jason Calacanis to stop.
How about startupstartdown? or startupdown? or sud?
or the buttons could be ” ‘Sup ” (for up / hot) or ” ‘Sud ” (for down / not)
I agree with 13, that you guys just distinguished yourselves, and if Henry Work did this on his own initiative, well, he deserves a raise.
Michael, I would actually keep this app around if I was you, i just spent 30 minutes looking at startups.. a skip feature is a must though.
My suggestion: Fail OR Not
Think it just got hacked — blinkx is on a tear.
Looks like someone wrote a script to call the down-post for a given hidden key value over and over.
I like startupdown… Fail or Not is solid too. It’s totally getting gamed now… which is understandable, because it’s really easy to game (the code we use is above). Someone must really dislike blinkx.
CrunchVote
how come total votes was reset to 0? did you restart the app?
and don’t you save already voted startups? i keep getting the same startups
I too would love to see updated screenshots of the dashboard. Thanks, this is a great post/app.
Hup! Looks like the voting data got reset. Probably our fault.
That is a good idea, I was hoping they would make one of these.
Fun stuff. I applaud Goog’s efforts to further trivialize application development and scaling. This is a natural fit for a host-less facebook, opensocial and other widgety apps. Someone please tell rackspace their days are numbered.
Fwiw, I clicked a few times & encountered this (no, I won’t say who I voted down):
Traceback (most recent call last):
File “/base/python_lib/versions/1/google/appengine/ext/webapp/__init__.py”, line 486, in __call__
handler.post(*groups)
File “/base/data/home/apps/techcrunch-demo/1.12/vote.py”, line 43, in post
logo.down_votes = logo.down_votes + 1
AttributeError: ‘NoneType’ object has no attribute ‘down_votes’
Ok on second thought, don’t short rackspace yet.
2.44 AM - http://appengine.crunchbase.com/ is down
is this the high reliability of google’s platform ?
I’d like to see the stats after 24 hours, traffic, data usage etc.
Your app is fixed to select a preferred selection…
Its not random
So this means I can vote for chunchbase 100 times?
Fixed: no. Although the pool of companies is only 100 large (and that pool is fixed), we use the randrange() function (which presumably is pretty random).
yes, what a good idea, block me on Akismet while your at it
As I said the pool is fixed, why is that?????
I agree, the app is kind of addictive. You should flesh it out and make it an actual app, it could be interesting
Nice sample, I too got a 404 after voted down a company for the second time… will be interesting so see the stats when you max out the resources for the day.
“Server Error”. And when it works, it’s terribly slow right now.
Google Apps got Techcrunched?
How you like that?
Fixed: easier to implement. It’s just the first 100 companies in CrunchBase. I think it’s more interesting to do it this way than to have thousands of companies to choose from.
Looks like this isn’t as scalable as Google hoped it would be.
Back to Amazon!
Somebody needs to run some benchmarks. The site feel very very slow. Slower than 90% of websites out there. I have a lag of at least a full second when I submit a vote. Anybody else having this slow experience? If true, this would absolutely kill the idea of using AppEngine.
i was hoping for an easy coghead like tool
This is easily one of the best posts by you guys this year.
It’s just showing us simple logos and I just got a timeout server error