Version: 1.1 Date: Novembre 2025 Audience: Architectes d'entreprise, DevOps, Décideurs IT
Ce document spécifie les exigences techniques pour le déploiement de la plateforme Devana.ai en environnement d'entreprise. Il est conçu pour les organisations à grande échelle nécessitant haute disponibilité, sécurité renforcée et conformité réglementaire.
La plateforme Devana.ai s'articule autour de 8 composants critiques :
| Composant | Technologie | Rôle | Criticité |
|---|---|---|---|
| Devana API | Node.js 22.x | Backend principal, orchestration | ⭐⭐⭐ Critique |
| Devana Frontend | Next.js 15.x | Interface utilisateur web | ⭐⭐⭐ Critique |
| Odin | Python 3.12 | Traitement de documents, OCR, vectorisation | ⭐⭐⭐ Critique |
| PostgreSQL | 17.x | Base de données relationnelle | ⭐⭐⭐ Critique |
| ChromaDB | 1.0.6+ | Base de données vectorielle (RAG) | ⭐⭐⭐ Critique |
| Meilisearch | 1.13.3+ | Moteur de recherche plein texte | ⭐⭐ Important |
| Redis | 7.4+ | Cache, sessions, files d'attente | ⭐⭐⭐ Critique |
| S3/MinIO | Compatible S3 | Stockage objets (fichiers utilisateurs) | ⭐⭐⭐ Critique |
| Composant | CPU | RAM | Stockage | GPU | Notes |
|---|---|---|---|---|---|
| Devana API | 2 cores | 4 GB | 20 GB SSD | - | Node.js + PM2 |
| Frontend | 1 core | 2 GB | 10 GB SSD | - | Next.js SSR |
| Odin | 2 cores | 4 GB | 30 GB SSD | - | Sans GPU : OCR basique |
| PostgreSQL | 2 cores | 8 GB | 100 GB SSD | - | + WAL logs |
| ChromaDB | 1 core | 4 GB | 50 GB SSD | - | Données vectorielles |
| Meilisearch | 1 core | 2 GB | 20 GB SSD | - | Index de recherche |
| Redis | 1 core | 2 GB | 10 GB SSD | - | Cache en mémoire |
| S3/MinIO | 1 core | 2 GB | 500 GB+ | - | Selon volumétrie |
| TOTAL | 11 cores | 28 GB | 740 GB | - | Configuration de base |
| Composant | CPU | RAM | Stockage | GPU | Réplicas HA |
|---|---|---|---|---|---|
| Devana API | 3 cores | 4 GB | 20 GB SSD | - | 2-3 pods |
| Frontend | 2 cores | 4 GB | 10 GB SSD | - | 2-3 pods |
| Odin | 3 cores | 6 GB | 50 GB SSD | Optionnel* | 2 pods |
| PostgreSQL | 4 cores | 16 GB | 500 GB SSD | - | 1 master + 2 replicas |
| ChromaDB | 2 cores | 8 GB | 200 GB SSD | - | 2-3 replicas |
| Meilisearch | 2 cores | 4 GB | 50 GB SSD | - | 2 replicas |
| Redis | 2 cores | 8 GB | 20 GB SSD | - | 1 master + 2 replicas |
| S3/MinIO | 2 cores | 8 GB | 2 TB+ | - | Cluster 4 nodes |
| Load Balancer | 2 cores | 4 GB | 10 GB | - | Nginx/HAProxy |
| TOTAL (par nœud) | 8-12 cores | 24-32 GB | 1-3 TB | - | 3 nœuds min |
* GPU pour Odin : recommandé pour l'OCR haute performance (NVIDIA T4 ou supérieur)
| Composant | CPU | RAM | Stockage | GPU | Réplicas HA |
|---|---|---|---|---|---|
| Devana API | 4 cores/pod | 6 GB/pod | 30 GB SSD | - | 5-10 pods (HPA) |
| Frontend | 2 cores/pod | 4 GB/pod | 15 GB SSD | - | 5-10 pods (HPA) |
| Odin | 4 cores/pod | 8 GB/pod | 100 GB SSD | 1 GPU/pod | 3-5 pods |
| PostgreSQL | 8-16 cores | 64-128 GB | 2-5 TB NVMe | - | Cluster 3-5 nodes |
| ChromaDB | 4 cores/pod | 16 GB/pod | 1 TB SSD | - | 3-5 replicas |
| Meilisearch | 4 cores/pod | 8 GB/pod | 200 GB SSD | - | 3 replicas |
| Redis | 4 cores | 16 GB | 50 GB SSD | - | Cluster 6 nodes |
| S3/MinIO | 4 cores/node | 16 GB/node | 10+ TB | - | Cluster 8+ nodes |
| Load Balancer | 4 cores | 8 GB | 20 GB | - | HA pair |
| Monitoring | 4 cores | 16 GB | 500 GB | - | Prometheus+Grafana |
Cluster Kubernetes recommandé :
Avantages :
Requirements :
Configuration réseau :
# Whitelist endpoints
api.openai.com # OpenAI
*.openai.azure.com # Azure OpenAI
api.anthropic.com # Claude
Limitations :
Avantages :
Modèles de production (recommandés)
| Modèle | Taille | GPU Recommandé | VRAM | RAM système | Latence | Throughput |
|---|---|---|---|---|---|---|
| Llama 3.1 70B | 70B params | 2x H100 (80GB) | 160 GB | 512 GB | ~80ms | 100 tokens/s |
| Llama 3.3 70B | 70B params | 2x H100 (80GB) | 160 GB | 512 GB | ~80ms | 100 tokens/s |
| Mixtral 8x22B | 141B params | 4x H100 (80GB) | 320 GB | 768 GB | ~150ms | 60 tokens/s |
| Qwen 2.5 72B | 72B params | 2x H100 (80GB) | 160 GB | 512 GB | ~85ms | 95 tokens/s |
| DeepSeek V3 | 671B params | 8x H200 (141GB) | 1128 GB | 2048 GB | ~300ms | 40 tokens/s |
GPU nouvelle génération (recommandés)
| GPU | VRAM | Architecture | Use Case | Disponibilité |
|---|---|---|---|---|
| NVIDIA H100 SXM | 80 GB | Hopper | Production 70B-141B | ⭐ Recommandé |
| NVIDIA H200 | 141 GB | Hopper+ | Production 141B-671B | ⭐⭐ Optimal |
| NVIDIA A100 | 80 GB | Ampere | Alternative 70B | Acceptable |
Configuration recommandée (production) :
LLM principal : 2x serveurs GPU (Llama 3.3 70B ou Qwen 2.5 72B)
Embedding Model : 2x serveurs GPU (e5-mistral-7b-instruct ou gte-Qwen2-7B)
Architectures supportées :
Exemple de déploiement vLLM (Kubernetes) :
# Voir cluster-embeddings/embedding.yml pour référence complète
resources:
limits:
nvidia.com/gpu: 1 # Par réplica
cpu: "4"
memory: "24Gi"
replicas: 2 # Haute disponibilité
Scalabilité (modèles 70B+) :
Note : Les petits modèles (<70B) ne sont pas recommandés pour un usage production enterprise-grade nécessitant des capacités de raisonnement avancées.
Configuration :
Bénéfices :
⚠️ AVERTISSEMENT : Limitations macOS pour usage serveur
macOS n'est PAS conçu comme système d'exploitation serveur. Apple a discontinué macOS Server en avril 2022.
Limitations opérationnelles majeures :
- Authentification obligatoire : macOS requiert login/mot de passe au démarrage, compliquant l'automatisation et les redémarrages non supervisés
- Gestion à distance complexe : Pas d'équivalent SSH headless natif sans session utilisateur active, configuration VNC/Screen Sharing requise
- Updates disruptives : Mises à jour macOS nécessitent redémarrages fréquents et intervention manuelle, pas de stratégie de patching automatisée enterprise-grade
- File descriptors limités : Maximum 12,288 FD (vs quasi-illimité sur Linux), risque de "too many files open" sous charge
- Absence d'outils enterprise : Pas de clustering OS natif, gestion de flotte limitée, monitoring système rudimentaire
Limitations matérielles :
- Hardware consumer : Mac Mini/Studio non certifiés pour opérations datacenter 24/7 critiques
- Aucune redondance : Pas de PSU doubles, RAID matériel, ou hot-swap
- Form factor instable : Changements dimensionnels entre générations compliquant le rack-mounting standardisé
Recommandations d'usage :
- ✅ Acceptable : Développement, staging, prototypage, CI/CD (Xcode/iOS builds)
- ⚠️ Acceptable avec réserves : Production légère (<500 users), avec monitoring humain et tolérance aux interruptions
- ❌ Non recommandé : Production critique 24/7, environnements nécessitant SLA >99.9%, compliance stricte (SOC 2, ISO 27001)
Pour production enterprise critique, privilégier Scénario 2 (Linux + GPU NVIDIA) ou Scénario 3 (Hybride).
Cas d'usage appropriés :
Avantages :
Configuration développement / test (< 50 utilisateurs)
| Matériel | Specs | Performance LLM | Use Case |
|---|---|---|---|
| Mac Mini M4 | 16 cores CPU, 64 GB RAM | 11-12 tok/s (32B Q4) | Tests, embeddings |
| Mac Mini M4 Pro | 14 cores CPU, 64 GB RAM | 15-18 tok/s (32B Q4) | Prototypage |
| Mac Studio M2 Ultra | 24 cores CPU, 192 GB RAM | 41 tok/s (70B FP16) | LLM 70B |
| Mac Studio M3 Ultra | 32 cores CPU, 512 GB RAM | 76 tok/s (8B Q4), 17-19 tok/s (672B Q4) | LLM ultra-large |
Configuration production (100-500 utilisateurs)
| Composant | Configuration | Performance estimée |
|---|---|---|
| LLM Principal | 2x Mac Studio M3 Ultra (256 GB) | ~35-40 tok/s (70B Q4) |
| Embeddings | 2x Mac Mini M4 (64 GB) | ~500 embeddings/s |
| Networking | Switch 25 Gbps RoCEv2 | Latence cluster < 5ms |
| TOTAL | 4 machines + réseau | - |
Configuration cluster haute performance (500-2000 utilisateurs)
| Configuration | Machines | RAM totale | Performance |
|---|---|---|---|
| Cluster homogène | 4x Mac Studio M3 Ultra (256 GB) | 1 TB | ~70-80 tok/s (70B Q4) |
| Cluster hétérogène | 2x M3 Ultra + 4x M4 Pro | 640 GB | ~50-60 tok/s (70B Q4) |
| Cluster économique | 8x Mac Mini M4 (64 GB) | 512 GB | ~40-50 tok/s (32B Q4) |
Exemple cluster économique (démontré par Exo Labs) :
| Modèle | Hardware | Quantization | Tokens/sec | Notes |
|---|---|---|---|---|
| Llama 3 8B | M3 Ultra | Q4_K_M | 76 tok/s | Optimal pour petits modèles |
| Llama 3 70B | M2 Ultra | FP16 | 41 tok/s | Via llama.cpp |
| Qwen 2.5 32B | M4 Pro (64 GB) | Q4 | 11-12 tok/s | Single machine |
| Qwen 2.5 72B | M3 Ultra (256 GB) | Q4 | 25-30 tok/s | Estimé |
| DeepSeek R1 672B | M3 Ultra (512 GB) | Q4 | 17-19 tok/s | Compute-bound |
| DBRX 132B | Cluster M2 Ultra (25 Gbps) | - | 16.3 tok/s | Cluster networking critique |
Formule approximative (M-series avec FP16) :
| Framework | Support Apple Silicon | Use Case | Performance |
|---|---|---|---|
| MLX | ✅ Natif Apple | Production Mac | Optimisé unified memory |
| Ollama | ✅ MLX backend | Déploiement simplifié | Production ready |
| llama.cpp | ✅ Metal support | Haute performance | Quantization avancée |
| vLLM | ❌ NVIDIA uniquement | N/A | Non compatible Mac |
| TGI | ❌ NVIDIA/AMD | N/A | Non compatible Mac |
Stack recommandé pour production Mac :
Option 1 : Ollama (simplicité)
Option 2 : llama.cpp (performance)
Option 3 : MLX natif (flexibilité)
Requirements réseau :
Impact réseau mesuré (cluster DBRX) :
Topologie cluster recommandée :
Loading diagram...
Légende :
Avantages comparés à NVIDIA :
Limitations vs NVIDIA :
Cas d'usage IDÉAUX pour Mac :
Cas d'usage NON RECOMMANDÉS :
M5 (fin 2025) :
Recommandation : Pour projets 2025+ nécessitant Mac, considérer attente M5 ou déploiement hybride (M3/M4 + GPU NVIDIA pour scale-out).
| Usage | Minimum | Recommandé | Notes |
|---|---|---|---|
| Interne (pod-to-pod) | 1 Gbps | 10 Gbps | Latence critique |
| Externe (utilisateurs) | 100 Mbps | 1 Gbps | Selon charge |
| LLM Cloud | 50 Mbps | 500 Mbps | Streaming tokens |
| Backup & Sync | - | 1 Gbps+ | Hors heures de pointe |
| Connexion | Max acceptable | Optimal | Impact si dépassé |
|---|---|---|---|
| Frontend ↔ API | 200ms | < 50ms | UX dégradée |
| API ↔ PostgreSQL | 10ms | < 2ms | Performance critique |
| API ↔ ChromaDB | 50ms | < 10ms | Lenteur RAG |
| API ↔ LLM | 500ms | < 100ms | Timeout utilisateur |
| API ↔ Redis | 5ms | < 1ms | Cache inefficace |
| Port | Protocole | Service | Justification |
|---|---|---|---|
| 443 | HTTPS | Frontend, API | Accès utilisateurs |
| 80 | HTTP | Redirection HTTPS | Automatique |
| Port | Service | Notes |
|---|---|---|
| 4666 | Devana API | HTTP/GraphQL |
| 5001 | WebSocket | Temps réel |
| 3000 | Frontend | Next.js SSR |
| 3003 | Odin | API interne |
| 5432 | PostgreSQL | Base de données |
| 8000 | ChromaDB | Vector DB |
| 7700 | Meilisearch | Recherche |
| 6379 | Redis | Cache |
| 9000 | MinIO | S3-compatible |
# Production - Règles strictes
# Frontend accessible uniquement via Load Balancer
LB -> Frontend:3000 (ALLOW)
* -> Frontend:3000 (DENY)
# API accessible uniquement depuis Frontend et LB
Frontend -> API:4666,5001 (ALLOW)
LB -> API:4666 (ALLOW)
* -> API:4666,5001 (DENY)
# Services internes isolés
API -> PostgreSQL:5432 (ALLOW)
API -> ChromaDB:8000 (ALLOW)
API -> Redis:6379 (ALLOW)
API -> Odin:3003 (ALLOW)
* -> Services-internes:* (DENY)
# LLM/Embeddings (si auto-hébergé)
API -> LLM-Cluster:8000 (ALLOW)
Odin -> Embeddings:8000 (ALLOW)
* -> LLM-Cluster:8000 (DENY)
| Utilisateurs | Documents/user | Stockage total | Croissance annuelle |
|---|---|---|---|
| 100 | 500 | 500 GB | +200 GB/an |
| 500 | 500 | 2 TB | +1 TB/an |
| 1,000 | 500 | 5 TB | +2 TB/an |
| 5,000 | 500 | 25 TB | +10 TB/an |
| 10,000 | 500 | 50 TB | +20 TB/an |
Calcul détaillé (1000 utilisateurs) :
Total : ~12 TB avec marge de 30%
| Composant | IOPS | Throughput | Type de stockage |
|---|---|---|---|
| PostgreSQL | 10,000+ | 500 MB/s | NVMe SSD (local) |
| ChromaDB | 5,000+ | 300 MB/s | SSD (local ou SAN) |
| S3/MinIO | 1,000+ | 1 GB/s | HDD RAID ou SSD |
| Logs | 500+ | 50 MB/s | SSD |
RTO (Recovery Time Objective) : < 4h RPO (Recovery Point Objective) : < 15min
| Standard | Requis si | Mesures Devana.ai |
|---|---|---|
| RGPD | Données UE | ✅ Chiffrement at-rest/in-transit, droit à l'oubli |
| ISO 27001 | Certification sécurité | ⚠️ Conformité aux bonnes pratiques (non certifié) |
| SOC 2 Type II | SaaS compliance | ⚠️ Conformité aux bonnes pratiques (non certifié) |
| HIPAA | Données santé US | ⚠️ Configuration spécifique requise |
| HDS | Hébergement santé FR | ⚠️ Datacenter certifié requis |
At-Rest :
In-Transit :
SSO requis (production) :
RBAC (Role-Based Access Control) :
Audit Logs :
Zones de sécurité :
[Internet] → [DMZ: LB, WAF] → [App: Frontend, API] → [Data: DB, Storage]
→ [AI: LLM, Embeddings]
Segmentation réseau (VLANs/Subnets) :
| Addon | Usage | Recommandation |
|---|---|---|
| Ingress Controller | Routing HTTP/S | Nginx Ingress ou Traefik |
| Cert Manager | Certificats TLS | Let's Encrypt ou CA interne |
| MetalLB | Load Balancer on-prem | Si pas de LB matériel |
| CSI Driver | Stockage persistant | Rook-Ceph, Longhorn, ou SAN |
| GPU Operator | Support GPU NVIDIA | Si LLM auto-hébergés |
| Prometheus | Monitoring | + Grafana pour visualisation |
| Loki | Logs agrégés | Ou ELK stack |
- devana-prod # Application production
- devana-staging # Pre-production
- devana-services # Services partagés (DB, Redis)
- devana-ai # LLM & Embeddings
- monitoring # Prometheus, Grafana, Loki
- cert-manager # Gestion certificats
# Haute performance (PostgreSQL, ChromaDB)
storageClassName: fast-ssd
provisioner: kubernetes.io/no-provisioner # Local NVMe
volumeBindingMode: WaitForFirstConsumer
# Standard (logs, backups)
storageClassName: standard
provisioner: kubernetes.io/aws-ebs # Ou équivalent
# Objets (S3/MinIO via CSI)
storageClassName: s3-csi
provisioner: ru.yandex.s3.csi
| Catégorie | Métrique | Seuil d'alerte | Action |
|---|---|---|---|
| API | Latency p95 | > 500ms | Scale horizontalement |
| API | Error rate | > 1% | Investigate logs |
| PostgreSQL | Connections | > 80% max | Scale ou optimize queries |
| PostgreSQL | Slow queries | > 1s | Index manquants |
| ChromaDB | Query latency | > 200ms | Scale ou optimize embeddings |
| Redis | Memory usage | > 80% | Increase RAM ou eviction |
| LLM | Tokens/sec | < 50 | Scale GPU ou model |
| Odin | Queue size | > 100 | Scale pods |
# Exemples de règles Prometheus
- alert: APIHighLatency
expr: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) > 0.5
for: 5m
severity: warning
- alert: PostgreSQLDown
expr: up{job="postgresql"} == 0
for: 1m
severity: critical
- alert: LLMGPUMemoryHigh
expr: nvidia_gpu_memory_used_bytes / nvidia_gpu_memory_total_bytes > 0.9
for: 10m
severity: warning
| Version | Date | Auteur | Modifications |
|---|---|---|---|
| 1.1 | Nov 2025 | Devana.ai | Ajout Scénario 4 : Clusters Mac (Apple Silicon M2/M3/M4) |
| 1.0 | Sept 2025 | Devana.ai | Création initiale |
Note légale : Ce document est confidentiel et destiné uniquement aux clients et partenaires de Scriptor Artis. Toute reproduction ou diffusion est interdite sans autorisation écrite.
© 2025 Scriptor Artis - Tous droits réservés