How lacastrilf/controller works
This is a configurable autoscaling controller. An operator selects modes at startup; the controller loads mode and infrastructure settings, starts periodic runners, evaluates metrics against thresholds, then scales the configured EC2 tier or Kubernetes deployment while enforcing capacity bounds and cooldowns. CloudWatch supplies metrics, and EC2 scale-up also registers targets with the load balancer and waits for health. The README is empty, and several modules are represented only by the file tree, so their internal behavior and unwired capabilities are not expanded.
Main entry points: main.go Startup wiring · controller.go Periodic runner · mode_rules.go Mode rules · yaml.go YAML loader
Components 22
Startup and config
- Startup wiring
cmd/controller/main.go - YAML loader
internal/utils/yaml.go - Mode config
internal/config/modes.go - Infrastructure config
internal/config/infra.go - Mode definitions
config/modes.yaml - Infrastructure definitions
config/infra.yaml
Evaluation
- Periodic runner
internal/controller/controller.go - Mode rules
internal/evaluator/mode_rules.go - Metric provider
internal/collector/collector.go - CloudWatch queries
internal/collector/cloudwatch.go - Metric techniques
internal/techniques - CloudWatch
Scaling actions
- Executor interface
internal/executor/executor.go - EC2 scaling
internal/executor/ec2.go - Kubernetes scaling
internal/executor/kubernetes.go - AWS EC2
- Load balancer
- Kubernetes API
Operations
- Decision logger
internal/logger/logger.go - Console and JSONL
controller.jsonl - Resource state types
internal/state
Other components
- Operator
Connections 20
- Operator → Startup wiring: selects modes
- Startup wiring → YAML loader: loads config
- YAML loader → Mode definitions: reads
- YAML loader → Infrastructure definitions: reads
- Startup wiring → Periodic runner: starts runners
- Startup wiring → EC2 scaling: constructs
- Startup wiring → Kubernetes scaling: constructs
- Startup wiring → Mode rules: configures
- Startup wiring → CloudWatch queries: configures
- Periodic runner → Executor interface: reads capacity
- Periodic runner → Mode rules: evaluates
- Periodic runner → Executor interface: scales
- Periodic runner → Decision logger: records decisions
- Mode rules → Metric provider: requests metrics
- Mode rules → Metric techniques: applies
- CloudWatch queries → CloudWatch: queries
- EC2 scaling → AWS EC2: describes and changes
- EC2 scaling → Load balancer: registers and checks targets
- Kubernetes scaling → Kubernetes API: reads and updates deployment
- Decision logger → Console and JSONL: writes