I am taking the Compute Engine Overview Lecture and the Topic is APP Engine. Mattias says that APP Engine Flex basically run containers so basically anything we can wrap in a container we can run on App Engine Flex. However when I go to this documentation page that compares GAE Standard and Flex https://cloud.google.com/appengine/docs/the-appengine-environments I see the following:
The flexible environment is optimal for applications with the following characteristics:
Source code that is written in a version of any of the supported programming languages:
Python, Java, Node.js, Go, Ruby, PHP, or .NET
So does that mean that we can still use GAE Flex for a some language "RUST / C++" but it wont be optimal ? I am confused by Google specifying supported runtimes for a service that runs containers. My perception of GAE Flex is more like Managed "Kubernets" where some underlying management / configuration is handled by the platform.
I have not written any apps for GAE Flex. I am sorry if this question does not make sense
This is a really specific but great question! 🙂
You can actually run RUST on GAE Flex and there are a handful of boilerplate projects that allow you to do so, or you can work with custom runtimes to help achieve this. Whether this would be considered "optimal" would really come down to what type of performance is desired, sometimes because you can do something doesn’t always mean its optimal.
You are right, it does, in a sense, in its back end at least, run like a managed container orchestration service.
You can check out more about custom runtimes here: https://cloud.google.com/appengine/docs/flexible/custom-runtimes/
Really hope this helps a little, and I hope it brought a bit more clarity to things.
The runtime versions being specified in the documentation is actually in the GAE – Standard list.
The main differences between GAE – Standard and GAE – Flex, is that that Standard contains predefined sandboxes that allow you to only run specific runtimes. You won’t be able to add libraries, write to the disk and so forth. Where as App Engine – Flex is based on GCE where you deploy Docker images and you can run what your environment needs, this includes OS runtime libraries and 3rd party libraries by specifying it in the Dockerfile.
Cloud Run is a managed platform that runs stateless containers from images in Container Registry that automatically scales from 0 to N based on HTTP traffic. You can deploy existing images, build images using Cloud Build and deploy them so you can use any language and any library.
to me the answer to the example question would be Cloud Run,
Hello! I think the key confusion might be due to how Google has written this documentation page. On the Flex side, it might be more clear if it said something like this, instead:
(Note: This is not a quote from the docs; this is Mattias's paraphrase.) The flexible environment is optimal for applications that run in a Docker container. This includes but is not limited to using _any_ programming language _or version_--_regardless_ of whether that programming language or version is supported by the App Engine Standard environment. ...
It’s just trying to say that you can use any version of those App Engine Standard languages, not just the versions that App Engine Standard supports. And the next bullet says that you can use any language. 🙂
I hope this helps!
The key main difference between App engine Flex and Cloud Run is the level of control, Google provides to the user.
In App Engine Flex, users can access the instance using SSH and deployed applications can write to local disk. The instance created for App Engine Flex is only for you and not shared, also you will know, where is your code is running.
Whereas Cloud Run is serverless: it abstracts away all infrastructure management, we will not know, on which instance or knode, our application is deployed.
Please ignore, if am wrong 😀