When we started the Serverless Framework almost a year ago (back then it was called the JAWS Framework), “serverless” was barely talked about and there wasn’t any other serverless tools out there. These days, “serverless” seems to be the new buzz word, and new tools and frameworks keep coming out.
Have you used any of the other tools and frameworks? What was your experience with these tools? And how do they compare to the Serverless Framework?
I have trailed the Apex framework but I haven’t used it in production.
Creating and deploying lambda functions with Apex was much easier than Serverless v0.5. However, Serverless v1.0@alpha simplifies that greatly.
The infrastructure management with Apex is done using Terraform. There’s a lot missing with the AWS Terraform provider. It was painful to use in my testing. The Serverless Framework’s integration with CloudFormation is much easier, especially in v1.0@alpha.
The support for Golang through a nodejs shim is quite interesting. I didn’t try that myself but I like the idea.
If people ask for it. Note that I am not asking for it. I just found supporting languages that Lambda itself did not support an interesting idea.
If someone really wanted it, they could probably create a plug for v1.0 that hooked into ‘deploy:createDeploymentPackage’ to create a nodejs shim for golang.
I’ve used Apex, and it’s slick and minimalist. It feels like it has less of a web focus, and more of back-end services focus. I like that Serverless uses CloudFormation under the hood (Apex only supports Terraform, which I’m less of a fan of for single-cloud application, which is all of mine).
I get the impression that Golang support is one of the more highly requested languages for Lambda support, so I wouldn’t be surprised if AWS supports it natively in the near future.
I’m using golang for my lambda functions, and looking into how I can use serverless for this, to deploy. The only thing i need to figure out is how to get the framework to include my golang binary when it builds the zip file, and upload it to lambda as a zip file and not as inline code. I’ve invested too much in go at this point to switch over to javascript.My go binary is called via javascript child_process.
Hi Rowan/all - were you able to use both Apex and serverless together? Did you (or anyone) find a way to use golang with serverless?
AWS will support it natively eventually, but Ive heard it wont be announced at re:invent so might be a wee way off yet. In the mean-time would be good to know if anyone has managed to get this going at all?
I don’t think using Apex and Serverless together is a good idea - they’re both deployment frameworks, so there’s an overlap of functionality and concerns.
To make Serverless run Golang function today you’d just need to point your function’s handler to a “shim” function that calls the Golang binary e.g. Apex’s shim is pretty simple, and could be easily modified.
For anyone interested, I’ve written a complete sample project demonstrating using serverless with aws-lambda-go-shim which is a python shim. Currently it works with sls invoke and API Gateway.
I saw some stats somewhere that Python has the fastest cold startup time, but once warmed up Java is actually the most performant in serving responses. My attempt here is to leverage the Python startup time but use Go for (hopefully) even better warmed up performance than Java.