Only one of the article's points is related to Java and the long startup issue. And it fully applies to Python as well - GAE does not load large, sophisticated Python apps in under a second. Looking at recent reviews of the app (EA's "The Simpsons: Tapped Out") suggests they may still be having server issues (although it's hard to tell what's the fault of the client).
Going through them point-by-point: * Hidden Arbitrary Quota Limits - no idea if this has changed, but you can probably be certain there are some still (although maybe not this particular issue). If you're ramping up to "EA game" scale, it's probably a good idea to frequently check in with support. * Hidden Arbitrary Library Behaviour - from comments in the article, the specific issue about header lengths seems to still be an issue. It's not clear if the failure behavior is the same (silent drop), but you can assume that as you push the boundaries of GAE you will bump into a few undocumented quirks like this. While certainly a legitimate criticism of GAE, it's not unique to GAE - pretty much every platform and library has quirky quasi-documented behavior that you will only discover at runtime, usually in ways that displease users. GAE is a little tougher because it's not opensource, but it's actually better documented than most - although, as the article points out, it's not perfect. * No pre-scaling mechanism - this is true, but the answer from GAE support (which the author dismisses) is a legitimate answer. You basically hit the new version of your app with fake load to spin up a bunch of instances. It's not as graceful as having a button somewhere, but it will work. Use 'ab' to flood thenewversion.yourapp.appspot.com with requests. * The scheduler loop of death - IMHO, user-facing startup requests are GAE's biggest problem right now. It's more of a problem with Java and less of a problem with Python and pretty much nonexistent with Go, but let's face it, this one issue is not why you pick development a platform. So let's say you want to use Java. To avoid the 'loop of death' you need to keep app startup times reasonable. This gets harder as your app gets bigger. You can partially fix it by running larger instances (F4 starts up a lot faster) but that costs $$. You can partially fix it by streamlining your startup flow (mostly by lazy initialization). You can tell the EA devs were using some standard Java dev patterns that should not be used on GAE - in particular, pre-warming caches is a terrible idea. However, even if you keep startup times low enough to prevent the loop of death, some user requests will still see cold starts. You can try to tune this with lots of resident instances but I don't think this works very well and it only reduces the effect. In truth, it doesn't matter if a request comes back in 20s or never; the user has already reloaded the page or assumed the app crashed or whatnot. Huge back mark. Star this issue: https://code.google.com/p/googleappengine/issues/detail?id=7865 * Under-powered application front-end instances - this is true. It's also true with Heroku and pretty much every other PaaS provider. * Under-performing Google Data Store and under-provisioned Cache - this is the first one that seems to no longer be true. Datastore access seems to be quite a bit faster these days, and if you want dedicated memcache you can buy it. * User Interface for Androids - I don't know what this is about. The admin console is actually pretty good. The backup functionality is not great, true. But the logs - especially the new logs console - is *amazing* and vastly better than anything I've seen on any other PaaS platform. The only thing that bugs me is that it's hard to debug data issues without a full query language like SQL - the datastore viewer is really primitive. And having worked in EA Online, the GAE console is lightyears ahead of anything they had during my era. I don't really understand what he's comparing it to. There are some pieces of advice I would have given to that team before they started: * Don't go "all in" with every GAE service. Just use the core features that bring the most value: the datastore, the task queue, memcache, blobstore. Avoid the edge features that are less well maintained and lock you into proprietary protocols or implementations - Channel, Endpoints, XMPP, Authentication. * Lazy initialize everything. Startup time is the #1 failing of GAE. * GAE is not "all or nothing". Some components are better off run in other clouds, maybe even GCE. Latency is not that big. * Load test. Running game backends at EA scale is hard. I really would love to have seen them try this with ElasticBeanstalk, which, last time I tried it, was a _disaster_. There's a lot of things about GAE that suck, but they start to look a lot better when you compare GAE to the alternatives. Jeff On Tue, Aug 5, 2014 at 7:01 AM, Joshua Smith <[email protected]> wrote: > As far as I am aware, that’s all pretty much still true. > > A couple points though: > > 1. They were using Java. If they used Python (or better yet, Go), two of > those issues would disappear because Python and Go can both spin up a new > instance in less than a second. If you are doing a big production scaling > mess like they are, using Java on GAE is a REALLY bad choice. A REALLY, > REALLY, REALLY BAD CHOICE. Don’t do it. > > 2. If you do not expect massive usage, then this article is completely > irrelevant to you. I have several applications with just thousands of daily > users, and I’ve never had an issue with any of this stuff. > > The only complaint I have about GAE is the lack of API stability. I hate > that I need to go back and change my applications that are working > perfectly fine because Google decided to migrate from one datastore to > another, or one python version to another, or whatever. But even that is > balanced by the fact that they leave the deprecated stuff working for THREE > YEARS, which is really kind of amazing. > > -Joshua > > On Aug 5, 2014, at 1:37 AM, James Foster <[email protected]> wrote: > > I came across this article today: > > http://techtraits.com/system%20admin/2013/02/24/The-problems-of-working-in-App-engine/ > > I'm considering undertaking my second project in App Engine (larger than > the first), but am a bit worried about some of the pitfalls in the article. > Does anyone know if any of them have been addressed? (and if so, which > ones?) > > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/google-appengine. > For more options, visit https://groups.google.com/d/optout. > > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/google-appengine. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/google-appengine. For more options, visit https://groups.google.com/d/optout.
