Hello,
The latest
announcement about the changes to the AppEngine flexible environment is very troubling for us. Most importantly, we can no longer use the
google.golang.org/appengine
package and memcache support is not (yet) available. I have a use-case that I'm not entirely sure I can migrate easily to the new version of the flexible environment or back to the standard environment. It's hard to continue calling the flexible environment "AppEngine" if we can't even use the appengine import package!
Here are some issues I have and want to know if there is anything on the roadmap to ease the transition:
- I use the nds package for the memcache features it provides. I don't see any way to continue using this package in my module/service in the new environment, even if it does add memcache support later on. Is that correct?
- Switching imports from google.golang.org/appengine to cloud.google.com/go/... isn't a simple import path change. In fact, some features on the latter import path for datastore aren't supported on the appengine side and now we have to be extra careful not to leverage those features. I also don't see an equivalent for "appengine.Main()" on the new import package so are we now expected to leverage our web frameworks server listener? How is HTTPS going to be handled in this situation?
- The migration guide for Go provides some guidance on how to migrate, but some features are going to require a lot of work, specifically guarding URL paths with "login:admin" and the Users API. Will further examples/resources be provided for this sort of migration?
- I see no mention that URL routing via a dispatch.yaml will be affected by this change, but URL routing is affected in other ways. Can someone please confirm there will be no issues with the dispatch.yaml routing?
- If the dispatch.yaml routing isn't affected, then does that mean that tasks queued for a specific service/module will continue to route appropriately? Is it only adding tasks to the task queue that would be no longer supported on the flexible environment?
I'd normally migrate back to the standard environment, however, I am utilizing some features only available through the flexible environment that I cannot (easily) migrate back from. I am using grpc, which last I checked wasn't working with the standard environment, to communicate to a server we have on-premise to exchange data with over a Compute Engine network with a VPN setup. If grpc now does work on the standard environment, there is no way for me to utilize the Compute Engine network that has a VPN connection to our on-premise network to communicate over, and would instead have to open up our internal network publically for a grpc client on AppEngine standard.
We use a mix of standard & flexible services for various parts of our application so maintaining that both sides can communicate with one another and to the same backend database is important. Sharing code between these services/modules is also important but seems as if it will no longer be possible due to the change in import paths. The change to the '
google.golang.org/appengine' import path was useful in that we could unify our code between Standard/Flexible, but now its a shame that effort is being thrown away and we again have to separate the codebase. Would it make sense (and be possible?) to just utilize the new import path for all parts that need to be shared, like datastore access?
I'm hoping the situation will improve over the next 6 months and would like to hear about any such plans or guidance on how to ease this transition.
Thank you,
Prateek M.