FaaSr
FaaSr: R Package for Function-as-a-Service Cloud Computing - Published in JOSS (2024)
Science Score: 95.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 4 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: joss.theoj.org -
✓Committers with academic emails
2 of 12 committers (16.7%) from academic institutions -
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords from Contributors
standardization
pde
interpretability
wavelets
plasma
correlation
evolutionary-algorithms
Last synced: 6 months ago
·
JSON representation
Repository
Function-as-a-Service package for R
Basic Info
- Host: GitHub
- Owner: FaaSr
- License: other
- Language: R
- Default Branch: main
- Homepage: https://faasr.io
- Size: 4.28 MB
Statistics
- Stars: 9
- Watchers: 2
- Forks: 10
- Open Issues: 18
- Releases: 1
Created over 2 years ago
· Last pushed 7 months ago
Metadata Files
Readme
Changelog
Contributing
License
Code of conduct
README.Rmd
---
output: github_document
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```
# FaaSr
[](https://github.com/spark0510/FaaSr-package/actions/workflows/R-CMD-check.yaml)
[](https://cran.r-project.org/package=FaaSr)
[](https://doi.org/10.21105/joss.07027)
## Overview
The goal of FaaSr is to make it easy for developers to create R functions and workflows that can run in the cloud, on-demand, based on triggers - such as timers, or repository commits. It is built for Function-as-a-Service (FaaS) cloud computing, and supports both widely-used commercial (GitHub Actions, AWS Lambda, IBM Cloud) and open-source platforms (OpenWhisk). It is also built for cloud storage, and supports the S3 standard also widely used in commercial (AWS S3), open-source (Minio) and research platforms (Open Storage Network). With FaaSr, you can focus on developing the R functions, and leave dealing with the idiosyncrasies of different FaaS platforms and their APIs to the FaaSr package.
FaaSr allows you to:
* Develop one or more *functions* natively in R in your own GitHub repository
* Deploy *actions* that invoke your *functions* in Docker containers
* Compose *workflows* consisting of multiple *actions* in a pre-determined order, described by a Directed Acyclic Graph (*DAG*)
* Register your *workflows* for cloud-native execution in one of the supported FaaS providers
* Invoke your *workflows* with *events*, including scheduled timers
* Use S3-based *cloud storage* to provide file inputs and outputs to each *action* in the *workflow*
## Usage
The functions exposed by FaaSr can be broadly divided as follows:
* Server-side functions: are executed automatically in the cloud, by your functions/workflows. These deal with moving data from/to S3 storage and logging
* Client-side functions: are executed interactively by you, in your local desktop. These deal with registering and invoking your workflows for execution in your FaaS provider of choice
### Server-side FaaSr functions
* `faasr_get_file(server_name, remote_folder, remote_file, local_folder, local_file)` downloads a file from an S3 server to be used by an *action*
* `faasr_put_file(server_name, remote_folder, remote_file, local_folder, local_file)` uploads a file from an *action* to an S3 server
* `faasr_delete_file(server_name, remote_folder, remote_file)` deletes a file from an S3 server
* `faasr_arrow_s3_bucket(server_name)` returns an arrow object for use with S3 server
* `faasr_log(message)` adds a message to the log of the running action
### Client-side FaaSr functions
* `workflow <- faasr(configuration_file, credentials_file)` returns a *workflow* list associated with a workflow configuration file (in JSON format) and file with credentials for S3 and FaaS server(s)
* `workflow$register_workflow()` registers a *workflow* with the configured FaaS provider
* `workflow$invoke_workflow()` immediately invokes a *workflow* with the configured FaaS provider
* `workflow$set_workflow_timer(cron_string)` set a timer (using the standard CRON format) to invoke a *workflow* at a given time interval with the configured FaaS provider
* `workflow$unset_workflow_timer()` unset a timer previously defined with `set_workflow_timer()`
### Workflow configuration
Workflows are configured using the JSON file format and the [FaaSr configuration schema](https://github.com/FaaSr/FaaSr-package/blob/main/schema/FaaSr.schema.json).
You may use the [FaaSr-JSON-Builder Shiny app](https://faasr.shinyapps.io/faasr-json-builder/) to create and edit workflows using a graphical user interface (GUI) rather than a text editor. This GUI can be used to create FaaSr-compliant JSON files from scratch (or starting from an exiting configuration you can upload using the tool). The generated configuration can be downloaded to your computer.
### Cloud credential configuration
The client-side FaaSr functions expect both a JSON configuration file describing a workflow, and an environment variable file storing the credentials for your FaaS cloud platforms of choice. The example below shows a template for S3 cloud storage, GitHub Actions, OpenWhisk and AWS Lambda credentials:
`"My_GitHub_Account_TOKEN"="REPLACE_WITH_YOUR_GITHUB_TOKEN"`
`"My_Minio_Bucket_ACCESS_KEY"="REPLACE_WITH_S3_ACCESS_KEY"`
`"My_Minio_Bucket_SECRET_KEY"="REPLACE_WITH_S3_SECRET_KEY"`
`"My_OW_Account_API_KEY"="REPLACE_WITH_YOUR_OPENWHISK_ID:SECRET_KEY"`
`"My_Lambda_Account_ACCESS_KEY"="REPLACE_WITH_YOUR_AWS_LAMBDA_ACCESS_KEY"`
`"My_Lambda_Account_SECRET_KEY"="REPLACE_WITH_YOUR_AWS_LAMBDA_SECRET_KEY"`
## Installation
FaaSr can be installed from CRAN with:
``` r
install.packages("FaaSr")
```
You can install the development version of FaaSr from [GitHub](https://github.com/) with:
``` r
devtools::install_github("FaaSr/FaaSr-package")
```
## Example
Please refer to the [FaaSr tutorial](https://github.com/FaaSr/FaaSr-tutorial) for a detailed step-by-step example that you can run on your own desktop (using Rocker) or on Posit Cloud, using just a GitHub account and the free-for-testing Minio S3 Play server
Owner
- Name: FaaSr
- Login: FaaSr
- Kind: organization
- Website: https://faasr.io
- Repositories: 9
- Profile: https://github.com/FaaSr
Function-as-a-Service package for R applications
JOSS Publication
FaaSr: R Package for Function-as-a-Service Cloud Computing
Published
November 01, 2024
Volume 9, Issue 103, Page 7027
Authors
Yun-Jung Ku
Department of Electrical and Computer Engineering, University of Florida, FL, USA
Department of Electrical and Computer Engineering, University of Florida, FL, USA
Nan Mu
Department of Electrical and Computer Engineering, University of Florida, FL, USA
Department of Electrical and Computer Engineering, University of Florida, FL, USA
R. Quinn Thomas
Department of Forest Resources and Environmental Conservation and Virginia Tech Center for Ecosystem Forecasting, Virginia Tech, VA, USA
Department of Forest Resources and Environmental Conservation and Virginia Tech Center for Ecosystem Forecasting, Virginia Tech, VA, USA
Tags
cloud computing function-as-a-serviceGitHub Events
Total
- Create event: 6
- Issues event: 6
- Release event: 2
- Watch event: 6
- Issue comment event: 6
- Push event: 29
- Pull request review event: 4
- Pull request event: 29
- Fork event: 10
Last Year
- Create event: 6
- Issues event: 6
- Release event: 2
- Watch event: 6
- Issue comment event: 6
- Push event: 29
- Pull request review event: 4
- Pull request event: 29
- Fork event: 10
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Sungjae Park | 1****0 | 376 |
| Renato Figueiredo | r****g@g****m | 54 |
| github-actions[bot] | 4****] | 35 |
| Sungjae Park | s****k@S****l | 14 |
| nan mu | p****3@g****m | 12 |
| Ashish Tulso Ramrakhiani | 1****i | 8 |
| Daniel S. Katz | d****z@i****g | 2 |
| gokulkeshav | 1****v | 1 |
| Yun-Jung | r****0@g****m | 1 |
| Nolan Cutler | n****1@g****m | 1 |
| George G. Vega Yon | g****n@g****m | 1 |
| Cayelan Carey | c****n@v****u | 1 |
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 41
- Total pull requests: 91
- Average time to close issues: 3 months
- Average time to close pull requests: 5 days
- Total issue authors: 5
- Total pull request authors: 10
- Average comments per issue: 1.17
- Average comments per pull request: 0.21
- Merged pull requests: 88
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 10
- Pull requests: 18
- Average time to close issues: about 1 month
- Average time to close pull requests: 13 days
- Issue authors: 5
- Pull request authors: 7
- Average comments per issue: 1.6
- Average comments per pull request: 0.06
- Merged pull requests: 18
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- renatof (35)
- yadudoc (2)
- DyfanJones (1)
- Ashish-Ramrakhiani (1)
- gvegayon (1)
Pull Request Authors
- spark0510 (98)
- Ashish-Ramrakhiani (13)
- nanmu08 (6)
- danielskatz (4)
- renatof (3)
- gokulkeshav (2)
- nolcut (2)
- Yun-Jung (2)
- cayelan (2)
- gvegayon (1)
Top Labels
Issue Labels
enhancement (9)
bug (1)
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- cran 256 last-month
- Total docker downloads: 13
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 5
- Total maintainers: 1
cran.r-project.org: FaaSr
FaaS (Function as a Service) Package
- Homepage: https://github.com/FaaSr/FaaSr-package
- Documentation: http://cran.r-project.org/web/packages/FaaSr/FaaSr.pdf
- License: MIT + file LICENSE
-
Latest release: 1.4.4
published 11 months ago
Rankings
Dependent packages count: 28.1%
Dependent repos count: 36.1%
Average: 49.8%
Downloads: 85.0%
Maintainers (1)
Last synced:
6 months ago
Dependencies
DESCRIPTION
cran
- RCurl * imports
- httr * imports
- jsonlite * imports
- jsonvalidate * imports
- paws * imports
- uuid * imports