Audrey M. Roy

Art, design, Python, JavaScript, and general silliness 
« Back to blog

What Google App Engine needs to improve, and why I'm [not] moving on [anymore]

Update 9/15:  One of the folks on the GAE team saw this!  First he gave me more apps. Then he sent me another email saying he "just pushed a change live which should fix deployments so that you actually have 250 (instead of the mysterious 100). Please give this a try and let me know!"

This totally changes things.  Wow!

****

I like GAE a lot.  But in the end, it's hard to stick with it for major, time-sensitive projects where you don't have a lot of time to waste on workarounds.  As a developer, you just don't have enough control over your work. 

My biggest troubles:

  • You can't pack up and leave appspot.com.  There is the dev_appserver, which you can use to test locally.  But there's no easy, reliable way to run a GAE server clone on your own box.  Appdrop, a project that tried to address this, was last updated in 2008 and seems to have fallen behind the new GAE SDK releases (I could understand - what a pain to keep updating).  Want to run a GAE clone on EC2?  You can't without a lot of work.
  • Lots of arbitrary limits.  Sure, they were made with good intentions, to improve performance.  But you're bound to run into one trap or another with no way out.  Max # of files in an app, short timeout for processes, max # of IN queries, etc.
  • The local dev server is inadequate for testing.  You need to be able to test your app in an environment identical to your production setup.  I thought I could get away with using one of my 10 appspot apps as a test app, but I was hitting the max 100 deployments/day limit by 4pm and having to wait until midnight for more quota (and the max 250 deployments that they said is untrue, it's really 100).  I had issues with cross-domain requests being treated differently on appspot than on my local server.  When you're working with OpenSocial, you find that different social networks are finnicky about cross-domain requests in different, often surprising ways. 
  • (on Python GAE) If an unsupported library isn't pure Python, you can't use it.  Workarounds for this involve using another server, which is irritating.  This is often inevitable - when you're starting a project, you often don't know what libraries you're going to need.
  • And finally, you can only have 10 apps.  So it's inadequate for even little hobby or test projects.  As someone who experiments a lot, I usually create (and finish) at least 1-2 mini-projects per week.  I've been reusing my appspot apps, but there are ones that I'd like to leave up and running for others to see and use.

I do want to mention that GAE is a really amazing product that just has a few kinks that need to be worked out.  The GAE team has made great outreach efforts in the developer community and has always been helpful.  And GAE so close to being what I've always wanted.

I'll still use GAE every now and then, and I'm likely to move my OpenSocial app back to GAE in the future.  But GAE has too many roadblocks for rapid development.  I was spending more time on workarounds than on my actual app.

If App Engine were open-source, I could run my own clone of the production server somewhere.  I'd be able to get around all the roadblocks and develop my app using their framework and datastore quickly, in a setup basically identical to production, and then I'd be able to come back and optimize it to meet the appspot limitations if I wanted to have their automatic scaling/load balancing.  I'd also love to be able to peek under the covers for my own knowledge.

Alternately, if App Engine would just let me pay to get around all these issues, I'd get my company's credit card out right now.

Posted by email 

Comments (8)

Sep 13, 2009
 said...
All good points you bring up. For the 10 app limit, I've started using another account to register apps and then invite my main account as a developer. annoying, but it works just fine.

And the arbitrary limits can be, well, arbitrary, but there's usually ways around them. For instance, I use the method below to make a list of lists for more than 30 keys for a IN subquery, and then run each 30-key IN query in a loop....

def slice_up_list(list, MAX_LIST_LEN = 30): # 30 is subquery limit

""" slice up a list by a maximium length.

"""

list_groups = []

for i in xrange(0, len(list), MAX_LIST_LEN):

list_groups.append(list[i: i+MAX_LIST_LEN])

return list_groups

Maybe for some people, setting up a server is faster, but I since I never really got my sysadmin boy scout badge, I still think GAE is a great option for me. And it keeps getting better and better! It's been just a couple months with task queues available, and already I find them indispensible.

Sep 13, 2009
Audrey M Roy said...
James, thanks for the GAE sunshine & optimism! I agree, it does keep getting better and better.

I might have spoken too soon. I don't know if I'm actually giving up on it yet. The max 100 deployments/day thing was the final straw. But hmm...my parents don't have appspot accounts yet ;)

Sep 14, 2009
srabbelier said...
I think a lot of these limits can be lifted on a case-by-case basis by the appengine developers. You should give posting to their Google Group a try and ask for more (deployment) quota.
Sep 15, 2009
clibou said...
Makes sense to move on for now, in my experience Goog is guilty of playing Mother Hen mainly because it’s still focused on grabbing consumers before others can get traction. Most egregious Goog does not provide means to make money for developers. Microsoft does understand entrepreneurs need to eat.
Sep 15, 2009
Audrey M Roy said...
@srabbelier, they lifted mine now :)

@clibou, yeah, some of their products are like that. I think they succeed when they try to do things that are entirely different from anything that's out there. Like appengine - it seems to be an evolving work of art. It does need a little more maturity, but it's getting there.

Sep 16, 2009
srabbelier said...
Glad to hear they lifted your limits, I think their policy of "restrict to sensible defaults for most, override in special cases" makes sense. Instead of relying on "nobody will use that much anyway", they ensure that they have enough capacity to give us what they promise. By making exceptions in case-by-case basis those that need it can get the things they need, while maintaining a set level of service for everybody.
Oct 30, 2009
drousseau said...
you can easily set up your own GAE server w/ TyphoonAE: http://code.google.com/p/typhoonae/
A tutorial: http://sites.google.com/site/gaeasaframework/typhoonae
Jul 11, 2010
Cyber Fonic said...
Hi Audrey !

You might find that AppScale might address some of your issues with appspot.

Cheers!

Leave a comment...