Life ConnectLife Connect
Table of contents
Architecture
Services
Swagger Docs
GitHub
Table of contents
Architecture
Services
Swagger Docs
GitHub
  • Architecture

    • Vue d'ensemble
    • Communication inter-services
    • Couche données
    • Authentification & autorisation

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

BaseServiceCollections principales
adb-personsadb-personspersons, organization, invitations, company_settings
adb-partsadb-partsparts, assets, charges, budget_lines, sales
adb-contractsadb-contractscontracts, propose_contracts, direct_debits, template_values
adb-accountingadb-accountinginvoices, 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-filesadb-filesfiles (métadonnées)
adb-utilitiesadb-utilitiesallocationkeys, configurations, dashboards, catalog, indexes, notifications, notification_definitions, serials
adb-viewsadb-viewsparts, contracts_entries, accounting_event (projections dénormalisées)
adb-reportsadb-reportstemplates, 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 :

BucketVariableService principalContenu
dev.files.life-connect.frBUCKET_FILESadb-filesDocuments uploadés par les utilisateurs
dev.templates.life-connect.frBUCKET_TEMPLATESadb-views, adb-reports, adb-contracts, adb-accountingTemplates 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

VariableRôle
MONGO_DB_URIConnection string MongoDB Atlas
AWS_REGIONeu-west-1
AWS_ACCESS_KEY / AWS_SECRET_KEYCredentials AWS (S3 + SQS/SNS)
BUCKET_FILESBucket S3 documents
BUCKET_TEMPLATESBucket S3 templates
<SERVICE>_<EVENT>_QUEUEURL de chaque queue SQS consommée
<SERVICE>_DLQ_TOPICDLQ du service
Edit this page
Last Updated:
Contributors: gregory
Prev
Communication inter-services
Next
Authentification & autorisation