How to deploy gRPC on App engine standard? - google-app-engine

I'm wondering if a gRPC server can be deployed on AppEngine Standard? There are a few old threads mentioned it only works on AppEngine Flexible. Does anyone know if this is still the case?
The app is in NodeJS if that makes a difference...
Cheers!

As mentioned in the official documentation, the way you use gRPC, will depend in your environment. The official ones, supported in gRPC are listed in this documentation here, in which, unfortunately, App Engine Standard is not mentioned, confirming that it's not supported and doesn't work
I have found that they have a Feature Request opened for this to be checked, that you can access here - confirming the expectations of not being supported: Features for gRPC Support.
I would recommend you to leave a comment there and click to star the issue, so you receive updates on it.
Besides that, the framework available for Cloud Endpoints control of API in App Engine can be accessed here (in case you want to check it): Cloud Endpoints Frameworks
Let me know if the information helped you!

Related

Why isn't Cloud Endpoints for Golang in GAE Standard Environment?

Hey does anyone know why Google Cloud Endpoints for Go-lang isn't in the standard environment on Google App Engine? It's only seemed to be officially supported/documented for Python / Java.
Is it because
A) Cloud Endpoints is coming to Golang soon / someday.
B) Cloud Endpoints isn't so great, so it's not going to be implemented in Golang.
C) Something else.
There's this "non-standard" lib https://github.com/GoogleCloudPlatform/go-endpoints but it hasn't been updated in 9 months.
I'm trying to choose between Python and Golang for a GAE project, and this lack of support for Cloud Endpoints is giving me pause.
Thanks in advance.
Product manager Dan Ciruli answered this on the google-appengine-go mailing list :
There are two primary reasons, and the second is a byproduct of the
first. We've had much less uptake on the Endpoints Go framework --
perhaps because, in the words of a developer I spoke to, "Go just
isn't a 'framework' language." Unlike, Java, Python (and, say, Node),
most developers using Go don't use a framework for writing an API
backend.
And, at least partially because of that, we aren't staffed on the
Endpoints team to build and support a framework in Go.
He added:
All hope is not lost. You can put a Go API behind Endpoints today on
GAE Flex or Container Engine (without framework) using the Extensible
Server Proxy. And later this year, we should be able to get the ESP
deployed in GAE standard environment, you'll get the full power there,
too.

Connecting to AppEngine datastore in development via Cloud Datastore API

We are currently running a combined AppEngine / GCE app and thus far have kept all of our datastore access on the AppEngine side of things. Now we are exploring also allowing our GCE instance to make some queries into the (shared) datastore. To start, I'm trying to figure out how to run things locally. What we have so far:
A Go devappserver running
A Go standalone binary that wants to issues queries to the devappserver datastore.
We installed ('go get') google-api-go-client/datastore/v1beta2 so that we can use an API instead of issuing direct HTTP calls. However we are definitely willing to issue direct HTTP calls if this API library won't work in development.
We have service accounts set up (we already access GCS from GCE) but I doubt that's relevant for running locally...
I've seen some docs but they (a) only talk about Python & Java, and (b) discuss connecting to the (standalone) development datastore server, as opposed to the datastore embedded in AppEngine's devappserver (if those are even different?). There is also the following answer here on StackOverflow, but again it discusses connecting to the standalone development datastore server:
How to connect to the local google cloud Datastore db?
Any pointers would be much appreciated!
Ian
Currently this is not possible in the development environment for several reasons. The Google Cloud Datastore tool (gcd.sh) uses the java development server. However when developing go for App Engine you use the python development server, which has different underlying storage. There is a bug to track this issue on the github page.
You can still develop a Google Cloud Datastore application in go however there are many bugs in the current go client library. Unfortunately, the development server does not currently support the JSON API, which the go library uses (see the note at the top of the page).
Update: I wanted to make sure proppy's comment was seen as part of the answer. His suggestion does provide a way to use the protocol version of the API, which is probably more stable than the go client library above. It could also let you use the gcd.sh tool to test this in the development server. You will have to craft the HTTP requests yourself though, and you won't be able to share the data in the datastore between your application and the Cloud Datastore in development. However it is definitely a good workaround and lets you use the Cloud Datastore API, which as it develops will be easier to work with than other workarounds.
From proppy:
Note that you can still use Cloud Datastore Protobuf HTTP API with Go. The protobuf definition is available on GitHub, you can compile it to Go code using the Go protobuf compiler plugin and then send POST HTTP requests to /datastore/{version}/datasets/{datasetId}/{method}.
If the use case from your "GO" app server is straight forward enough, you may want to implement access by using an API call to your GAE service (perhaps extending the service to receive the API calls).
This has the added benefit of only having to make changes in one place if your datastore definitions or functions change.

App Engine Endpoints

Im starting a new application with AppEngine and I need a REST Service.
I was looking at Endpoints and I think they are exactly what I need.
I also read Google don't recommend to use Endpoints in production but my app first version is not going out until April approximately.
How mature do you think App engine Endpoints are?
Do you recommend to use them or should I find another REST framework.
If so, Are there any other REST framework similar to App Engine Endpoints?
or
Which one do you recommend, Restlet? or use it with Spring MVC?
Thanks
I'm a bit biased (being a Googler and member of the App Engine team), but I think Endpoints is worth a try. With regards to the general disclaimer on using Endpoints in production, we have allowed some developers to launch in production as long as they have spoken to us first.
I provided another answer to a related question on RESTful development here. The developer tried Endpoints and decided to use it over other options.

Are there any official plans to support Dart on Google App Engine?

Googling the web I haven't found anything that says something about whether Dart should eventually become supported by the Google App Engine hosting platform.
Google is saying that Dart should also be considered a language for developing the server part for a web application.
Does anyone know more about it?
An issue has been opened on Google Code for App Engine. I suggest you to stars it.
http://code.google.com/p/googleappengine/issues/detail?id=6092
It is now available for managed VMs (still beta)
See
https://www.dartlang.org/cloud/
https://pub.dartlang.org/packages/appengine
https://pub.dartlang.org/packages/gcloud
https://github.com/dart-lang/appengine_samples
for more details

Salesforce's Database.com and Google App Engine via JPA

Currently i try to connect (via JPA/Datanucleus) with an application, hosted by Google App Engine, to the database service of database.com (Salesforce)
After many hours of reading and trying, i could not find any solution.
So, is it even possible??
Some Information....
Database.com provides JPA: http://forcedotcom.github.com/java-sdk/jpa-provider, but i could not found any sdk on this side, but i found a jar-file hosted by grepcode http://grepcode.com/snapshot/repo1.maven.org/maven2/com.force.sdk/force-jpa/22.0.7-BETA/ - Possibly there is currently no official release ...
The problem is that this SDK from Salesforce needs datanucleus 2.0, but Google App Engine includes only datanucleus 1.1.5. So i try to update theses libaries and found this.... code.google.com/p/datanucleus-appengine/ . I tried a few hours to replace the old libaries and to use the newer, but unsuccessfully. The error was that eclipse could not find some libaries, because the newer libaries, provided by the side above, have different package structure -
I am thankful for any help...
Kotake
The official release of the JPA provider is available on Maven Central:
http://search.maven.org/remotecontent?filepath=com/force/sdk/force-jpa/22.0.7-BETA/force-jpa-22.0.7-BETA.jar
The external connection restriction won't be a limiting factor because the JPA adapter connects to Database.com over https using a SOAP API.
I can't speak to the challenges around getting DN 2.0 running on GAE. Perhaps GAE support can help with that?
As stated here in the App Engine docs, you cannot make direct connections to external servers from GAE (except over http or https using the app engine specific url APIs). You will need to find some other way to get data out of your remote database.
This link describes how to solve your problem:
How to use Force.com Database SDK on Google APP Engine
(He has updated the Saleforce SDK source code to allow it to work without problem on GAE.)

Resources