Services annexes
Vue d'ensemble
Un OAV n'est jamais exécuté seul : il s'appuie sur des services annexes, démarrés localement par Docker Compose en développement, et déployés aux cÎtés de l'OAV en production.
Service | RĂŽle |
|---|---|
OIP Headless | Persistance, historisation, ordonnancement des tĂąches et rĂšgles RGPD. |
Fasst Sessions | Ămission et validation des jetons de dĂ©crochage. |
PostgreSQL | Données d'OIP Headless et magasin des sessions de l'OAV. |
RabbitMQ | Acheminement des évÚnements entre OIP Headless et l'OAV. |
flowchart LR
Client[App React] -->|GraphQL| Server[App Express]
Server -->|REST| Headless[OIP Headless]
Server -->|HTTP| Sessions[Fasst Sessions]
Headless --> DB[(PostgreSQL)]
Server --> DB
Headless <-->|AMQP| MQ[RabbitMQ]
Server <-->|AMQP| MQOIP Headless
OIP Headless est le service de persistance de l'OIP. Il expose une API REST consommée par le serveur Express de l'OAV, authentifiée par clé d'API.
Il assure :
- la persistance des entités et du Process ;
- l'historisation de toutes les écritures et leur annulation par transaction ;
- la programmation des tĂąches et des workflows de tĂąches ;
- l'application des rĂšgles RGPD de chiffrement au repos et de purge automatique ;
- la publication d'évÚnements vers l'OAV.
Il nécessite une instance PostgreSQL et une instance RabbitMQ.
Configuration
Variable | Statut | Description |
|---|---|---|
DATABASE_URL | Obligatoire | URL PostgreSQL, au format ecto://[USER]:[PASS]@[HOST]:[PORT]/[DATABASE]. |
AMQP_URL | Obligatoire | URL RabbitMQ, au format amqp://[USER]:[PASS]@[HOST]:[PORT]/[VHOST]. |
SECRET_KEY_BASE | Obligatoire | Clé de chiffrement et de signature des cookies. |
CIPHER_SECRET_KEY_BASE | Obligatoire | Clé de chiffrement des données, de 256 bits encodée en base64. |
PHX_HOST | Obligatoire | URL du tableau de bord du service. |
ECTO_SSL_CERT_PATH | Optionnelle | Chemin du certificat racine, requis pour activer SSL sur la connexion PostgreSQL. |
LOGGER_LEVEL | Optionnelle | Niveau de journalisation du service. |
CÎté OAV, le dialogue avec ce service est configuré par les variables OIP_API_URL, OIP_API_KEY et OAV_ID.
Fasst Sessions
Fasst Sessions résout le contexte client à l'entrée du parcours : il émet des jetons de décrochage et les valide.
Le serveur Express lui transmet le jeton reçu en paramÚtre d'URL, et reçoit en retour le contexte client résolu, qui est ensuite passé à resolveProjectFromContext.
ĂlĂ©ment | Valeur |
|---|---|
Port par défaut en développement | 3005 |
Route d'émission d'un jeton | POST /api/sessions/tokens |
Variable de configuration cÎté OAV | SESSION_SERVICE_URL |
Ămission d'un jeton en dĂ©veloppement :
curl --request POST \
--url http://localhost:3005/api/sessions/tokens \
--header 'Content-Type: application/json' \
--data '{"applicant":"magic","metadata":{"externalId":"project-AAA"}}'Le service dispose de sa propre base de données.
PostgreSQL
PostgreSQL héberge deux jeux de données distincts :
Base | Contenu | Variable |
|---|---|---|
Base d'OIP Headless | Entités, historique des écritures, Process, tùches. | DATABASE_URL du service OIP Headless. |
Base des sessions de l'OAV | Sessions de navigation HTTP. | SESSION_STORE_URL de l'OAV. |
Les migrations du modÚle de données de l'OAV sont appliquées sur la base d'OIP Headless, par le script scripts/run-migrations.sh appelé par la commande migrate:dev en développement, et exécuté au démarrage du conteneur en production.
RabbitMQ
RabbitMQ achemine les évÚnements entre OIP Headless et l'OAV, et permet de servir plusieurs instances de l'OAV.
File | Sens | Contenu |
|---|---|---|
<OAV_ID>.events | OIP Headless â OAV | DĂ©clenchement des tĂąches Ă Ă©chĂ©ance. |
<OAV_ID>.entities | OIP Headless â OAV | InstantanĂ©s de trame projet. |
oip.api.events | OAV â OIP Headless | RemontĂ©e des statuts de tĂąches. |
CÎté OAV, la connexion est configurée par les variables RABBIT_MQ_HOST, RABBIT_MQ_USER, RABBIT_MQ_PASSWORD et RABBIT_MQ_VHOST.
Exploitation en développement
Commande | Effet |
|---|---|
docker compose up -d | Démarre l'ensemble des services annexes. |
docker compose ps | Liste les services et leur état. |
docker compose logs -f | Suit les journaux de tous les services. |
docker compose stop | ArrĂȘte les services en conservant les donnĂ©es. |
docker compose down -v | ArrĂȘte les services et supprime les volumes, donc les donnĂ©es. |
Déploiement
Un OAV en production mobilise cinq services :
- l'OAV lui-mĂȘme, distribuĂ© sous forme d'image Docker ;
- le service de sessions et sa base de données ;
- OIP Headless ;
- PostgreSQL, hébergeant les données d'OIP Headless et les sessions de l'OAV ;
- RabbitMQ.
Résumé
- Quatre services annexes entourent l'OAV : OIP Headless, Fasst Sessions, PostgreSQL et RabbitMQ ;
- OIP Headless porte les données, l'historisation, l'ordonnancement des tùches et les rÚgles RGPD ;
- Fasst Sessions n'intervient qu'au dĂ©crochage, et peut ĂȘtre remplacĂ© par un service tiers ;
- trois files RabbitMQ structurent les échanges asynchrones.