(doc) : ajout et modification de docs après arbitrage
This commit is contained in:
110
TECHNICAL.md
110
TECHNICAL.md
@@ -106,51 +106,77 @@ TTL cache : 5 minutes (le contenu ne bouge pas).
|
||||
|
||||
## Architecture Services
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ OVH VPS (Gravelines, France) │
|
||||
│ │
|
||||
│ ┌─────────────────┐ │
|
||||
│ │ NGINX Cache │ Cache HLS │
|
||||
│ │ + Let's Encrypt│ SSL, rate limiting │
|
||||
│ └────────┬────────┘ │
|
||||
│ │ │
|
||||
│ ┌────────┴────────┐ │
|
||||
│ │ API Gateway │ Go + Fiber │
|
||||
│ └────────┬────────┘ │
|
||||
│ │ │
|
||||
│ ┌────┴────┬─────────────┬──────────┐ │
|
||||
│ │ │ │ │ │
|
||||
│ ┌───▼───┐ ┌──▼───┐ ┌───────▼────┐ ┌──▼─────┐
|
||||
│ │ Auth │ │ User │ │Content/Geo │ │Zitadel │
|
||||
│ │Service│ │Svc │ │ Service │ │ IdP │
|
||||
│ └───┬───┘ └──┬───┘ └──────┬─────┘ └───┬────┘
|
||||
│ │ │ │ │ │
|
||||
│ └────────┴────────────┴───────────┘ │
|
||||
│ │ │
|
||||
│ ┌───────────┴──────────┐ │
|
||||
│ │ │ │
|
||||
│ ┌────▼────┐ ┌──────▼──────┐ │
|
||||
│ │ Redis │ │ PostgreSQL │ │
|
||||
│ │ Cluster │ │ + PostGIS │ │
|
||||
│ └─────────┘ │ │ │
|
||||
│ │ Schémas: │ │
|
||||
│ │ - roadwave │ │
|
||||
│ │ - zitadel │ │
|
||||
│ └─────────────┘ │
|
||||
└─────────────────────────────────────────────┘
|
||||
│
|
||||
┌──────────┴──────────┐
|
||||
│ │
|
||||
┌────────▼────────┐ ┌────────▼────────┐
|
||||
│ OVH Object │ │ Mobile Apps │
|
||||
│ Storage (S3) │ │ iOS/Android │
|
||||
│ Fichiers audio │ │ │
|
||||
└─────────────────┘ └─────────────────┘
|
||||
```mermaid
|
||||
flowchart TB
|
||||
subgraph clients["Clients"]
|
||||
mobile["Mobile Apps<br/>iOS/Android<br/>Flutter"]
|
||||
carplay["CarPlay /<br/>Android Auto"]
|
||||
end
|
||||
|
||||
Souveraineté : 100% données en France
|
||||
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 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"]
|
||||
end
|
||||
|
||||
zitadel["Zitadel IdP<br/>OAuth2 PKCE<br/>:8081"]
|
||||
ip2loc["IP2Location DB<br/>SQLite ~50MB<br/>Mode dégradé"]
|
||||
|
||||
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"]
|
||||
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"]
|
||||
end
|
||||
|
||||
mobile --> nginx
|
||||
carplay --> nginx
|
||||
nginx --> api
|
||||
api --> auth
|
||||
api --> user
|
||||
api --> content
|
||||
api --> streaming
|
||||
api --> payment
|
||||
api --> notif
|
||||
api --> ip2loc
|
||||
|
||||
auth --> zitadel
|
||||
user --> pgbouncer
|
||||
user --> redis
|
||||
content --> pgbouncer
|
||||
content --> redis
|
||||
streaming --> storage
|
||||
payment --> mangopay
|
||||
notif --> fcm
|
||||
|
||||
zitadel --> pgbouncer
|
||||
pgbouncer --> postgres
|
||||
|
||||
brevo -.email.-> mobile
|
||||
fcm -.push.-> mobile
|
||||
|
||||
style ovh fill:#e3f2fd
|
||||
style external fill:#fff3e0
|
||||
style clients fill:#f3e5f5
|
||||
style data fill:#e8f5e9
|
||||
```
|
||||
|
||||
**Souveraineté** : 100% données en France (RGPD compliant)
|
||||
|
||||
---
|
||||
|
||||
## Scaling 10M Utilisateurs
|
||||
|
||||
Reference in New Issue
Block a user