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.
|
||||
|
||||
## 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
|
||||
|
||||
### [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).
|
||||
|
||||

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