bfirsh / bfirsh/funker

Scale functions

Open
#4 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
253
Forks
9
PR merge metrics
No merged PRs in 30d

Description

### The problem

The readme currently says that Funker "scales effortlessly", which is a bit of an exaggeration. In that, it doesn't. Yet.

A running instance of a function can handle one function call. It then refuses any other connections and shuts down when it has finished being called.

To be able to do better than serial processing, we need to create more than one replica of the service.

### Potential solutions

Some ideas have been thrown around, but a starting point could be to simply to detect how many function are idle, and if that is getting low, boot up some more. If there are too many, scale down. This might not work if functions are very quick and take a while to restart, but it's probably worth a try.

It would theoretically be possible to scale a function down to nothing and have it cold boot on calling if the caller could somehow indicate that it needed running. Perhaps with a custom DNS server? Some intermediary service?

For all this stuff, I would prefer to err on the side of simplicity and fewer running components, since the whole point is that we're leaning on Docker's service infrastructure to make this work.

/cc @justincormack

Contributor guide

No contributing guide indexed for this repository

Research direction

The README describes the current single-call behavior, but the issue names no implementation files or tests. Start by tracing how a running function accepts one connection and shuts down, then inspect the Docker service infrastructure involved. Done means the project can create and remove function replicas so calls can be processed concurrently, with a simple scaling approach documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker
Domain
infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.