gitmyhub

fn

Go ★ 5.9k updated 18d ago

The container native, cloud agnostic serverless platform.

Fn is an open-source Functions-as-a-Service platform that runs code in Docker containers on your own server or any cloud, supporting Go, Node.js, Python, Java, and AWS Lambda imports with no server management.

GoDockersetup: moderatecomplexity 4/5

Fn is an open-source platform that lets you run small, self-contained pieces of code called functions without managing the underlying servers yourself. This concept is called Functions-as-a-Service (FaaS): instead of running a full application server around the clock, you write a function that does one specific thing, deploy it, and the platform handles running it when needed.

The platform is built around Docker containers, which are a standard way of packaging software so it runs consistently across different machines. Because every function runs inside a container, you can write your function in any programming language that Docker supports, including Go, Node.js, Java, Python, and others. Fn can run on your own computer, on a private server, or on any cloud provider, and it can also import functions written for Amazon's Lambda service and run them without changes.

Getting started involves installing a small command-line tool, starting an Fn server locally, and then creating a function with one command that generates the project scaffold in your chosen language. From there, you create an app (which groups related functions together), deploy the function to that app, and invoke it. The whole cycle from setup to running a first function takes only a few minutes according to the quickstart guide.

Fn is written in Go and is designed to be extensible. It ships with an embedded database and message queue for simple setups, with configuration options available for more complex deployments. Companion projects include a web UI, a flow system for chaining functions together, and a load balancer component.

The project has a Slack community, a YouTube channel with tutorials, and documentation covering both developer and operator workflows.

Where it fits