Restructure package and class structure of Theodolite
The following is a working draft for the new structure:
-
rocks.theodolite.core should contain the core elements of Theodolite's benchmarking method. This means we don't find anything Kubernetes related here. I propose to restrict this package to everything, which is responsible for deciding, which executions to run. This is, in particular search strategies, metrics and some interfaces. See also #259 (closed). From my understanding, this should include the following entities:
- Some "starting" class, e.g., ExecutionRunner which can be configured by a strategy, a metric, a set of load intensities (integers) and resources (integers).
- All the strategies and related entities.
- An interface ExperimentRunner, which is called by the strategies. This interface can be implemented, for example, by Kubernetes-specific experiment runner. This way, the strategy tells the runner: "Run now experiment(s) with load l and r resources." The runner then knows what this actually means, e.g., start Kubernetes pods, wait, and delete them again.
- Elements such as repetitions, logging (arguable), before/after actions, SLO evaluation should not be part of the core.
- rocks.theodolite.kubernetes Almost all of our code will be put here, which is okay for now. If - at some point - we extends Theodolite to support other infrastructures, we can try to extract common parts.
- rocks.theodolite.kubernetes.operator Running Theodolite as operator should be the default and it's okay make this package rather large.
- rocks.theodolite.kubernetes.standalone We haven't decided yet on the future of the standalone mode. I think it's good to keep it for now, but it's also okay, if not all operator features are available in standalone mode as well.
-
rocks.theodolite.kubernetes.slo Contains everything that is related to SLO checking/evaluation in Kubernetes. Currently, this can be found in the package
evaluation
. -
rocks.theodolite.kubernetes.kafka Everything Kafka (in Kubernetes) related. Probably this is only the
TopicManager
class.
Edited by Sören Henning