Hacker News new | ask | show | jobs
by ben_jones 3494 days ago
App engine is the biggest enigma. On paper it is a near perfect cloud experience. It has a huge range of services covering the needs of most web applications: task queues, caching, RDBMS, storage, monitoring, logging, a fantastic dashboard; the list goes on and the scope of GCP and GAE in general is truly massive. At first glance the documentation is exhaustive, support quick, and you get the feeling that the product has the full backing of Google with many hundreds of engineers continually improving and iterating.

Yet then you get into the trenches of it and (IMO) you realize the sum of its parts is much less then the value of the individual pieces. You feel the pain of the documentation writers who had to transcribe examples and helper libraries to ten languages, "beta" features that have been out for years, "examples coming soon" in README's that are two years old.

Want to use python3? That's cool, use the flexible environment. But it doesn't support taskqueues or many other features.

Need websockets? Thats cool, we kinda have this socket API and similar for some languages and environments. It doesn't really work in the flexible environment though sorry :X.

All our python examples are in framework X, that's sufficient for everyone using framework Y, right?

Don't get me wrong, my company uses GAE and its benefits outweigh the costs for us. But there is a very real "Googliness" to the failings of the platform. The shear breadth and requirements of "fixing" and iterating on GAE must not be a very fun project to work on.

1 comments

> All our python examples are in framework X, that's sufficient for everyone using framework Y, right?

I work on GCP on the Python samples.

We generally pick Flask, since our thinking is that for many API calls, it is pretty much identical code in other frameworks, and Flask has minimal boilerplate.

We have quick starts for Django for all our platforms. I think Flask + Django covers a huge chunk of Python frameworks people are using.

If you think we are missing important Python samples, you can file an issue here:

https://github.com/googlecloudplatform/python-docs-samples

There are a lot of potential samples to write, so any guidance on which ones people want is always helpful to us.

Thanks for your comment and I want to say, though my comment was rather pointy, I respect the work all of you are doing and I do see a lot of improvement in the platform.

I keep a local branch of the python-docs-sample repo and just took a gander to refresh my memory. Specifically I see a quite a few examples using class based views based from the webapp2 package. I don't think it's unreasonable to have this as a major reference point, but it does require some extra documentation reading when converting to say, function based views in Flask.

Our personal use case is python3 in the flexible environment and I'd like to point out two notes while I have you here (if it's appropriate):

1) Are task queues coming to GAE Flexible environment - python? (and more over is feature parity coming between the google.appengine and google.cloud packages)

2) It's undocumented that the flexible environment of python requires a specific configuration variable to be set in order to make a connection to cloudSQL. I raised a support ticket for it a few weeks ago and the documentation hasn't been changed. It took me a few hours to debug it personally and I would like to save others the effort, can users make a pull request on the docs directly? For reference the variable is "beta_settings: cloud_sql_instances:" in app.yaml (it's present in the python-docs-samples but has no comment explaining its significance/requirement).

EDIT: I can no longer edit my original comment, but it seems GAE flexibly environment for python does support web sockets, though I would question the effectiveness of stateful servers in GAE. Of course thats an implementation problem and not one with GAE.

Thanks for the feedback, not pointy at all.

You're right my original comment was misleading, most of the GAE Standard samples are webapp2, but that's because it comes built-in to the platform and can be specified in the app.yaml, so webapp2 doesn't require people to `pip -t` to vendor Flask into the project. It might be worth revisiting if some of those samples should be in Flask or in both.

1) Guessing you already know you can use Pub/Sub for background tasks, examples here in our Bookshelf app:

https://cloud.google.com/python/getting-started/using-pub-su...

I think Product knows that the developer experience for tasks could be better and closer to Standard, but we haven't announced any public roadmap for task queues on Flexible.

2) I see references to that variable in our docs so I'm not sure where you're saying it's missing. Unfortunately you can't submit PRs for our docs, I wish you could.

Thanks again for the feedback, getting pretty off-topic so maybe good to take any further conversation to #python in GCP Slack?

https://googlecloud-community.slack.com https://gcp-slack.appspot.com/

No thoughts on the Python 3 issue?
(Not GP but also work on Python on GCP)

What was the specific Python 3 issue? I didn't see anything in your post specifically about Python 3.

>>> Want to use python3? That's cool, use the flexible environment. But it doesn't support taskqueues or many other features.

As far as I know there is no planned support for Python 3 in the standard env. I've been using GAE since 2010 but I'm a little uncomfortable continuing to writing new apps in Python 2.7 when they have a clear end of life date set now.

Given it might take you guys a year or two to support 3 after you decide to do it, then a year or two for me to port my apps over to python 3, my apps might be running for a while past the end of life date for Python 2.7.

Besides, I can't just keep writing 2.7 apps forever, so either I you guys have to update the SE to 3, or I need to start evaluating and comparing the flexible environment to what everybody else offers.

We are indeed working on creating a standalone Task Queues service that will work across all hosting platforms. You can sign up for the alpha here: https://goo.gl/Ya0AZd

(I work on the Python developer experience for Google Cloud Platform)

This is why I come to HN. Where else can you read an article about a high profile company, then find comments from people who work on what the article is about? Unless you guys are a brigade, it's pretty cool you happen to be browsing where the rest of us browse.
I am in Developer Relations so this is indeed part of my job. I'm glad we can be helpful.