Vue d'ensemble
Les choix techniques
Chaque technologie justifiée par une exigence du cahier des charges.
Chaque technologie répond à une contrainte nommée dans votre cahier des charges.
| Couche | Technologie | Pourquoi, pour ERK+ |
|---|---|---|
| Web | React | Dashboard riche et réactif ; responsive (tous formats d'écran), compatible Chrome, Firefox, Safari, Edge |
| Mobile | React Native + Expo | Un seul code iOS 14+ / Android 9+ au rendu natif — fluide sur les smartphones d'entrée de gamme majoritaires au Sénégal |
| Services haute concurrence | Go | Auth, Chantier, Notifications : milliers de connexions simultanées sur une empreinte minuscule |
| Modules critiques | Rust | Finance & Média : sécurité mémoire, précision arithmétique, chiffrement du coffre-fort |
| API Gateway | Traefik | Entrée unique : terminaison TLS, routage dynamique, équilibrage de charge |
| Bus d'événements | NATS + JetStream | Communication asynchrone persistante — aucun message perdu, traçabilité totale |
| Protocoles | gRPC (interne) · GraphQL (mobile) | Échanges internes typés/binaires rapides ; le mobile ne transfère que le nécessaire |
| Base transactionnelle | PostgreSQL | ACID pour la cohérence des données financières |
| Cache & temps réel | Redis | Sessions et données live (ex. caméras de chantier) |
| Stockage objet | MinIO (compatible S3) | Documents, photos, vidéos — auto-hébergé |
| Conteneurs & orchestration | Docker · Kubernetes | Auto-scaling (2 000 users), déploiement Blue-Green sans interruption |
| CI/CD | GitHub · GitHub Actions | Build + tests à chaque push, scan de sécurité des dépendances (DevSecOps), conteneurisation |
Pourquoi Go et Rust
Ce ne sont pas des choix de niche. Go fait tourner Google, Uber, Cloudflare, ainsi que Docker et Kubernetes (tous deux écrits en Go). Rust est adopté par Microsoft, AWS, Cloudflare et Discord pour leurs systèmes critiques, et a rejoint le noyau Linux et Android. Nous mettons cette technologie de niveau mondial au service de votre projet.
- Go compile en un binaire unique, démarre en millisecondes et tient des milliers de connexions sur une faible empreinte mémoire — décisif pour soutenir 2 000 utilisateurs sur une infrastructure au budget maîtrisé.
- Rust apporte la sécurité mémoire sans ramasse-miettes et une précision arithmétique infaillible — ce qu'exigent un registre financier et le chiffrement d'un coffre-fort.
- PostgreSQL apporte les transactions ACID indispensables à un registre de paiement fiable.
- Un seul cœur Rust, réutilisé partout : la compression et la validation des médias sont écrites une fois, puis compilées en WebAssembly pour le web, en natif pour le mobile et en binaire côté serveur.
La barre des 3 secondes
Chaque milliseconde du trajet est budgétée ; le dépassement casse le build.
Cycle de vie d'une requête
0.55s mesuré / 3.0s budget
- Client 4GDNS · reprise TLS 1.3+180ms
- TraefikTLS · routage · LB+120ms
- AuthJWT · portée RBAC+100ms
- Service GogRPC · logique métier+90ms
- PostgreSQLrequête indexée+60ms
- Affichépage interactive≈ 0.55s
Le plafond de 3 s est un test bloquant de notre chaîne de livraison — pas une intention. Budget côté serveur ci-dessus ; le reste, c'est le débit réseau.
Optimisation réseaux lents
- Hors-ligne : base SQLite sur mobile → saisie sans réseau, synchronisation automatique au retour de la connexion
- Photos (web) : pré-compression dans le navigateur via un module Rust → WebAssembly avant l'envoi — l'upload part allégé (jusqu'à −70 %), décisif sur 3G/4G ; module chargé à la demande pour préserver le budget des 3 s
- Vidéo : compression côté serveur (Rust), flux optimisés pour la bande passante 4G
- Images adaptées à l'écran et au débit réel, chargement différé
- Barre des 3 secondes vérifiée à chaque intégration

