Leçons d'architecture tirées d'une décennie de travail .NET en entreprise — ce qui s'est transféré directement à la construction de Contractly Pro, et ce qui a dû changer.
Lorem ipsum dolor sit amet, consectetur adipiscing elit lobortis arcu enim urna adipiscing praesent velit viverra sit semper lorem eu cursus vel hendrerit elementum morbi curabitur etiam nibh justo, lorem aliquet donec sed sit mi dignissim at ante massa mattis.
Vitae congue eu consequat ac felis placerat vestibulum lectus mauris ultrices cursus sit amet dictum sit amet justo donec enim diam porttitor lacus luctus accumsan tortor posuere praesent tristique magna sit amet purus gravida quis blandit turpis.

At risus viverra adipiscing at in tellus integer feugiat nisl pretium fusce id velit ut tortor sagittis orci a scelerisque purus semper eget at lectus urna duis convallis. Porta nibh venenatis cras sed felis eget neque laoreet suspendisse interdum consectetur libero id faucibus nisl donec pretium vulputate sapien nec sagittis aliquam nunc lobortis mattis aliquam faucibus purus in.
Nisi quis eleifend quam adipiscing vitae aliquet bibendum enim facilisis gravida neque. Velit euismod in pellentesque massa placerat volutpat lacus laoreet non curabitur gravida odio aenean sed adipiscing diam donec adipiscing tristique risus. amet est placerat in egestas erat imperdiet sed euismod nisi.
“Nisi quis eleifend quam adipiscing vitae aliquet bibendum enim facilisis gravida neque velit euismod in pellentesque massa placerat”
Eget lorem dolor sed viverra ipsum nunc aliquet bibendum felis donec et odio pellentesque diam volutpat commodo sed egestas aliquam sem fringilla ut morbi tincidunt augue interdum velit euismod eu tincidunt tortor aliquam nulla facilisi aenean sed adipiscing diam donec adipiscing ut lectus arcu bibendum at varius vel pharetra nibh venenatis cras sed felis eget.
J'ai déjà écrit sur la façon dont je structure les backends .NET avec une séparation stricte en couches — Domain, Application, Infrastructure, Presentation, les dépendances pointant toujours vers l'intérieur. Cet instinct s'est transféré à Contractly Pro sans modification. Un SaaS servant des freelances dans dix langues à travers plusieurs pays a tout autant de raisons de garder les règles métier indépendantes de l'infrastructure qu'un système de sinistres d'assurance — sans doute davantage, car l'infrastructure (fournisseurs de paiement, prestataires de signature électronique, règles fiscales par pays) est garantie de continuer à changer à mesure que le produit s'étend vers de nouveaux marchés.
Quand j'ai ajouté un deuxième fournisseur de paiement pour une région spécifique, le changement n'a touché exactement qu'un seul projet de la solution. Ce n'est pas un hasard — c'est le résultat direct du fait de garder Infrastructure comme la seule couche autorisée à connaître le SDK d'un fournisseur spécifique.
Les systèmes d'entreprise privilégient la correction et la stabilité au détriment de la vitesse de changement, car le coût d'une erreur — un sinistre d'assurance mal traité, une faille de conformité — est sévère, et la base d'utilisateurs est captive (les employés utilisent l'outil interne parce que c'est l'outil interne). Un SaaS avec des freelances qui peuvent annuler leur abonnement et passer à un concurrent en quelques minutes a un profil de risque complètement différent. Être lent à livrer un correctif ou une fonctionnalité demandée est en soi une forme d'échec.
Cela a impliqué de relâcher délibérément certaines habitudes d'entreprise : moins de portes de validation avant qu'un changement ne sorte, des mises en production plus petites et plus fréquentes plutôt que de grandes versions trimestrielles, et accepter qu'une partie de la finition soit ajoutée après qu'une fonctionnalité soit livrée à de vrais utilisateurs plutôt qu'avant. La rigueur architecturale est restée. Le processus de mise en production est devenu radicalement plus rapide.
Les logiciels d'entreprise que j'ai construits étaient généralement mono-tenant ou mono-marché — un seul assureur, un seul ensemble de règles métier, une seule réglementation nationale. Contractly Pro prend en charge 10 langues et doit s'adapter aux normes de contrats et de facturation de différents pays dès le premier jour. Cela a imposé quelques décisions qui n'auraient pas eu d'importance dans mon travail précédent :
« Les schémas d'architecture qui gardaient maintenable le système de sinistres d'un seul assureur sont exactement les mêmes qui permettent à un fondateur solo de prendre en charge dix langues sans que le code ne s'effondre sous ses propres conditions. »
Une bonne architecture n'est pas spécifique à un secteur. La discipline qui gardait maintenables les systèmes d'entreprise — des limites claires, des dépendances pointant dans une seule direction, l'infrastructure fermement tenue à l'écart de la logique métier — est exactement ce qui a permis à une seule personne de construire et de maintenir un produit servant des freelances dans plusieurs pays sans se noyer dans la complexité. Ce qui a changé, ce ne sont pas les principes. C'est la vitesse à laquelle j'ai été prêt à avancer par-dessus.