...
Associated JBoss community project(s): Debezium
Knative Autoscaling: Experiment with different algorithms and improve the existing one
Summary of idea:
Knative Serving is a building block for creating a Serverless platform on top of Kubernetes. Its scaling capabilities are among the most important features. However, Kubernetes is not necessarily easy to deal with, when it comes to scaling pods especially if you want to minimize the so called cold-start latencies (a request having to wait until an entire container is spun up), that customers have to take.
Currently, Knative Serving collects traffic metrics from various sources, aggregates them by taking an average over all datapoints and generates its recommendation based on the resulting data.
Your mission is to come up with a much finer hammer than "average the data" that takes the Kubernetes environment into account (i.e. scales down slower than it scales up) and to make sure that the new algorithm doesn't break users of the existing algorithm. As such, the creation of a great experimentation harness will be necessary.
- Understand and analyze the environment (Kubernetes, Knative, Serverless) and understand the characteristics that the algorithm has to have.
- Create an experimentation harness that allows you (and us) to play with different algorithms.
- With that harness, come up with an improvement over the current algorithm.
Knowledge prerequisite: Golang, Statistics, Serverless/FaaS (optional), Kubernetes (optional)
Github repo: https://github.com/knative/serving/
Skill level: Intermediate/Advanced
Contact(s) / potential mentors(s): Markus Thoemmes (mthoemmes AT redhat DOT com)