Scale functions
- 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