Stack technique
Traduction
Cette page est une traduction de la version anglaise, qui fait foi.
Ce document décrit les principales technologies utilisées dans Balyze ainsi que les raisons ayant motivé leur choix.
L’accent est mis sur l’adéquation long terme et la cohérence architecturale, plutôt que sur des détails spécifiques à un environnement donné.
Framework backend
Laravel est utilisé comme framework backend principal.
Raisons de ce choix :
- écosystème mature et stable
- conventions fortes réduisant la complexité accidentelle
- support de premier plan pour l’authentification, l’autorisation et les tests
- bon équilibre entre productivité et architecture explicite
Laravel fournit la structure de base de l’application sans imposer de contraintes prématurées.
Autorisation et rôles
La gestion des rôles et permissions est assurée par Spatie Laravel Permission.
Cette bibliothèque est utilisée pour :
- gérer explicitement les rôles et permissions
- éviter des implémentations d’autorisation spécifiques au projet
- s’aligner sur le système d’autorisation natif de Laravel
Cette dépendance est considérée comme une préoccupation d’infrastructure, et non comme une dépendance du domaine métier.
Base de données
PostgreSQL est utilisé comme base de données relationnelle principale.
Raisons de ce choix :
- fortes garanties d’intégrité des données
- excellent support des données relationnelles et structurées
- comportement transactionnel robuste
- scalabilité éprouvée sur le long terme
PostgreSQL est particulièrement adapté aux modèles orientés domaine et à la cohérence historique des données.
Cache et performance
Une couche de cache dédiée (par exemple Redis) est utilisée lorsque cela est pertinent afin de répondre aux besoins de performance et de scalabilité.
Le cache reste une préoccupation d’implémentation et n’influence pas les règles métier.
Tests
Les tests automatisés sont écrits avec PHPUnit.
Les tests se concentrent principalement sur :
- les services métier
- les règles de cycle de vie
- les périmètres d’autorisation
Les tests sont considérés comme un filet de sécurité du domaine, et non comme un ajout optionnel.
Considérations de versioning
Les numéros de version précis sont volontairement absents de ce document.
Les versions exactes sont définies et contrôlées via :
- les fichiers de gestion des dépendances
- les configurations de conteneurs
- les outils d’infrastructure
Ce document décrit ce qui est utilisé et pourquoi, et non quelle version exacte est actuellement déployée.