forked from kiara/fedi-goals
		
	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