Skip to content

mhausenblas/funcnstein

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

funcnstein

funcnstein logo

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.

Exemplary usage

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.

Getting an overview of what is running

$ 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

Examining a specific function

$ 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

Resolving dependencies

$ functl resolve convertimg 
Called by:
- preprocess
Calls:
- limitchecker
- compliance

Organizing stuff

$ functl label convertimg stage=prod
Labels: owner=mshelley, stage=prod

Advanced queries

$ functl get --project='*paying*' --selector='owner=mshelley' --invocations='>20k'
NAME                STATUS    INVOCATIONS   AGE
convertimg          Running   21k           42d

FAQ

Q: How is functl pronounced?
A: fun-kuddle … because you can't control fun

Releases

No releases published

Packages

No packages published