difference between app engine,serverless containers and gke serverless add-on

8/31/2018

-App Engine is marketed as serverless

-The new serverless container offer by google is serverless, but what's the different?,they explain like this:

many customers tell us they have custom requirements like specific runtimes, custom binaries, or workload portability.More often than not, they turn to containers for an answer

What do they mean by "specific runtimes" and "custom binaries", by the way, why an app in App Engine is not portable?

-GKE serverless add-on is advertise like this:

You can go from source to containers instantaneously, auto-scale your stateless container-based workloads

Isn't that what App Engine does?

I'm so confuse right now, the should add some examples where to use which at least

-- John Balvin Arias
google-app-engine
google-kubernetes-engine
serverless

1 Answer

8/31/2018

App Engine is marketed as serverless

App Engine definitely is what now gets called serverless, in that you just have to worry about the code, not the operating system or how many servers you have. As a trivial example, I have an App Engine app which uses TLS, but I don't have to worry about updating OpenSSL.

What do they mean by "specific runtimes" and "custom binaries", by the way, why an app in App Engine is not portable?

Older App Engine Standard runtimes use custom a "sandbox" to manage your app. This means that a "normal" Python, Java, etc runtime has been modified to add restrictions so your code can safely run in a shared environment e.g. on the same servers as other apps. Typically some extra APIs were provided to interface with other cloud services. This all means that, at least historically, if you write for App Engine Standard you'll have to make some modifications to run on other environments, and some libraries wouldn't work because they bump into restrictions.

By the way, there are open source projects like AppScale which try to emulate the App Engine standard environment, so such apps are somewhat portable.

Contrast this to newer runtimes which are container based. Instead of a custom language runtime providing isolation, your app and its dependencies run in a container, and the container system provides isolation. Because the runtime is no longer modified nearly so much, many of the restrictions go away, but without all that modification the custom also APIs go away in favor of just having you use standalone services that do the same thing. An easy example is that in App Engine Python 2.7, there's an ndb library which interfaces with the Datastore service. Nowadays, Cloud Datastore is a standalone product with its own API, and you would just use that API to talk to Datastore from e.g. a Python 3.7 app.

GKE serverless add-on is advertise like this ... Isn't that what App Engine does?

GKE Serverless isn't released yet so we'll have to see how people use it, but the idea seems to be that it's for people who are already using Kubernetes and want App Engine features like auto-scaling in response to incoming requests. I could be very confused here though.

-- Jesse Scherer
Source: StackOverflow