Lehmora Labs

Retour à l’accueil

Journal d’ingénierie

Les décisions techniques du studio, écrites avec leur raison et leur coût. Pour les développeurs qui veulent savoir comment c’est construit.

Trois backends, deux serveurs, neuf décisions.

Famsub, Tallyno puis Payskool ont chacun un backend NestJS avec PostgreSQL et Redis. Plutôt que de laisser chaque produit se déployer à sa manière, un dépôt unique, lehmora-infra, décrit l’ensemble : stacks Docker Compose, scripts, sauvegardes, supervision. Il est conçu pour qu’un serveur perdu se reconstruise depuis une Ubuntu vierge, avec ce dépôt et les sauvegardes hors site.

La production et le staging sont prévus sur deux serveurs distincts, qui ne partageront ni réseau, ni base, ni secret. Une migration ratée ou un conteneur qui consomme toute la mémoire en staging ne pourra pas faire tomber la production.

Le compromis

Pas de multi-région, pas de haute disponibilité. Pour trois petits backends, un serveur reconstructible et bien sauvegardé coûte moins cher et se comprend mieux qu’un cluster.

État réel

Stacks, scripts et décisions sont versionnés. Les deux serveurs ne sont pas encore provisionnés : rien de tout cela ne sert encore de trafic réel.

Les décisions

  1. D-01Deux serveurs séparés par environnement, pas par type de service.
  2. D-02Un moteur PostgreSQL par serveur, une base et un rôle par application.
  3. D-03Ni Portainer ni webhooks : git pull et docker compose via SSH.
  4. D-04Aucun maillage réseau entre production et staging.
  5. D-05Mail auto-hébergé, sur la production uniquement.
  6. D-06Destination des sauvegardes non liée à un fournisseur.
  7. D-07Un dump par base, restaurable application par application.
  8. D-08Une seule instance de supervision pour les deux serveurs.
  9. D-09Tallyno reprend le pipeline de build de Famsub (en cours de fusion).

Ce que les produits partagent réellement

Pas de « moteur commun » abstrait. Trois briques concrètes, utilisées ou prévues par plusieurs produits.

Brique partagéeFamsubTallynoPayskool
lehmora-infraDéploiement, bases, sauvegardes, supervision.prévuprévuprévu
nui_flutterComposants et thème Flutter communs.utiliséutilisénon concerné
NestJSMême framework backend, mêmes conventions.utiliséutiliséutilisé

utilisé prévucase vide : non concerné