move architecture to after we explain the needed technologies
This commit is contained in:
parent
7b6ab144c8
commit
93a9eecd2b
1 changed files with 84 additions and 84 deletions
168
architecture.md
168
architecture.md
|
@ -79,90 +79,6 @@
|
||||||
|
|
||||||
Configuration logic specific to a runtime backend, e.g. how to deploy, how to access object storage.
|
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).
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Entity relationships
|
|
||||||
|
|
||||||
Relationships among the entities used to model migrations are as follows, using the crow's foot notation to denote cardinality:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 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:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 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
|
## Technologies used
|
||||||
|
|
||||||
### [NixOS](https://nixos.org/)
|
### [NixOS](https://nixos.org/)
|
||||||
|
@ -273,3 +189,87 @@ Considered alternatives include:
|
||||||
|
|
||||||
- 389 DS: older larger package
|
- 389 DS: older larger package
|
||||||
- FreeIPA: wrapper around 389 DS
|
- 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).
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Entity relationships
|
||||||
|
|
||||||
|
Relationships among the entities used to model migrations are as follows, using the crow's foot notation to denote cardinality:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 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:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 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)
|
||||||
|
|
Loading…
Add table
Reference in a new issue