tweak project proposal #1
1 changed files with 134 additions and 1 deletions
135
fediversity.md
135
fediversity.md
|
@ -434,6 +434,139 @@ We will integrate that aspect into the high level process on a best effort basis
|
|||
|
||||
# Quality and efficiency of the implementation
|
||||
|
||||
## Interactions
|
||||
|
||||
To reach these 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).
|
||||
|
||||
```mermaid
|
||||
flowchart
|
||||
|
||||
user(user) --> |use| deployment
|
||||
|
||||
configuration -->|deploy| deployed
|
||||
devs(developers) --> |maintain| fediversity
|
||||
|
||||
fediversity --> |update| provider1
|
||||
subgraph provider1["fediversity setup A"]
|
||||
subgraph panel1[panel]
|
||||
configuration[staged configuration]
|
||||
configuration --> |update| configuration
|
||||
deployed[deployed configuration]
|
||||
end
|
||||
deployed --> |describe| deployment
|
||||
provider-config[runtime config] --> |describe| host
|
||||
provider-config --> |implement runtime interfaces| panel1
|
||||
subgraph host[runtime environment]
|
||||
deployment[applications]
|
||||
state
|
||||
end
|
||||
end
|
||||
|
||||
deployment --> |store| state
|
||||
|
||||
operator(operator) --> |change| configuration
|
||||
|
||||
subgraph provider2["fediversity setup B"]
|
||||
subgraph panel2[panel]
|
||||
configuration2[staged configuration]
|
||||
deployed2[deployed configuration]
|
||||
end
|
||||
subgraph host2[runtime environment]
|
||||
deployment2[applications]
|
||||
state2[state]
|
||||
end
|
||||
end
|
||||
|
||||
operator --> |trigger| migration
|
||||
configuration & deployed & state --> migration
|
||||
migration --> configuration2 & deployed2 & state2
|
||||
provider(hosting provider) --> |maintain| provider1
|
||||
subgraph fediversity[fediversity source code]
|
||||
applications[application modules]
|
||||
backends[runtime backends]
|
||||
config[runtime options]
|
||||
end
|
||||
```
|
||||
|
||||
## Actors
|
||||
|
||||
- Developers
|
||||
|
||||
The group working on this repository.
|
||||
We are creating the deployment workflows and service configurations.
|
||||
|
||||
- Hosting provider
|
||||
|
||||
They provide and maintain the physical infrastructure, and run the software in this repository, through which operators interact with their deployments.
|
||||
Hosting providers are technical administrators for these deployments, ensuring availability and appropriate performance.
|
||||
|
||||
We target small- to medium-scale hosting providers with 20+ physical machines.
|
||||
|
||||
- Operator
|
||||
|
||||
They select the applications they want to run.
|
||||
They don't need to own hardware or deal with operations.
|
||||
Operators administer their applications in a non-technical fashion, e.g. as moderators.
|
||||
They pay the hosting provider for registering a domain name, maintaining physical resources, and monitoring deployments.
|
||||
|
||||
- User
|
||||
|
||||
They are individuals using applications run by the operators, and e.g. post content.
|
||||
|
||||
## Glossary
|
||||
|
||||
- [Fediverse](https://en.wikipedia.org/wiki/Fediverse)
|
||||
|
||||
A collection of social networking applications that can communicate with each other using a common protocol.
|
||||
|
||||
- Application
|
||||
|
||||
User-facing software (e.g. from Fediverse) run by the hosting provider for an operator.
|
||||
|
||||
- Configuration
|
||||
|
||||
A collection of settings for a machine running NixOS.
|
||||
|
||||
> Example: Configurations are deployed to VMs.
|
||||
|
||||
- Provision
|
||||
|
||||
Make a resource, such as a virtual machine, available for use.
|
||||
|
||||
- Deploy
|
||||
|
||||
Put software, such as applications, onto computers.
|
||||
The software includes technical configuration that links software components.
|
||||
In our context, this a Configuration deployed to a runtime environment.
|
||||
Most user-facing configuration remains untouched by the deployment process.
|
||||
|
||||
- Migrate
|
||||
|
||||
Move service configurations and deployment (including user data) from one hosting provider to another.
|
||||
|
||||
- Resource
|
||||
|
||||
A [resource for NixOps4](https://nixops.dev/manual/development/concept/resource.html) is any external entity that can be declared with NixOps4 expressions and manipulated with NixOps4, such as a virtual machine, an active NixOS configuration, a DNS entry, or customer database.
|
||||
|
||||
- Resource provider
|
||||
|
||||
A resource provider for NixOps4 is an executable that communicates between a resource and NixOps4 using a standardised protocol, allowing [CRUD operations](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete) on the resources to be performed by NixOps4.
|
||||
Refer to the [NixOps4 manual](https://nixops.dev/manual/development/resource-provider/index.html) for details.
|
||||
|
||||
> Example: We need a resource provider for obtaining deployment secrets from a database.
|
||||
|
||||
- Runtime backend
|
||||
|
||||
A type of digital environment one can run operating systems such as NixOS on, e.g. bare-metal, a hypervisor, or a container runtime.
|
||||
|
||||
- Runtime environment
|
||||
|
||||
The thing a deployment runs on, an interface against which the deployment is working. See runtime backend.
|
||||
|
||||
- Runtime config
|
||||
|
||||
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 Terraform module for setting up NixOS instances on a hypervisor, so far targeting ProxmoX.
|
||||
|
@ -450,7 +583,7 @@ Whereas details of the implementation may need to be decided as the technical ch
|
|||
- Initial internal user to kick-start feedback process:
|
||||
- automate provisioning of:
|
||||
- [databases](https://git.fediversity.eu/Fediversity/Fediversity/issues/115)
|
||||
- [immutable storage](https://git.fediversity.eu/Fediversity/Fediversity/issues/185)
|
||||
- [object storage](https://git.fediversity.eu/Fediversity/Fediversity/issues/185)
|
||||
- [virtual machines](https://git.fediversity.eu/Fediversity/Fediversity/issues/116) (and related resources)
|
||||
- [DNS](https://git.fediversity.eu/Fediversity/Fediversity/issues/110)
|
||||
- [SMTP service](https://git.fediversity.eu/Fediversity/Fediversity/issues/117)
|
||||
|
|
Loading…
Add table
Reference in a new issue