All Projects β†’ globocom β†’ functions

globocom / functions

Licence: MIT license
An Open Source Serverless Platform

Programming Languages

javascript
184084 projects - #8 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to functions

assume-role-arn
πŸ€–πŸŽ©assume-role-arn allows you to easily assume an AWS IAM role in your CI/CD pipelines, without worrying about external dependencies.
Stars: ✭ 54 (+22.73%)
Mutual labels:  pipeline
makepipe
Tools for constructing simple make-like pipelines in R.
Stars: ✭ 23 (-47.73%)
Mutual labels:  pipeline
AnimationDNA
Maya > Arnold > Nuke pipeline
Stars: ✭ 101 (+129.55%)
Mutual labels:  pipeline
CloudFrontier
Monitor the internet attack surface of various public cloud environments. Currently supports AWS, GCP, Azure, DigitalOcean and Oracle Cloud.
Stars: ✭ 102 (+131.82%)
Mutual labels:  lambda-functions
pipe
Functional Pipeline in Go
Stars: ✭ 30 (-31.82%)
Mutual labels:  pipeline
lncpipe
UNDER DEVELOPMENT--- Analysis of long non-coding RNAs from RNA-seq datasets
Stars: ✭ 24 (-45.45%)
Mutual labels:  pipeline
frizzle
The magic message bus
Stars: ✭ 14 (-68.18%)
Mutual labels:  pipeline
gulp-sort
Sort files in stream by path or any custom sort comparator
Stars: ✭ 22 (-50%)
Mutual labels:  pipeline
scATAC-pro
A comprehensive tool for processing, analyzing and visulizing single cell chromatin accessibility sequencing data
Stars: ✭ 63 (+43.18%)
Mutual labels:  pipeline
aws-lambda-chaos-injection
Chaos Injection library for AWS Lambda
Stars: ✭ 82 (+86.36%)
Mutual labels:  lambda-functions
nextNEOpi
nextNEOpi: a comprehensive pipeline for computational neoantigen prediction
Stars: ✭ 42 (-4.55%)
Mutual labels:  pipeline
Elements-of-Functional-Programming-in-Python
Learn how to how to use the lambda, map, filter and reduce functions in Python to transform data structures.
Stars: ✭ 14 (-68.18%)
Mutual labels:  lambda-functions
PeekingDuck
A modular framework built to simplify Computer Vision inference workloads.
Stars: ✭ 143 (+225%)
Mutual labels:  pipeline
targets-tutorial
Short course on the targets R package
Stars: ✭ 87 (+97.73%)
Mutual labels:  pipeline
nemesyst
Generalised and highly customisable, hybrid-parallelism, database based, deep learning framework.
Stars: ✭ 17 (-61.36%)
Mutual labels:  pipeline
gofast
High performance transport protocol for distributed applications.
Stars: ✭ 19 (-56.82%)
Mutual labels:  pipeline
transtats
Track translations and automate workflow.
Stars: ✭ 31 (-29.55%)
Mutual labels:  pipeline
STOCK-RETURN-PREDICTION-USING-KNN-SVM-GUASSIAN-PROCESS-ADABOOST-TREE-REGRESSION-AND-QDA
Forecast stock prices using machine learning approach. A time series analysis. Employ the Use of Predictive Modeling in Machine Learning to Forecast Stock Return. Approach Used by Hedge Funds to Select Tradeable Stocks
Stars: ✭ 94 (+113.64%)
Mutual labels:  pipeline
datajob
Build and deploy a serverless data pipeline on AWS with no effort.
Stars: ✭ 101 (+129.55%)
Mutual labels:  pipeline
bodywork-ml-pipeline-project
Deployment template for a continuous training pipeline.
Stars: ✭ 22 (-50%)
Mutual labels:  pipeline

Build Status Coverage Status

Backstage Functions

Backstage Functions is an Open Source Serverless Platform able to store and execute code.

Benefits

  • Your code will be executed in an isolated environment
  • You don't have to worry about infrastructure
  • Functions can be called at any time by any project

FAQ

  • Which languages are supported? Currently, only Javascript.

  • Is it based on events? Not yet.

  • How the code execution happens in an isolated way? It uses the Backstage Functions Sandbox.

Running locally without Docker

Requirements

  • Redis 3.0+
  • NodeJS 8.13.0

Download the project

git clone https://github.com/backstage/functions.git

Setup

make setup

Run

make run

Running locally via Docker

Requirements

  • Docker 1.12+
  • Docker compose 1.8+

Download docker-compose.yml

mkdir functions
cd functions
curl 'https://raw.githubusercontent.com/backstage/functions/master/docker-compose.yml' > docker-compose.yml

Run

docker-compose up

How to use

Function Structure

Your function will have a file, which you define any name you want, and it has to have a function called main, with two parameters: req and res. Req represents the Request and Res represents the Response. At the end of your code, you'll have to use the send method.

Example of a function

function main(req, res) {
  const name = (req.body && req.body.name) || "World"
  res.send({ say: `Hello ${name}!` })
}

Setting a function

To set your function, you can make a PUT request to /functions/:namespace/:name:

curl -i -X PUT http://localhost:8100/functions/example/hello-world \
    -H 'content-type: application/json' \
    -d '{"code":"function main(req, res) {\n  const name = (req.body && req.body.name) || \"World\"\n  res.send({ say: `Hello ${name}! Nice meeting you...` })\n}\n"}'

Ps: if it doesn't exists, it will be created

Deleting a function

To delete your function, you can make a DELETE request to /functions/:namespace/:name:

curl -i -X DELETE http://localhost:8100/functions/example/hello-world \
    -H 'content-type: application/json'

Executing a function

To execute a function, you can make a PUT request to /functions/:namespace/:name/run:

curl -i -X PUT http://localhost:8100/functions/example/hello-world/run \
    -H 'content-type: application/json'

The result will be something like:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 22
ETag: W/"16-soBGetwJPBLt8CqWpBQu+A"
Date: Tue, 11 Oct 2016 16:51:04 GMT
Connection: keep-alive

{"say":"Hello World!"}

If one needs to pass an object in the request, the payload is executed:

curl -i -X PUT http://localhost:8100/functions/example/hello-world/run \
    -H 'content-type: application/json' \
    -d '{"name": "Pedro"}'

The result will be something like:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 22
ETag: W/"16-Ino2/umXaZ3xVEhoqyS8aA"
Date: Tue, 11 Oct 2016 17:13:11 GMT
Connection: keep-alive

{"say":"Hello Pedro!"}

Executing functions in a pipeline

To execute many functions in a pipeline, you can make a PUT request to /functions/pipeline:

// Function0
function main(req, res) {\
  res.send({x: req.body.x * 10});

}

// Function1
function main(req, res) {
  res.send({x: req.body.x * 20});
}
curl -g -i -X PUT 'http://localhost:8100/functions/pipeline?steps[0]=namespace/function0&steps[1]=namespace/function1' \
    -H 'content-type: application/json'
    -d '{"x": 1}'

Considering the curl above, the pipeline result would be like this:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 22
ETag: W/"16-Ino2/umXaZ3xVEhoqyS8aA"
Date: Tue, 11 Oct 2016 17:13:11 GMT
Connection: keep-alive

{"x": 200}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].