!djTaTBQyWEPRQxrPTb:nixos.org

Nixpkgs Architecture Team

228 Members
https://github.com/nixpkgs-architecture, weekly public meetings on Wednesday 15:00-16:00 UTC at https://meet.jit.si/nixpkgs-architecture53 Servers

Load older messages


SenderMessageTime
20 Jun 2023
@raitobezarius:matrix.orgraitobezariuspostgresql database10:36:36
@raitobezarius:matrix.orgraitobezariusredis database10:36:40
@raitobezarius:matrix.orgraitobezariusetc.10:36:42
@raitobezarius:matrix.orgraitobezariusthen "taking a snapshot" for the service is taking a snapshot of all its constitutents10:36:52
@raitobezarius:matrix.orgraitobezariusand this is an implem detail on how you take such snapshots10:36:59
@piegames:matrix.org@piegames:matrix.orgSo you have three services connecting to postgres, and one of them fails during upgrade. That's not an implementation detail, that's a fundamental problem IMO10:37:15
@raitobezarius:matrix.orgraitobezariusyou can take diff snapshots using the filesystem features if this makes sense, you can take application level snapshots if it's possible10:37:18
@raitobezarius:matrix.orgraitobezarius
In reply to @piegames:matrix.org
So you have three services connecting to postgres, and one of them fails during upgrade. That's not an implementation detail, that's a fundamental problem IMO
taking a PGSQL database snapshot without affecting the other is a requirement
10:37:45
@raitobezarius:matrix.orgraitobezariusok let's define it further10:37:52
@raitobezarius:matrix.orgraitobezariuswe have services in nixpkgs which are shared with different applications living on the same machine10:38:04
@raitobezarius:matrix.orgraitobezariuslet's say that the rollback/snapshot granularity is at the database level for PGSQL (and similar things)10:38:29
@raitobezarius:matrix.orgraitobezarius3 services get upgraded, are using 1 database each, one of them fails during upgrade10:38:38
@raitobezarius:matrix.orgraitobezariusyou rollback the failed upgrade's database10:38:44
@raitobezarius:matrix.orgraitobezariusnot the others one10:38:47
@raitobezarius:matrix.orgraitobezariusexcept if you go further and you say that this group of 3 services needs to be coupled and then if you look at the systemd dependencies graph, you want to rollback every database10:39:19
@raitobezarius:matrix.orgraitobezarius(network dependencies are hard to discover but I don't think they're impossible to build)10:39:50
@raitobezarius:matrix.orgraitobezariusthe way you take snapshots though is impl detail because you could use all kind of techniques which can be better depending on your exact situation10:40:14
@raitobezarius:matrix.orgraitobezariussystem snapshot, filesystem-level snapshots, ZFS dataset-level snapshots, application-level snapshots, "backup/restore procedures"10:40:42
@ronnypfannschmidt:matrix.org@ronnypfannschmidt:matrix.orgmigrations as such need ot be kind of managed as involved service groups that may or may not share required rollbacks for full safety you need service deployment granularity that enables migrations in steps where both older and newer versons currently avaliable can work with the data in question maintenance modes for the applications that can happen independ of the code deployment are going to be important as well so starting points like "having restorable backups" are definitively nice to have but applications themselfes also need some extras11:55:24
@ronnypfannschmidt:matrix.org@ronnypfannschmidt:matrix.orgsomething fun and unique one could do with a system like nixos, is to have non gc roots of avaliable application versions that link to the state versions discoverable (like have a version of the old app, the new app and the migrate command, and the systemd service will pick the executable based on current state ) - classically this would be done with tagged container images11:57:10
@raitobezarius:matrix.orgraitobezarius

migrations as such need ot be kind of managed as involved service groups that may or may not share required rollbacks

yes but this is a metadata problem somewhat, right?

12:16:47
@raitobezarius:matrix.orgraitobezarius

for full safety you need service deployment granularity that enables migrations in steps where both older and newer versons currently avaliable can work with the data in question

if your app supports it, yes; if not, you don't need it, as long as you always know how to "rollback an app code" and "rollback an app data", this is the only thing you need and this can always be done if you know where all the state is and you have Nix semantics

12:17:43
@raitobezarius:matrix.orgraitobezarius(of course, caveats applies on app which relies on globally provided libraries such as GPU, but this is orthogonal to the whole discussion IMHO)12:18:01
@raitobezarius:matrix.orgraitobezarius

maintenance modes for the applications that can happen independ of the code deployment are going to be important as well

yes, maintenance mode is one of the low hanging fruit for those procedures, nixops had a PR which enabled many niceties on this, we discussed it again in nixos deployments but I don't think it went somewhere

12:18:34
@raitobezarius:matrix.orgraitobezarius

so starting points like "having restorable backups" are definitively nice to have but applications themselfes also need some extras

at least, they would prevent people losing all their bookmarks in nextcloud or losing all their docs in hedgedocs, because some contributors blindly believe that automatic rollback is fine because everyone is responsible and do backups (which is not totally true)

12:19:28
@raitobezarius:matrix.orgraitobezarius

something fun and unique one could do with a system like nixos, is to have non gc roots of avaliable application versions that link to the state versions discoverable (like have a version of the old app, the new app and the migrate command, and the systemd service will pick the executable based on current state ) - classically this would be done with tagged container images

this can already be achieved by manipulating nix profiles properly I believe

12:20:28
@raitobezarius:matrix.orgraitobezariusI'm not sure we would need to go further on that12:20:40
@piegames:matrix.org@piegames:matrix.orgGiven the stated intention and the fact that approving the PR in GitHub is more a formality than really required, I am going to start and announce FCP now (or at least today)12:37:36
@growpotkin:matrix.orgGrowpotkinI approve12:37:40
@piegames:matrix.org@piegames:matrix.orgRFC 140 is now in FCP, Discourse announcement unfortunately cannot be made by me against prior knowledge12:56:30

Show newer messages


Back to Room ListRoom Version: 9