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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user