How do I get started?
In essence you create a JAR with a handlerMethod. This handler method accepts two arguments - Event and Context.
The event is of a type that is serializable with gson, and it must in serialized form be possible to express it as a Map<String, ?>
The context must inherit com.amazonaws.services.lambda.runtime.Context. It's instantiated with data from the environment of the serverless process, and from headers in the request.
How is it run?
Your code is merged with Launcher code that interfaces between the world and your handler function. It creates an internal web server to listen for commands, and converts incoming data to events of the correct type for your handler function.
There are several Launchers provided by Amazon including jdk11, node.js, etc. When you upload a binary you are however on your own as they can't create a Launcher that probes your binary code. We add a Launcher for you automatically.
Where is it run?
A common and efficient way to partition server capacity is by using containers. The most common is Docker, and the most common tool to administrating container resources i Kubernetes.
Kubernetes is crazy complicated and any savings on servers goes into devops salaries. Having the function abstraction passes the bucket on to Google/AWS and they will write a clever scheduler to start and stop your container.
Since we use GraalVM we inherit its limitations.
Our Analyzer's Limitations
This first alpha version is mostly for trying out trivial AOT compiled code on AWS Lambda without much work. Right now it's quite a lot of work to setup everything needed and to write a Launcher.
Current alpha should be able to deal with 10% of all Lambda programs. In 1-2 months 30%, and in half a year 95% percent. It's based on a patented breakthrough and is not based on a shortcut like precalculating various common libraries.