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