veza/REPORT_ARCHITECTURE.md

2.5 KiB

🏗️ REPORT_ARCHITECTURE.md - Cartographie Technique

1. Architecture des Services

🟢 Service: Backend API (veza-backend-api)

  • Rôle: Cœur de métier, gestion utilisateurs, metadata, catalogue.
  • Langage: Go (Golang).
  • Framework: Gin Gonic.
  • Data: GORM + PostgreSQL.
  • Observation: Gère la logique métier lourde. A subi une refonte massive vers UUID.

🔵 Service: Chat Server (veza-chat-server)

  • Rôle: Messagerie temps-réel, présence, WebSockets.
  • Langage: Rust.
  • Framework: Axum + Tokio.
  • Data: SQLx + PostgreSQL + Redis (Cache).
  • Dépendances: Très riche (jsonwebtoken, argon2, tonic gRPC).
  • Observation: Architecture très propre, moderne, orientée performance.

🟣 Service: Stream Server (veza-stream-server)

  • Rôle: Streaming audio haute performance, transcodage.
  • Langage: Rust.
  • Framework: Axum + Symphonia (Audio).
  • Observation: Utilise rayon pour le parallélisme. Service critique pour l'expérience utilisateur.

2. Architecture Frontend (Le Conflit)

🅰️ Apps/Web (apps/web) - LA CIBLE

  • Stack: React 18, Vite, TailwindCSS, Zustand, TanStack Query, Radix UI.
  • Qualité: Très haute. Utilise les standards modernes (hooks, composants atomiques, shadcn/ui like).
  • Rôle: Web App principale.

🅱️ Veza Desktop (veza-desktop) - LEGACY?

  • Stack: Electron, React (plus ancien), Redux (vs Zustand sur web).
  • Problème: Semble être une implémentation parallèle et non un wrapper de apps/web.
  • Risque: Double maintenance des features.

3. Données & Infrastructure

Base de Données (PostgreSQL)

  • Architecture distribuée ou monolithique logique ?
  • Problème: veza-backend-api et veza-chat-server ont chacun leur dossier migrations/.
  • Risque: Désynchronisation des schémas (ex: table users définie à deux endroits ?).

Communication Inter-Services

  • Preuves de gRPC (tonic) dans les fichiers Cargo.
  • Preuves de RabbitMQ (lapin) mentionné.

4. Diagramme de Flux (Simplifié)

graph TD
    Client[Clients (Web/Desktop/Mobile)] --> HAProxy[HAProxy / Load Balancer]
    HAProxy --> Go[Go Backend API]
    HAProxy --> Chat[Rust Chat Server]
    HAProxy --> Stream[Rust Stream Server]
    
    Go --> DB[(PostgreSQL Core)]
    Chat --> DB
    Chat --> Redis[(Redis Cache)]
    Stream --> FS[File System / S3]
    
    Go -.-> RabbitMQ((RabbitMQ Event Bus))
    Chat -.-> RabbitMQ