Amazon has a Elastic Beanstalk and some other container related tooling. Microsoft has Azure Container Services (ACS), and under that, a Kubernetes as a Service managed service abbreviated AKS.
Yeah, but I still have to maintain the containers and possibly the underlying machines as well as the OpenFaaS platform itself. With this or any other Serverless platform, I only care about the Function code.
In general, the trick is to basically never be cold. When you get assigned an instance, you keep it for a while before we put it to sleep. On the first call, you get assigned a "pre-warmed" instance that helps optimize load time. You can still help out by making sure your dependencies are lightweight.
We've still got some work to do for the JVM before we GA Java, but it's a pattern we're pretty happy with so far.
The pre-warmed instance is smart and a nice feature that AWS Lambda does not have. AWS Lambdas can be mostly kept warm via cron (incurring usage charges), but end-users will inevitably run into slow, cold-start responses during usage spikes as cold containers are spawned.
They may not have to. With a locked-down ClassLoader[0] and strict security settings, they could load up the jars in an already running JVM instance shared by multiple clients.
Google does/did (AppEngine Java8 can't do that because they do not have any strictness) that in AppEngine, but it is hard and challenging to get right. Especially the security bits.
The Java 8 runtime removed the sandbox restrictions. Most developers hated the restrictions. I highly doubt Microsoft would go down to the path of restrictions given the history in this space.
yeah I hated it. without it I can play with AppEngine once again, it is a really good platform but many restrictions were aweful.
The last thing which would be nice if the bits to call any appengine api from custom threads (currently I copy the environment to every custom thread I do, which needs a custom ThreadFactory).
I don't think (or at least, the performance doesn't indicate) that AWS Lambda does anything special other than caching your function's JVM for some undefined period of time after every request.
https://www.openfaas.com/