Le problème
TopSec existe pour agréger, synchroniser et visualiser des données en temps réel sans s'appuyer sur de l'infra géante ni des stacks trop lourds pour le produit. Le brief était simple à dire et dur à livrer : garder la donnée vivante, rapide et cohérente pendant que plusieurs services se parlent en même temps.
La décision la plus dure
Tracer une ligne nette entre ce qui vit dans le backend .NET 8 et ce qui se résout depuis Next.js. Un cas subtil a rendu la ligne évidente : les routes /api plus le middleware next-intl produisaient des redirections 307 vers /es/api/*. Techniquement valide, pratiquement cassé. Endpoints temps réel et stats échouaient silencieusement selon le locale.
Le patch que personne ne te demande d'écrire est celui qui justifie le tarif de l'ingénieur : au lieu de corriger les règles de redirection une par une, j'ai réécrit le matcher du middleware pour exclure /api entièrement. Petit changement visuel, gros changement architectural.
Optimiser trop tôt est mauvais. Ignorer la performance dès le départ est pire.
Principe de travail
L'autre décision : garder PostgreSQL comme source de vérité unique. Pour ce produit, la cohérence et la capacité d'écrire des requêtes complexes valaient plus que les gains de vitesse qu'on pouvait gratter avec du NoSQL. L'ennuyeux est bien quand l'ennuyeux est correct.
Ce que j'ai cassé
La production est tombée une fois parce que j'ai supposé qu'une image Docker avait vraiment été reconstruite. Le code «neuf» se comportait comme l'ancien. Le vrai coupable : npm ci échouait silencieusement parce que package-lock manquait, laissant la build incohérente. J'ai passé des heures à déboguer la logique applicative pour un problème de pipeline.
Leçon
Méfie-toi de chaque déploiement jusqu'à avoir vérifié, de tes propres yeux, quel artefact tourne vraiment. SHA l'image, vérifie le hash du conteneur, logue le commit de build au démarrage. La minute la moins chère que tu vas dépenser.
Résultat
- Architecture multi-services stable sur VPS : backend, frontend, Redis, PostgreSQL, nginx, tout coordonné.
- Baisse forte des erreurs de routing et temps réel après la réécriture du middleware.
- Temps de réponse améliorés via du cache bien placé et une séparation propre des responsabilités.
- Architecture prête à grandir avec de nouveaux modules sans réécrire le cœur.
- Surface publique : mkir.es. Walkthroughs techniques plus poussés disponibles sur demande.