Kudos to Ashley McNamara, Renee French, and Mat Ryer for the logo, via gopherize.me.
Are you into serverless? Using, for example, AWS Lambda or knative or Apache OpenWhisk? When you're building a non-trivial app based on functions you potentially end up with dozens or hundreds of functions.
How do you manage them? Know what is running, what the dependencies between functions are? Maybe you're manually updating a spreadsheet or perhaps you have put together a nice little shell script that queries the state?
I believe we can do better, better as in great UX, ease of use, and powerful set of operations, but focused on the task of managing functions from an operational point of view. So, you would still use Serverless, CloudFormation, Terraform, or your own tooling to deploy, monitor, or debug your functions.
So this is what the idea of funcnstein
is: a multi-platform tool for managing functions.
Sample interactions follow below—note, no matter if you're using the CLI tool against Lambda or OpenFaaS or kubeless or whatever target, the UX is always the same.
$ functl get
NAME STATUS INVOCATIONS AGE
convertimg Running 21k 42d
preprocess Running 29k 42d
limitchecker Running 40k 30d
compliance Running 8k 18d
myfirstgofunction Running 300 10m
$ functl describe convertimg
Environment: AWS Lambda
Project: A paying customer, actually
State: Running (since 2018-06-25)
Language: Node.js
Invocations: 20988
Triggers: API Gateway, S3
Labels: owner=mshelley
$ functl resolve convertimg
Called by:
- preprocess
Calls:
- limitchecker
- compliance
$ functl label convertimg stage=prod
Labels: owner=mshelley, stage=prod
$ functl get --project='*paying*' --selector='owner=mshelley' --invocations='>20k'
NAME STATUS INVOCATIONS AGE
convertimg Running 21k 42d
Q: How is functl
pronounced?
A: fun-kuddle … because you can't control fun