Couche données
ADB combine quatre stores distincts. Chacun a un rôle spécifique et est consommé par un sous-ensemble des services.
flowchart LR
subgraph Services
persons[adb-persons]
parts[adb-parts]
contracts[adb-contracts]
accounting[adb-accounting]
files[adb-files]
utilities[adb-utilities]
views[adb-views]
reports[adb-reports]
aggregates[adb-aggregates]
end
subgraph Mongo[MongoDB Atlas]
m_persons[(adb-persons)]
m_parts[(adb-parts)]
m_contracts[(adb-contracts)]
m_accounting[(adb-accounting)]
m_files[(adb-files)]
m_utilities[(adb-utilities)]
m_views[(adb-views)]
m_reports[(adb-reports)]
end
s3[(AWS S3)]
neo4j[(Neo4j)]
persons --> m_persons
parts --> m_parts
contracts --> m_contracts
accounting --> m_accounting
files --> m_files
files --> s3
utilities --> m_utilities
views --> m_views
reports --> m_reports
aggregates -.lit via HTTP.-> persons
aggregates -.lit via HTTP.-> parts
aggregates -.lit via HTTP.-> contracts
graph[adb-graph<br/>hors monorepo] --> neo4j
1. MongoDB Atlas
Toutes les données métier vivent dans MongoDB Atlas, un cluster managé multi-environnement (adb-development, adb-integration, adb-production). Chaque service a sa propre base (adb-<service>) : pas de jointures cross-service, on passe par HTTP ou par événements pour propager.
Bases et collections
| Base | Service | Collections principales |
|---|---|---|
adb-persons | adb-persons | persons, organization, invitations, company_settings |
adb-parts | adb-parts | parts, assets, charges, budget_lines, sales |
adb-contracts | adb-contracts | contracts, propose_contracts, direct_debits, template_values |
adb-accounting | adb-accounting | invoices, payments, accounting_entries, accounting_events, journals, ledger_account, ledger_auxiliary_accounts, fiscal_year, rental_allowance_statements, tenant_rental_allowances, serial, accounting_sequence, transaction_reads, configurations, resume_token, accounting_event_fallback |
adb-files | adb-files | files (métadonnées) |
adb-utilities | adb-utilities | allocationkeys, configurations, dashboards, catalog, indexes, notifications, notification_definitions, serials |
adb-views | adb-views | parts, contracts_entries, accounting_event (projections dénormalisées) |
adb-reports | adb-reports | templates, template_meta_data |
adb-views héberge des projections dénormalisées maintenues par les listeners SQS — c'est délibéré pour servir les dashboards rapidement.
Connexion
Chaque service lit la connection string via la variable MONGO_DB_URI (format mongodb+srv://...). Les credentials viennent des secrets Kubernetes.
Stack réactive
L'accès se fait via Spring Data MongoDB Reactive (ReactiveMongoRepository). Les services évitent tout appel bloquant ; BlockHound est activé en environnement cloud pour adb-views et adb-accounting afin de détecter d'éventuels appels bloquants en runtime.
2. AWS S3
Deux buckets principaux :
| Bucket | Variable | Service principal | Contenu |
|---|---|---|---|
dev.files.life-connect.fr | BUCKET_FILES | adb-files | Documents uploadés par les utilisateurs |
dev.templates.life-connect.fr | BUCKET_TEMPLATES | adb-views, adb-reports, adb-contracts, adb-accounting | Templates FreeMarker, gabarits PDF |
adb-files génère des URLs S3 pré-signées pour les uploads/downloads directs depuis le navigateur (évite le passage par le service Java).
3. Neo4j
Le service adb-graph (hors monorepo) maintient un graphe des relations entre personnes, parts, contracts et tickets. Il est alimenté par les événements RabbitMQ (persons.graph, parts.graph, contracts.graph, tickets.graph).
Helm/Terraform pour Neo4j : voir adb-charts/terraform/ et les scripts adb-charts/scripts/cypher_r4.cypher.
4. Messaging — AWS SQS / SNS
Détaillé dans Communication inter-services §4. Région unique : eu-west-1. Les queues sont nommées par convention <env>-<service>-<event> (ex. dev-views-contract-modified-queue).
Chaque service possède :
- Un topic SNS par type d'événement émis.
- Une DLQ (
<env>-<service>-dlq) pour les messages non traités.
Migrations / scripts d'initialisation
adb-infrastructure/mongodb-atlas/data-scripts/ contient ~37 scripts de migration et setup. Outils : MongoDB Atlas CLI + Realm CLI. Pas de Terraform pour l'instant — gestion manuelle ou via CLI.
Variables d'environnement communes
| Variable | Rôle |
|---|---|
MONGO_DB_URI | Connection string MongoDB Atlas |
AWS_REGION | eu-west-1 |
AWS_ACCESS_KEY / AWS_SECRET_KEY | Credentials AWS (S3 + SQS/SNS) |
BUCKET_FILES | Bucket S3 documents |
BUCKET_TEMPLATES | Bucket S3 templates |
<SERVICE>_<EVENT>_QUEUE | URL de chaque queue SQS consommée |
<SERVICE>_DLQ_TOPIC | DLQ du service |