note k8s vs nix rollback/introspection

This commit is contained in:
Qyriad 2025-12-02 15:43:08 +01:00
commit 9c3736612f

View file

@ -70,7 +70,7 @@ From this, we can observe that **the NixOS module system is not inherently slow*
### Append-based Reconfiguration
Current scalable systems, such as Kubernetes'-based container orchestrations[^6], are capable of directly modifying configuration parameters of their target nodes at runtime. These executions are fast, but sacrifice both the _formal introspectability_ of using a structured language such as Nix, and the _seamless rollback and redeployment_ endemic to Nix's reproducibility.
Current scalable systems, such as Kubernetes'-based container orchestrations[^6], are capable of directly modifying configuration parameters of their target nodes at runtime. These executions are fast, but sacrifice both the _formal introspectability_ of using a structured language such as Nix, and the _seamless rollback and redeployment_ endemic to Nix's reproducibility[^13].
In our system, we propose implementing _append-based reconfiguration_, where individual segments of trivial Nix configuration are appended to an existing configuration. For example, to adjust the number of threads used by a theoretical server, we might adjust the value of its `server_threads` configuration parameter using the following _appended_ Nix module:
@ -267,3 +267,4 @@ Approaches considered, but ultimately discarded, include:
[^10]: https://mynixos.com/nixpkgs/option/system.etc.overlay.mutable
[^11]: Control system stability theory; as exemplified by considering response delay as loss of phase margin: https://en.wikipedia.org/wiki/Phase_margin
[^12]: Mastodon uses a simple environment variable present in its service to adjust the number of web-server processes and threads: https://github.com/NixOS/nixpkgs/blob/nixos-25.11/nixos/modules/services/web-apps/mastodon.nix#L28
[^13]: Users with complex Kubernetes stacks will likely object that tools exist to make "introspection" and "rollback" possible; but these rely on an online, authenticated server connection to etcd for introspection and use the underlying version control software for rollback. These neither provide the granular introspectibility offered by Nix, nor Nix's ability concretely re-construct a system's state during rollback.