Replies: 4 comments 2 replies
-
First, thanks for Holy Lambda @FieryCod. Its great! I've found the existing bb tasks extremely helpful; esp For the bb tasks that are being removed could that be provided as an additional project if it is no longer going to be part of the core ? I had a look at the implementation of Also, what is the difference between the existing Java runtime and a |
Beta Was this translation helpful? Give feedback.
-
Likewise, thanks for such a valuable toolset. I think this general idea is good. I only use the tasks that create latest.zip and nothing else i.e. don't use any of the cloudformation/stack generation/deploy tasks. You could still provide sample stacks in an example projects. This could be CDK, Terraform etc. the reason I use this lib is 1/ cold starts and 2/ ease of CI graal automation on that basis, for me, the :clojure runtime is less interesting, unless its cold starts are comparable. the other direction of interest for me would be cljs (with npm deps) running in graal. is that possible to be to AOT'd so that it has similar benefits as jvm clojure? |
Beta Was this translation helpful? Give feedback.
-
@superstructor @stevebuik After talking with Ghadi I have tried to just call Clojure functions on the custom runtime, and the results of local invoke are quite good 800ms cold start and 128MB usage. I have added an example of Clojure on Clojure to benchmarks, so I will post all the results when I finish. Clojure on Clojure utilizes the same custom runtime the native is already using. The difference is that the Clojure runtime is running on the JVM, whereas the native runtime is running on SubstrateVM. Here are the changes: e0f37dc Custom runtime implementation has not been changed. Custom runtime for Clojure is the same as it's for native :) |
Beta Was this translation helpful? Give feedback.
-
All the necessary changes to stabilize the project landed in release 0.6.0. Locking the discussion. |
Beta Was this translation helpful? Give feedback.
-
HL currently supports deployment/management via wrapped AWS SAM template. The current approach where HL controls the stack seems sufficient for small apps, but the configuration is complex and not so Clojure'y. It's also hard for me to guarantee 100% feature parity with AWS SAM. Now, HL stack management and deployment are useless since different users prefer different tools.
Some users prefer AWS SAM (without any wrapping), some others Terraform, CDK or Pulumi. There are also different ways to package the code, and HL only utilizes
zip
which one more time is great for simple apps, but what if the user wants to call some native commands from AWS Lambda?These concerns made me realize that I was trying to pursue a toolset that nobody wants to use in its exact form. HL will be much more minimal and trimmed from features which makes the maintenance and development hard.
What then Holy Lambda should be?
What the future brings:
Java runtime will be obsolete, and its dependencies removed. Instead, one can just compile the Clojure code wrapped with
fierycod.holy-lambda/entrypoint
and build a deployable Docker image. This will be known as a:clojure
runtime.HL bb tasks will no longer provide the following commands:
bb stack:invoke
,bb stack:pack
,bb stack:deploy
,bb stack:destroy
,bb stack:logs
,bb stack:describe
,bb stack:api
HL bb tasks will provide only limited set of functionalities
.jar
file. If you use :clojure you don't needHL
shippedbb tasks
User decides how the code is packaged, which means that HL will no longer deploy Babashka runtime for you.
Clojure runtime
.holy-lambda/build/latest-clojure.jar
. For Clojure runtime the only sensible option is Docker.Native runtime
.holy-lambda/build/latest-native.zip
, with resources packed. You can of course unpack the.zip
, and pack thebootstrap
+binary
withDocker
if you would like to add some more dependencies :)Babashka runtime
com.company.example
then Entrypoint variable should becom.company.example
) (zip).holy-lambda/layers/babashka-runtime.zip
. Unpack the layer and put the content in docker image + add your code (docker)Beta Was this translation helpful? Give feedback.
All reactions