040 Project 40: Infra Reconciler Daemon
040 Build an Infra Reconciler Daemon
Model a control-loop daemon that continuously moves actual state toward desired state.
desired config -> diff -> apply actions -> observe -> repeat
Full main.go
package main
import (
"fmt"
"time"
)
type state struct {
Desired int
Actual int
}
func diff(s state) int { return s.Desired - s.Actual }
func apply(s *state) string {
d := diff(*s)
switch {
case d > 0:
s.Actual++
return "scale_up"
case d < 0:
s.Actual--
return "scale_down"
default:
return "noop"
}
}
func main() {
s := state{Desired: 5, Actual: 1}
tick := time.NewTicker(400 * time.Millisecond)
defer tick.Stop()
for i := 0; i < 20; i++ {
<-tick.C
action := apply(&s)
fmt.Printf("tick=%02d desired=%d actual=%d action=%s\n", i, s.Desired, s.Actual, action)
if i == 10 {
s.Desired = 3
}
}
}Step-by-Step Explanation
- Model desired and actual state explicitly.
- Compute a minimal diff.
- Apply one idempotent reconciliation step.
- Observe updated state and repeat.
- Keep loops convergent and failure-aware.
Code Anatomy
- State model captures control-plane truth.
- Reconcile function decides next action.
- Loop executes continuously with visibility into actions.
Learning Goals
- Learn the controller pattern used in modern platforms.
- Build robust automation through repeated reconciliation.
- Understand convergence over one-shot scripting.