Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to run Google App Engine Development Server on my own server?

Is it possible to run Google App Engine Development Server on my own server? How well development server datastore can handle high load and what amount of data will cripple it?

like image 225
newbie Avatar asked May 04 '11 10:05

newbie


2 Answers

Some options for running an App Engine app without App Engine:

  • TyphoonAE, which runs Python apps using a stack of popular open-source components
  • appscale, which runs Python or Java apps off of Amazon's EC2 cloud

I haven't tried either. See this question for some additional discussion of both.

How well will the datastore perform if you simply spin up dev_appserver.py on a public IP? If you have a lot of data, poorly. When using the dev server, the entire datastore is held in memory, so as you insert data, Python's memory usage will climb. Once you've added enough data to cause your system to start swapping, your app will become unusably slow. There's an option in the dev server to use a SQLite datastore stub instead of the in-memory stub. This makes performance tolerable with large amounts of data, but it's not nearly as efficient as the production datastore, so datastore access is relatively slow even with small amounts of data. Certainly much slower than the in-memory datastore with small amounts of data.

Running the dev server as a stand-alone production server is just generally a bad idea. The API stubs provided with the dev server are designed for use by developers, not users. E.g. sending mail just writes a log entry instead of actually sending mail; logging in as an administrator entails clicking a checkbox that says "log in as administrator".

If you want to move an existing app off App Engine, use one of the options above. If you're developing an app from scratch, use Django or some other framework that's designed to run on generic hardware. The development server is intended for just that: development.

like image 154
Drew Sears Avatar answered Oct 07 '22 09:10

Drew Sears


YES, with a lot of missing features (parallel queues, cron jobs, mail, XMPP,..), some hidden security issues, poor performance and stability, it is technically possible.

As you probably guessed, it's a bad idea.

Take for example the HTTP server; using the development server you would put in Production an undocumented BaseHTTPServer, quite impossible to configure and with probably some hidden security flaws ready to be exploited.

As @Drew well said, there are better choices out there to run you Google App Engine code in a Production ready environment that is not GAE.

like image 40
systempuntoout Avatar answered Oct 07 '22 10:10

systempuntoout