self-updates • Vanilla upstream software with addons, no forked components • Our opinionated approach to infrastructure • Source of technical materials for this talk :) Tectonic
set of nodes • Segment workloads via containers • Keep track of resource requirements and usage • High level primitives (pods, services, replicas) • Originally by Google Kubernetes
Get rid of custom scripts ◦ Introduce absolute ordering and dependency graph ◦ Introspection via DBus interfaces https://github.com/systemd/systemd Systemd
(HTTPS + XML + sigs) • Updates flushed to passive partition • Updates applied via reboot • Cluster-wide maintenance scheduling ◦ Either via locksmith or kubernetes addon https://github.com/coreos/locksmith Update-engine
Pro: • Static typing and coroutines - CSP-style [Hoare’77] • Simple to learn, read and write • Easy to develop concurrent logic Cons: • Lack of generic constructs and data types • Easy to introduce data races • Mandatory runtime ◦ Multi-threaded ◦ Garbage collection Go
memory safety, no data races • Avoids global mutable state • Thin runtime (can target bare metal) Cons: • Steep learning curve • Library ecosystem still growing Rust