Hacker News new | past | comments | ask | show | jobs | submit login
Azure Functions Now Support Java (infoq.com)
68 points by sidcool on Nov 3, 2017 | hide | past | favorite | 18 comments



Meanwhile, OpenFaaS supports every programming language out there...

https://www.openfaas.com/


I still don't understand how/why this is serverless. It is FaaS, but not serverless FaaS


It's a platform for hosting serverless functions. It lets you deploy your own lambda, on kubernetes/swarm


Are there any other "Kubernetes-As-A-Service" providers other than GCP?

I think AWS has competing solutions, but I am not sure about the current state of affairs.


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.


AWS's managed Docker cluster orchestration service is ECS.


There's Azure Kontainer Service (AKS) in public preview.


IBM Bluemix does.


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.


I'm curious how they get around the challenge of slow startup and warmup time of the JVM.


I'm one of the devs on Azure Functions.

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.


OpenFaaS have the option of running Java functions in an "Afterburn" mode to mitigate against the JVM startup time.

https://blog.alexellis.io/openfaas-serverless-acceleration/


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.

0 - https://en.wikipedia.org/wiki/Java_Classloader


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.


GCP employee here.

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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: