faastjs / faast.js

Serverless batch computing made simple.
https://faastjs.org
Apache License 2.0
1.48k stars 42 forks source link
batch batch-processing faas javascript library serverless typescript

faast.js

License CircleCI codecov semantic-release FOSSA Status

Faast.js makes regular functions callable as serverless functions on AWS Lambda. It handles the details of uploading your code, creating cloud infrastructure, and cleaning up. Scale up your functions to a thousand cores in seconds :rocket:

Faast.js is a pure library with no service dependencies, operational overhead, or unnecessary complexity.

Installation

Faast.js requires node version 8+.

$ npm install faastjs

Example

First write the functions you want to run in a serverless function. Make sure to export them:

// functions.ts
export function hello(name: string) {
    return "hello " + name;
}

Use faast.js to turn this into a serverless function:

// main.ts
import { faast } from "faastjs";
import * as funcs from "./functions";

(async () => {
    const m = await faast("aws", funcs);
    const { hello } = m.functions;
    const result = await hello("world!");
    console.log(result);
    await m.cleanup();
})();

Make 1000 concurrent calls if you like:

const promises: string[] = [];
for (let i = 0; i < 1000; i++) {
    promises.push(hello(`world ${i}!`));
}
await Promise.all(promises);

How much did that cost...?

const cost = await m.costSnapshot();
console.log(`$${cost.total()}`);

Relax. It's just half a penny:

$0.00420858

Features

Ready to learn more?

Check out our getting started documentation.

Work through some examples

Review the detailed API documentation.

Join our discord channel.

Follow us on twitter.

Contributing

See contributing.