​Problem make available lots of open source packages. end-user doesn't have to know about how to do any of these things (install software, resilient storage, etc) scale to 10k-1m users we've made some choices: NixOS, s3 storage, stateless as much as possible we need something that starts services, monitors the services, restarts, spins up extra nodes, etc. constraint: everything is "real" open-source "consider kubernetes?" kubernetes kubernetes fits need some extra tools and glueing for making this available to the users tooling is 90% there tool recommendations to come like docker-compose but in the cloud reconcilliation loop: you specify a state "i want 2 instances of X at Y domain name" kubernetes takes care of everything applications slot into the reconcilliation loop to enforce the part of the state they manage most things already exist (DNS, networking, etc) master/worker: master is the machine that holds state. this is usually managed by the cloud provider there might be UIs similar to NixPanel already existing for kubernetes k3s vs. k8s k8s: kubernetes k3s: kubernetes but slimed down for playing around at home alternatives nomad, but konstantinos does not have experience with it complexity it's easy to stay limited to a smaller subset we don't want to introduce pre-existing components that bring along their own baggage (e.g. "matrix instance, but it's on alpine") why not? unite things under one tool; can make small changes without breaking everything; containerization the pre-existing components are all running under docker containers can override with a different container things that might be easier with nix configuration rolling updates integrate with the outside world manage storage network configurations internally ipv4? address space between nodes public IPs namespaces Kubernetes has the advantage of being familiar to people disadvantage is that it integrates into existing cloud providers (we want to move people away from google/amazon cloud)