feat(docs): améliorer lisibilité du diagramme Architecture Services

Améliorations:
- Orientation LR (Left-Right) au lieu de TB pour meilleur flux
- Ajout icônes émojis pour identification visuelle rapide
- Simplification des connexions (api --> services au lieu de connexions multiples)
- Labels plus courts dans les boîtes
- Styles améliorés avec bordures colorées
- Meilleure organisation des sous-graphes

Le diagramme est maintenant beaucoup plus lisible et professionnel.
This commit is contained in:
jpgiannetti
2026-02-07 17:43:13 +01:00
parent 1a67e5ffd0
commit 2c0522158c

View File

@@ -113,72 +113,77 @@ TTL cache : 5 minutes (le contenu ne bouge pas).
## Architecture Services
```mermaid
flowchart TB
subgraph clients["Clients"]
flowchart LR
subgraph clients["📱 Clients"]
direction TB
mobile["Mobile Apps<br/>iOS/Android<br/>Flutter"]
carplay["CarPlay /<br/>Android Auto"]
end
subgraph ovh["OVH VPS Essential (Gravelines, France)"]
nginx["NGINX Cache<br/>+ Let's Encrypt<br/>TLS 1.3, Rate Limiting"]
api["API Gateway<br/>Go + Fiber :8080"]
subgraph ovh["🇫🇷 OVH VPS Essential (Gravelines, France)"]
direction TB
subgraph services["Backend Services (Monolithe Modulaire)"]
auth["Auth Service<br/>JWT validation"]
user["User Service<br/>Profils, Jauges"]
content["Content/Geo Service<br/>Recommandations<br/>PostGIS queries"]
streaming["Streaming Service<br/>HLS generation"]
payment["Payment Service<br/>Mangopay integration"]
notif["Notification Service<br/>FCM/APNS"]
nginx["🌐 NGINX<br/>Cache + TLS 1.3<br/>Rate Limiting"]
api["🚪 API Gateway<br/>Go + Fiber<br/>:8080"]
subgraph services["Backend (Monolithe Modulaire)"]
direction LR
auth["🔐 Auth"]
user["👤 User"]
content["🎙️ Content/Geo"]
streaming["📡 Streaming"]
payment["💳 Payment"]
notif["🔔 Notif"]
end
zitadel["Zitadel IdP<br/>OAuth2 PKCE<br/>:8081"]
ip2loc["IP2Location DB<br/>SQLite ~50MB<br/>Mode dégradé"]
zitadel["🔑 Zitadel<br/>OAuth2 PKCE<br/>:8081"]
ip2loc["🌍 IP2Location<br/>SQLite 50MB"]
subgraph data["Données"]
pgbouncer["PgBouncer<br/>Connection pooling<br/>:6432"]
postgres["PostgreSQL 16<br/>+ PostGIS 3.4<br/>Schémas:<br/>- roadwave<br/>- zitadel"]
redis["Redis 7 Cluster<br/>Cache + Geospatial<br/>GEORADIUS"]
subgraph data["💾 Données"]
direction TB
pgbouncer["PgBouncer<br/>:6432"]
postgres["PostgreSQL 16<br/>+ PostGIS 3.4"]
redis["Redis 7<br/>Cache + Geo"]
end
end
subgraph external["Services Externes"]
storage["OVH Object Storage<br/>Fichiers audio HLS"]
mangopay["Mangopay<br/>Paiements, KYC"]
brevo["Brevo<br/>Emails transactionnels"]
fcm["FCM / APNS<br/>Push notifications"]
subgraph external["☁️ Services Externes"]
direction TB
storage["OVH Object Storage<br/>(Fichiers HLS)"]
mangopay["Mangopay<br/>(Paiements/KYC)"]
brevo["Brevo<br/>(Emails)"]
fcm["FCM/APNS<br/>(Push)"]
end
mobile --> nginx
carplay --> nginx
%% Flux clients
clients --> nginx
nginx --> api
api --> auth
api --> user
api --> content
api --> streaming
api --> payment
api --> notif
%% API vers services
api --> services
api --> ip2loc
%% Services vers infra
auth --> zitadel
user --> pgbouncer
user --> redis
content --> pgbouncer
content --> redis
user --> data
content --> data
streaming --> storage
payment --> mangopay
notif --> fcm
%% Infra interne
zitadel --> pgbouncer
pgbouncer --> postgres
brevo -.email.-> mobile
fcm -.push.-> mobile
%% Retours vers clients
brevo -.email.-> clients
fcm -.push.-> clients
style ovh fill:#e3f2fd
style external fill:#fff3e0
style clients fill:#f3e5f5
style data fill:#e8f5e9
style ovh fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
style external fill:#fff3e0,stroke:#f57c00,stroke-width:2px
style clients fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
style data fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
style services fill:#fff,stroke:#666,stroke-width:1px
```
**Souveraineté** : 100% données en France (RGPD compliant)