From 93a9eecd2bb66dd3a0adec2117fda63b15118138 Mon Sep 17 00:00:00 2001 From: cinereal Date: Sun, 1 Jun 2025 20:25:25 +0200 Subject: [PATCH] move architecture to after we explain the needed technologies --- architecture.md | 168 ++++++++++++++++++++++++------------------------ 1 file changed, 84 insertions(+), 84 deletions(-) diff --git a/architecture.md b/architecture.md index 6396c5d..202d5ea 100644 --- a/architecture.md +++ b/architecture.md @@ -79,90 +79,6 @@ Configuration logic specific to a runtime backend, e.g. how to deploy, how to access object storage. -## Architecture - -At the core of Fediversity lies a NixOS configuration template containing selected applications. -We use this to deploy to selected run-time environments, so far targeting hypervisor ProxmoX. -We further provide a reference front-end to configure our template. -To ensure reproducibility, we also offer Nix packaging for our software. - -To reach our goals, we aim to implement the following interactions between [actors](#actors) (depicted with rounded corners) and system components (see the [glossary](#glossary), depicted with rectangles). - -![](https://git.fediversity.eu/Fediversity/meta/raw/branch/entity-relations/architecture-docs/interactions.svg) - -### Entity relationships - -Relationships among the entities used to model migrations are as follows, using the crow's foot notation to denote cardinality: - -![](https://git.fediversity.eu/Fediversity/meta/raw/branch/entity-relations/architecture-docs/entity-relations.svg) - -### Data model - -### Host architecture - -Whereas the core abstraction in Fediversity is a NixOS configuration template, a more full-fledged example architecture of the web host use-case we aim to support as part of our exploitation would be as follows, where VMs in question run Fediversity to offer our selected applications: - -![](https://git.fediversity.eu/Fediversity/meta/raw/branch/entity-relations/architecture-docs/host-architecture.png) - -## Break-down of project milestones - -Whereas details of the implementation may need to be decided as the technical challenges involved become clear, we can already give a higher-level planning of relevant milestones and some of their salient features: - -1. [Implement a way to run online services emphasising user autonomy and portability](https://git.fediversity.eu/Fediversity/Fediversity/issues/347) - - [application data back-ups](https://git.fediversity.eu/Fediversity/Fediversity/issues/123) - - [deploying Fediversity applications](https://git.fediversity.eu/Fediversity/Fediversity/issues/99) - - [migrating application data between hosting providers](https://git.fediversity.eu/Fediversity/Fediversity/issues/100) -1. [Disseminate our results by engaging the open-source community to further expand on work in this direction](https://git.fediversity.eu/Fediversity/Fediversity/issues/348) - - [automated dev-ops workflows](https://git.fediversity.eu/Fediversity/Fediversity/issues/224): - - [separate test environments for staging vs. production](https://git.fediversity.eu/Fediversity/Fediversity/issues/69) - - [continuous deployment](https://git.fediversity.eu/Fediversity/Fediversity/issues/177) - - [CI rejects failing deployments](https://git.fediversity.eu/Fediversity/Fediversity/issues/102) - - [Nix package overlays upstreamed](https://git.fediversity.eu/Fediversity/Fediversity/issues/248) - - [facilitate suggestions in PR reviews](https://git.fediversity.eu/Fediversity/Fediversity/issues/302) - - [integration test](https://git.fediversity.eu/Fediversity/Fediversity/issues/277) - - [external developers empowered to contribute](https://git.fediversity.eu/Fediversity/Fediversity/issues/288): - - [NixOS configuration as the core abstraction](https://git.fediversity.eu/Fediversity/Fediversity/issues/339) - - [integration tests](https://git.fediversity.eu/Fediversity/Fediversity/issues/277) - - [Continuous Integration builds available in a public cache](https://git.fediversity.eu/Fediversity/Fediversity/issues/92) - - [reproducible project infrastructure](https://git.fediversity.eu/Fediversity/Fediversity/issues/336) - - [continuous deployment](https://git.fediversity.eu/Fediversity/Fediversity/issues/177) - - [separate staging/testing environments](https://git.fediversity.eu/Fediversity/Fediversity/issues/69) - - [code reviewers can suggest changes](https://git.fediversity.eu/Fediversity/Fediversity/issues/302) - - [knowledge base](https://git.fediversity.eu/Fediversity/Fediversity/issues/288) - - [module upstreamed to nixpkgs](https://git.fediversity.eu/Fediversity/Fediversity/issues/333) -1. [Exploit our work by facilitating the sample use-case of web hosting organisations using an initial set of services](https://git.fediversity.eu/Fediversity/Fediversity/issues/349) - - [Initial internal user to kick-start feedback process](https://git.fediversity.eu/Fediversity/Fediversity/issues/225): - - automated provisioning of: - - [databases](https://git.fediversity.eu/Fediversity/Fediversity/issues/115) - - [object storage](https://git.fediversity.eu/Fediversity/Fediversity/issues/185) - - [virtual machines](https://git.fediversity.eu/Fediversity/Fediversity/issues/116) - - [DNS](https://git.fediversity.eu/Fediversity/Fediversity/issues/110) - - [admin accounts](https://git.fediversity.eu/Fediversity/Fediversity/issues/178) - - [SMTP service](https://git.fediversity.eu/Fediversity/Fediversity/issues/117) - - [email accounts](https://git.fediversity.eu/Fediversity/Fediversity/issues/118) - - [ephemeral state](https://git.fediversity.eu/Fediversity/Fediversity/issues/314) - - [specification published](https://git.fediversity.eu/Fediversity/Fediversity/issues/334) - - [ProxmoX back-end supports multiple users](https://git.fediversity.eu/Fediversity/Fediversity/issues/313) - - [user can have multiple deployments](https://git.fediversity.eu/Fediversity/Fediversity/issues/241) - - [users can update their deployment configurations](https://git.fediversity.eu/Fediversity/Fediversity/issues/158) - - [Software ready for web hosts to take into production](https://git.fediversity.eu/Fediversity/Fediversity/issues/228): - - [garbage collection of unallocated resources](https://git.fediversity.eu/Fediversity/Fediversity/issues/188) - - [Nix-less bootstrap](https://git.fediversity.eu/Fediversity/Fediversity/issues/332) - - [ensure hosts may update users' deployments](https://git.fediversity.eu/Fediversity/Fediversity/issues/159) - - [reference front-end decoupled from template version](https://git.fediversity.eu/Fediversity/Fediversity/issues/304) - - [security audit](https://git.fediversity.eu/Fediversity/Fediversity/issues/291) - - [Key features improving user experience supported](https://git.fediversity.eu/Fediversity/Fediversity/issues/289): - - [enqueuing deployment syncs](https://git.fediversity.eu/Fediversity/Fediversity/issues/242) - - [provide single sign-on](https://git.fediversity.eu/Fediversity/Fediversity/issues/212) - - [upstream configuration options exposed](https://git.fediversity.eu/Fediversity/Fediversity/issues/195) - - [allow disabling application while retaining data](https://git.fediversity.eu/Fediversity/Fediversity/issues/186) - - [ProxmoX deployment allows scaling resources assigned to a VM](https://git.fediversity.eu/Fediversity/Fediversity/issues/119) - - [aid needed user actions on schema update](https://git.fediversity.eu/Fediversity/Fediversity/issues/214) - - [completed initial application offering](https://git.fediversity.eu/Fediversity/Fediversity/issues/350) - - [pooling application instances to shared VMs](https://git.fediversity.eu/Fediversity/Fediversity/issues/322) - - [allow use of external single sign-on](https://git.fediversity.eu/Fediversity/Fediversity/issues/161) - - [on migration, allow reconfiguring monolithic vs distributed](https://git.fediversity.eu/Fediversity/Fediversity/issues/341) - ## Technologies used ### [NixOS](https://nixos.org/) @@ -273,3 +189,87 @@ Considered alternatives include: - 389 DS: older larger package - FreeIPA: wrapper around 389 DS + +## Architecture + +At the core of Fediversity lies a NixOS configuration template containing selected applications. +We use this to deploy to selected run-time environments, so far targeting hypervisor ProxmoX. +We further provide a reference front-end to configure our template. +To ensure reproducibility, we also offer Nix packaging for our software. + +To reach our goals, we aim to implement the following interactions between [actors](#actors) (depicted with rounded corners) and system components (see the [glossary](#glossary), depicted with rectangles). + +![](https://git.fediversity.eu/Fediversity/meta/raw/branch/entity-relations/architecture-docs/interactions.svg) + +### Entity relationships + +Relationships among the entities used to model migrations are as follows, using the crow's foot notation to denote cardinality: + +![](https://git.fediversity.eu/Fediversity/meta/raw/branch/entity-relations/architecture-docs/entity-relations.svg) + +### Data model + +### Host architecture + +Whereas the core abstraction in Fediversity is a NixOS configuration template, a more full-fledged example architecture of the web host use-case we aim to support as part of our exploitation would be as follows, where VMs in question run Fediversity to offer our selected applications: + +![](https://git.fediversity.eu/Fediversity/meta/raw/branch/entity-relations/architecture-docs/host-architecture.png) + +## Break-down of project milestones + +Whereas details of the implementation may need to be decided as the technical challenges involved become clear, we can already give a higher-level planning of relevant milestones and some of their salient features: + +1. [Implement a way to run online services emphasising user autonomy and portability](https://git.fediversity.eu/Fediversity/Fediversity/issues/347) + - [application data back-ups](https://git.fediversity.eu/Fediversity/Fediversity/issues/123) + - [deploying Fediversity applications](https://git.fediversity.eu/Fediversity/Fediversity/issues/99) + - [migrating application data between hosting providers](https://git.fediversity.eu/Fediversity/Fediversity/issues/100) +1. [Disseminate our results by engaging the open-source community to further expand on work in this direction](https://git.fediversity.eu/Fediversity/Fediversity/issues/348) + - [automated dev-ops workflows](https://git.fediversity.eu/Fediversity/Fediversity/issues/224): + - [separate test environments for staging vs. production](https://git.fediversity.eu/Fediversity/Fediversity/issues/69) + - [continuous deployment](https://git.fediversity.eu/Fediversity/Fediversity/issues/177) + - [CI rejects failing deployments](https://git.fediversity.eu/Fediversity/Fediversity/issues/102) + - [Nix package overlays upstreamed](https://git.fediversity.eu/Fediversity/Fediversity/issues/248) + - [facilitate suggestions in PR reviews](https://git.fediversity.eu/Fediversity/Fediversity/issues/302) + - [integration test](https://git.fediversity.eu/Fediversity/Fediversity/issues/277) + - [external developers empowered to contribute](https://git.fediversity.eu/Fediversity/Fediversity/issues/288): + - [NixOS configuration as the core abstraction](https://git.fediversity.eu/Fediversity/Fediversity/issues/339) + - [integration tests](https://git.fediversity.eu/Fediversity/Fediversity/issues/277) + - [Continuous Integration builds available in a public cache](https://git.fediversity.eu/Fediversity/Fediversity/issues/92) + - [reproducible project infrastructure](https://git.fediversity.eu/Fediversity/Fediversity/issues/336) + - [continuous deployment](https://git.fediversity.eu/Fediversity/Fediversity/issues/177) + - [separate staging/testing environments](https://git.fediversity.eu/Fediversity/Fediversity/issues/69) + - [code reviewers can suggest changes](https://git.fediversity.eu/Fediversity/Fediversity/issues/302) + - [knowledge base](https://git.fediversity.eu/Fediversity/Fediversity/issues/288) + - [module upstreamed to nixpkgs](https://git.fediversity.eu/Fediversity/Fediversity/issues/333) +1. [Exploit our work by facilitating the sample use-case of web hosting organisations using an initial set of services](https://git.fediversity.eu/Fediversity/Fediversity/issues/349) + - [Initial internal user to kick-start feedback process](https://git.fediversity.eu/Fediversity/Fediversity/issues/225): + - automated provisioning of: + - [databases](https://git.fediversity.eu/Fediversity/Fediversity/issues/115) + - [object storage](https://git.fediversity.eu/Fediversity/Fediversity/issues/185) + - [virtual machines](https://git.fediversity.eu/Fediversity/Fediversity/issues/116) + - [DNS](https://git.fediversity.eu/Fediversity/Fediversity/issues/110) + - [admin accounts](https://git.fediversity.eu/Fediversity/Fediversity/issues/178) + - [SMTP service](https://git.fediversity.eu/Fediversity/Fediversity/issues/117) + - [email accounts](https://git.fediversity.eu/Fediversity/Fediversity/issues/118) + - [ephemeral state](https://git.fediversity.eu/Fediversity/Fediversity/issues/314) + - [specification published](https://git.fediversity.eu/Fediversity/Fediversity/issues/334) + - [ProxmoX back-end supports multiple users](https://git.fediversity.eu/Fediversity/Fediversity/issues/313) + - [user can have multiple deployments](https://git.fediversity.eu/Fediversity/Fediversity/issues/241) + - [users can update their deployment configurations](https://git.fediversity.eu/Fediversity/Fediversity/issues/158) + - [Software ready for web hosts to take into production](https://git.fediversity.eu/Fediversity/Fediversity/issues/228): + - [garbage collection of unallocated resources](https://git.fediversity.eu/Fediversity/Fediversity/issues/188) + - [Nix-less bootstrap](https://git.fediversity.eu/Fediversity/Fediversity/issues/332) + - [ensure hosts may update users' deployments](https://git.fediversity.eu/Fediversity/Fediversity/issues/159) + - [reference front-end decoupled from template version](https://git.fediversity.eu/Fediversity/Fediversity/issues/304) + - [security audit](https://git.fediversity.eu/Fediversity/Fediversity/issues/291) + - [Key features improving user experience supported](https://git.fediversity.eu/Fediversity/Fediversity/issues/289): + - [enqueuing deployment syncs](https://git.fediversity.eu/Fediversity/Fediversity/issues/242) + - [provide single sign-on](https://git.fediversity.eu/Fediversity/Fediversity/issues/212) + - [upstream configuration options exposed](https://git.fediversity.eu/Fediversity/Fediversity/issues/195) + - [allow disabling application while retaining data](https://git.fediversity.eu/Fediversity/Fediversity/issues/186) + - [ProxmoX deployment allows scaling resources assigned to a VM](https://git.fediversity.eu/Fediversity/Fediversity/issues/119) + - [aid needed user actions on schema update](https://git.fediversity.eu/Fediversity/Fediversity/issues/214) + - [completed initial application offering](https://git.fediversity.eu/Fediversity/Fediversity/issues/350) + - [pooling application instances to shared VMs](https://git.fediversity.eu/Fediversity/Fediversity/issues/322) + - [allow use of external single sign-on](https://git.fediversity.eu/Fediversity/Fediversity/issues/161) + - [on migration, allow reconfiguring monolithic vs distributed](https://git.fediversity.eu/Fediversity/Fediversity/issues/341)