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