doc: add general architecture base document + layers base reference
All checks were successful
Cadoles/bouncer/pipeline/head This commit looks good

This commit is contained in:
wpetit 2023-06-22 20:53:58 -06:00
parent 2a8849493d
commit 8d21e9083c
8 changed files with 101 additions and 9 deletions

3
.gitignore vendored
View File

@ -6,4 +6,5 @@
/config.yml
/admin-key.json
/.bouncer-token
/data
/data
/out

View File

@ -5,6 +5,7 @@
## Référence
- [(FR) - Layers](./fr/references/layers/README.md)
- [Fichier de configuration](../misc/packaging/common/config.yml)
## Tutoriels

View File

@ -1,3 +1,30 @@
## Architecture générale
# Architecture générale
> TODO
## Modèles de déploiement
### Déploiement mono-noeud
![](../resources/deployment_fr.png)
## Terminologie
Voici une liste des termes utilisés dans le lexique Bouncer.
### Proxy
Un "proxy" est une entité logique définissant le relation suivante:
- Un ou plusieurs patrons de filtrage sous la forme `<host>:<port>`. Ceux ci identifient le ou les domaines associés à l'entité;
- Une URL cible qui servira de base pour la réécriture des requêtes.
Un "proxy" peut avoir zéro ou plusieurs "layers" associés.
Un "proxy" peut être activé ou désactivé.
Un "proxy" a un poids qui définit son niveau de priorité dans la pile de traitement (plus son poids est élevé plus il est prioritaire).
### Layer
Un "layer" (calque) est une entité logique définissant un traitement à appliquer aux requêtes et/ou aux réponses transitant par un proxy.
Un "layer" peut être activé ou désactivé.
Un "layer" a un poids qui définit son niveau de priorité dans la pile de traitement (plus son poids est élevé plus il est prioritaire).

View File

@ -0,0 +1,5 @@
# Layers
Vous trouverez ci-dessous la liste des entités "Layer" activables sur vos entité "Proxy":
- [Queue](./queue) - File d'attente dynamique

View File

@ -0,0 +1,27 @@
# Layer "Queue"
## Description
Ce layer permet d'ajouter un mécanisme de file d'attente dynamique au proxy associé.
## Type
`queue`
## Options
### `capacity`
- **Type:** `number`
- **Valeur par défaut:** `1000`
- **Description:** Capacité maximum de la file d'attente.
### `keepAlive`
- **Type:** `string` (Voir [`time.ParseDuration()`](https://pkg.go.dev/time#ParseDuration) pour plus d'informations sur le format)
- **Valeur par défaut:** `1m`
- **Description:** Durée de vie d'une session dans la file d'attente sans activité avant expiration.
### Schéma
Voir le [schéma JSON](../../../../internal/queue/schema/layer-options.json).

View File

@ -0,0 +1,37 @@
@startuml
skinparam linetype ortho
skinparam ranksep 150
skinparam nodesep 50
top to bottom direction
frame "Exemple de déploiement mono-noeud" as ExampleSimpleNode {
actor "Navigateur Web" as WebNavigator
node "Serveur Bouncer" as BouncerServer {
actor "CLI d'administration" as AdminCLI
database "Redis" as RedisDatabase
component "bouncer-proxy" as BouncerProxyService
component "bouncer-admin" as BouncerAdminService
folder "/etc/bouncer" as BouncerConfigFolder
}
node "Serveur distant" as RemoteServer {
component "Site Web" as RemoteWebsite
}
WebNavigator --down0)- BouncerProxyService: "TCP/80 (HTTP)"
AdminCLI -0)- BouncerAdminService: "TCP/8081 (HTTP)"
BouncerProxyService -down0)-- RemoteWebsite: "TCP/80 (HTTP)\nTCP/443 (HTTPS)"
BouncerAdminService .down.> RedisDatabase: reads/writes
BouncerProxyService .down.> RedisDatabase: reads
BouncerAdminService ..> BouncerConfigFolder: uses
BouncerProxyService ..> BouncerConfigFolder: uses
@enduml

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -7,12 +7,6 @@
"type": "number",
"minimum": 0
},
"matchers": {
"type": "array",
"items": {
"type": "string"
}
},
"keepAlive": {
"type": "string"
}