4 ms·
Hehe, we're running GAE at work and I'm constantly looking for other options / trying to persuade management to spend the time on migration. I spend 8-12 hours
by filleokus 10y ago
Hehe, we're running GAE at work and I'm constantly looking for other options / trying to persuade management to spend the time on migration. I spend 8-12 hours a day fighting with GAE in one way or another, even though I very well might experience the "green is grasser" symptom.
Many things are nice with App Engine, outlined in the post. But so many things are not nice:
- For us the performance characteristics for some queries in the NDB (NoSQL datastore) have really left much to be wanted.
- The inability of calling C-libraries from Python code (except those provided by Google, they provide standard stuff like cPickle etc)
- The UI for logs / querying the database / admin is quite bad and buggy. Can't really use it in Safari at all (might very well be the wrong doing of Safari, but still)
- Limitations in how long functions / tasks can run. I've spent all of my Friday night tonight (I'm in CET) re-writing code for a batch-processing task that took just above the hard imposed limit of 10 minutes to run. According to the docs an exception is to be thrown when the task is nearing its limit but most of the time (intermittently…) the exception is not thrown and just kills the process…
- Limited community / toolset. Using GAE feels somewhat like using something really old or obscure, quite few SO questions/answers (the upside is that many of them are written by Gudio, which lead the NDB project before quitting from Google), and extremely limited third party tools / plugins for enhancing the developer experience. For example I haven't found any good way, except the GAE provided one, to do performance profiling.
- GAE has somewhat of a bad rep in some parts of the Python community I've found. A couple of Python libraries I've tried to use have not worked and then I've found bug reports where the maintainers have explicitly stated that GAE is not supported because of some limitation they have imposed. The biggest example I can come up with right now is probably Requests
With that said however, I feel like Google has started giving GAE more love recently. The documentation seems to improve, the dashboards/web UI:s have undergone major rework (not all of them improvements per se but still!). I actually said to my management a while ago that we need to move away from GAE in the medium term (1-2 years) because I feared that Google would start to "sunset" GAE. I wouldn't say that is the case today, but I could not go so far as to say that I would recommend GAE.
GAE is a very nice platform in many ways, but very limited. The tradeoffs for all the ease is quite high and should probably be considered very carefully before picked.
- boulos 10y agoIt seems like you might be better served by the new Flexible environment. You've got a desire for longer running tasks, C-extensions for Python, etc. which fits the App Engine Flexible (neé Managed VMs). Disclosure: I work at Google on Cloud.
- deepsun 10y agoI have many years of experience with GAE, and still love it, the point is to use it where it fits. Agree about slow web console, especially for logs. Datastore viewer got better, though. I don't know about Python ecosystem, but I think that if you need C-libraries, then you shouldn't be running it in GAE. Low-level stuff sounds better fit for GCE, or AWS. Our team lives in Java world, and pretty much everything there plays fine with GAE. There are some low-level areas (like Unsafe memory management) where it doesn't -- but it's not web-serving part anyway, so it doesn't fit in GAE, IMHO. For example, we offload our recommendation regressions to Docker container engine. Recently they released so-called Flex environment which is basically container engine (Kubernetes) for any Docker container that listens on port 80. And they have several pre-build containers for different languages and with stubs for Standard environment, so you can throw-in your existing GAE app there. I didn't like Flex environment for my web serving part, though, for two reasons: 1. Too slow to deploy a new version, like 10 minutes. Really? It seems to upload all the files (Standard uploads only what's changed), and after that they spin up a GCE instance to build a Docker container from the files. And that takes time. 2. I now must care about serving static files myself. In current Standard environment, statics are automatically served by Google's servers, even if my app has no instances running. For Flex env they suggest to upload statics to GCS, but it's additional ops work.