feral icon indicating copy to clipboard operation
feral copied to clipboard

Integrate with Google Cloud Functions

Open armanbilge opened this issue 4 years ago • 4 comments

Did some preliminary research, there seem to be:

  1. Http functions. These are a distinct type of function, and will need separate JVM and JS implementations. The JS implementation can use the node-serverless module in http4s.
  2. Background functions. I think these are more similar to Lambda, in that there is a common interface and various types of triggers that are parsed as JSON.

armanbilge avatar Dec 25 '21 16:12 armanbilge

I started working on this a bit and it seems that the background functions are (about to become) legacy, in favor of CloudEvents, which are supposedly designed to be cloud-platform-independent. It seems the Cloud Functions documentation hasn't been updated with this, and it's still not entirely clear to me how to deploy cloud-event-based functions.

In any case, it seems we may want to build our own Functions Framework according to the contract laid out here: https://github.com/GoogleCloudPlatform/functions-framework#functions-framework-contract IMO this is actually a lot more interesting, since it describes something lower-level (i.e., listening on ports rather than being handed pre-digested events) and actually might be portable beyond the Google Cloud Platform. So this gives us a lot more control over how we do things, and makes them much easier to test without requiring to emulate specific cloud environments.

armanbilge avatar Jan 01 '22 00:01 armanbilge

For performance, efficiency and correctness reasons, the framework must be able to handle multiple concurrent invocations of the developer's function.

This is very interesting 🤓

armanbilge avatar Jan 01 '22 00:01 armanbilge

Superseded by https://github.com/typelevel/feral/issues/132.

armanbilge avatar Jan 01 '22 05:01 armanbilge

Well, I suppose this is worth keeping open actually. At the moment I don't think you can deploy a custom Functions Framework to Cloud Functions (you have to buy into one of their frameworks) and Cloud Functions is a different product with a different pricing model etc. than e.g. Cloud Run or another service where you can deploy an custom Functions Framework.

armanbilge avatar Jan 01 '22 20:01 armanbilge