# Software Architecture · Veille technologique

[Source canonique](<https://sebastien.rigaux.be/veille/tags/software-architecture>)

Organisation des composants, dépendances et responsabilités d’un système logiciel.

## [.NET multi-tenant : migrer un tenant sans interrompre le service — partie 4/4](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-migrer-un-tenant-sans-interrompre-le-service-partie-44>)

Ce volet explique comment déplacer un tenant d’une base partagée vers une base dédiée sans arrêter l’application ni perturber les autres tenants. Le catalogue pilote le basculement, tandis que le même modèle EF Core et son filtre restent en place dans les deux modes.

La migration s’appuie sur une copie initiale, un passage temporaire en lecture seule, une copie delta et une vérification avant le cutover. Le runbook attend l’expiration du cache avant de rouvrir les écritures : les instances qui conservent encore l’ancienne connexion ne peuvent ainsi pas écrire dans la base partagée après le basculement.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-migrer-un-tenant-sans-interrompre-le-service-partie-44.md>) · [Ressource originale](<https://barretblake.dev/posts/development/2026/08/multi-tenant-moving-day/>)

## [.NET multi-tenant : une base par tenant — partie 3/4](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-une-base-par-tenant-partie-34>)

Avec une base par tenant, EF Core n’a plus besoin de filtre global, de colonne `TenantId` ni de clé de cache de modèle spécifique : le choix du tenant passe par une chaîne de connexion résolue depuis une base catalogue.

Cette isolation simplifie le modèle, mais déplace la complexité vers l’exploitation : chaque migration doit s’appliquer à toutes les bases. L’article détaille aussi le rôle de `IDesignTimeDbContextFactory` pour permettre à `dotnet ef` de créer le contexte sans requête ni tenant actif.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-une-base-par-tenant-partie-34.md>) · [Ressource originale](<https://barretblake.dev/posts/development/2026/08/multi-tenant-part-3/>)

## [.NET multi-tenant : séparer les données par schéma SQL Server — partie 2/4](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-separer-les-donnees-par-schema-sql-server-partie-24>)

Cette partie 2/4 montre comment isoler les données de chaque tenant dans son propre schéma SQL Server, sans filtre global ni colonne `TenantId` obligatoire. Le modèle EF Core retrouve ainsi une clé primaire simple, tandis que la frontière d’isolation est portée par la structure de la base.

Le changement central tient au cache du modèle : `OnModelCreating` ne s’exécute qu’une fois par modèle. Il faut intégrer le schéma à la clé via `IModelCacheKeyFactory`, faute de quoi EF Core peut réutiliser celui du premier tenant. L’article détaille aussi le provisionnement et les migrations par schéma, ainsi que la validation stricte des noms de schéma interpolés dans le SQL.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-separer-les-donnees-par-schema-sql-server-partie-24.md>) · [Ressource originale](<https://barretblake.dev/posts/development/2026/07/multi-tenant-part-2/>)

## [.NET : modéliser les intervalles comme objets métier](<https://sebastien.rigaux.be/veille/liens/net-modeliser-les-intervalles-comme-objets-metier>)

CodoMetis.ValueRanges propose des types d’intervalle .NET pour remplacer les paires de dates et leur logique dispersée. Les cinq variantes — finie, sans borne gauche ou droite, infinie et vide — rendent explicites les formes possibles et leurs règles, tandis que les opérations comme `Contains` et `Overlaps` s’exécutent en mémoire.

Le package EF Core associé fait le pont avec PostgreSQL : les mêmes opérations dans le domaine sont traduites en opérateurs SQL via Npgsql. L’article détaille aussi le compromis de conception : des records abstraits plutôt que des structs, pour représenter les variantes par une hiérarchie de types.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-modeliser-les-intervalles-comme-objets-metier.md>) · [Ressource originale](<https://dev.to/caffeinatedcoder/the-interval-is-the-thing-modelling-range-types-as-first-class-domain-objects-in-net-3jha>)

## [Metalama : générer des patterns C\# et faire appliquer l’architecture au build](<https://sebastien.rigaux.be/veille/liens/metalama-generer-des-patterns-c-et-faire-appliquer-larchitecture-au-build>)

Metalama automatise les patterns transverses en C# avec des aspects qui génèrent le code à la compilation, tout en vérifiant les règles d’architecture dès l’édition. L’implémentation répétitive reste ainsi hors du code métier et du dépôt, tandis qu’un même aspect peut être appliqué à une méthode ou à un ensemble de méthodes sélectionnées par code.

Un aspect peut, par exemple, envelopper une méthode dans un `try/catch` pour journaliser son entrée, son résultat et ses exceptions. Metalama permet aussi de prévisualiser le code transformé et de le déboguer, pour rendre ces transformations inspectables.

2026-10-30 · [Markdown](<https://sebastien.rigaux.be/veille/liens/metalama-generer-des-patterns-c-et-faire-appliquer-larchitecture-au-build.md>) · [Ressource originale](<https://postsharp.net/metalama>)

## [REA : l’ingénierie inverse automatisée par agents pour binaires et applications](<https://sebastien.rigaux.be/veille/liens/rea-ingenierie-inverse-automatisee-par-agents-pour-binaires-et-applications>)

REA propose une approche unifiée de l’ingénierie inverse, pilotée par des agents capables d’analyser des binaires natifs, des applications JavaScript/Electron, des sites web ou des bases de données, sans accès au code source. L’outil s’intègre à des agents comme Claude Code ou Cursor, fournit des preuves et des limites pour chaque analyse, et s’appuie sur des outils natifs (Hopper, Ghidra, IDA) pour l’analyse profonde. La documentation détaille les scénarios pris en charge, la configuration des providers et les workflows CLI, avec des exemples concrets de rétro-ingénierie de fonctionnalités d’applications existantes.

2026-10-19 · [Markdown](<https://sebastien.rigaux.be/veille/liens/rea-ingenierie-inverse-automatisee-par-agents-pour-binaires-et-applications.md>) · [Ressource originale](<https://github.com/morluto/rea>)

## [Structurer un projet React : du fichier unique au monorepo modulaire](<https://sebastien.rigaux.be/veille/liens/structurer-un-projet-react-du-fichier-unique-au-monorepo-modulaire>)

Ce panorama détaille les étapes d’organisation d’un projet React, du simple fichier à la structure modulaire d’un monorepo. L’auteur expose les choix de découpage (fichiers, dossiers techniques, dossiers de fonctionnalités, domaines, packages) et leurs impacts sur la maintenabilité, l’isolation des dépendances et la scalabilité. Les exemples concrets montrent comment faire évoluer l’architecture selon la taille du projet, en soulignant les règles pour éviter les dépendances croisées et favoriser la réutilisation.

2026-10-19 · [Markdown](<https://sebastien.rigaux.be/veille/liens/structurer-un-projet-react-du-fichier-unique-au-monorepo-modulaire.md>) · [Ressource originale](<https://www.robinwieruch.de/react-folder-structure/>)

## [Patterns.dev : comprendre les motifs JavaScript et performance web](<https://sebastien.rigaux.be/veille/liens/patterns-dev-comprendre-les-motifs-javascript-et-performance-web>)

Patterns.dev documente des motifs de conception JavaScript et des techniques de performance pour les applications web. Les exemples aident à relier les choix d’architecture à leurs effets sur le chargement et le rendu.

2026-05-10 · [Markdown](<https://sebastien.rigaux.be/veille/liens/patterns-dev-comprendre-les-motifs-javascript-et-performance-web.md>) · [Ressource originale](<https://www.patterns.dev/>)

## [Code Wiki : naviguer dans la documentation générée d’un dépôt](<https://sebastien.rigaux.be/veille/liens/code-wiki-naviguer-dans-la-documentation-generee-d-un-depot>)

Code Wiki génère des explications, références d’API et vues d’architecture à partir de dépôts publics. La documentation est organisée par sections de code pour explorer un projet sans parcourir chaque fichier manuellement.

2026-02-14 · [Markdown](<https://sebastien.rigaux.be/veille/liens/code-wiki-naviguer-dans-la-documentation-generee-d-un-depot.md>) · [Ressource originale](<https://codewiki.google/>)

## [Nakama : un backend pour jeux multijoueurs et fonctions sociales](<https://sebastien.rigaux.be/veille/liens/nakama-un-backend-pour-jeux-multijoueurs-et-fonctions-sociales>)

Nakama rassemble comptes utilisateurs, stockage, chat, classements et modes multijoueurs. Le serveur fournit les briques partagées nécessaires aux jeux et applications temps réel.

2026-01-23 · [Markdown](<https://sebastien.rigaux.be/veille/liens/nakama-un-backend-pour-jeux-multijoueurs-et-fonctions-sociales.md>) · [Ressource originale](<https://github.com/heroiclabs/nakama>)

## [Les contraintes de Next.js auto-hébergé avec plusieurs réplicas](<https://sebastien.rigaux.be/veille/liens/les-contraintes-de-next-js-auto-heberge-avec-plusieurs-replicas>)

Ce retour d’expérience examine les difficultés d’un déploiement Next.js horizontal. Il met en avant les aspects de cache et de coordination à considérer lorsque plusieurs instances servent la même application.

2025-09-07 · [Markdown](<https://sebastien.rigaux.be/veille/liens/les-contraintes-de-next-js-auto-heberge-avec-plusieurs-replicas.md>) · [Ressource originale](<https://www.dlhck.com/essays/the-complete-guide-to-self-hosting-nextjs-at-scale>)

## [Next-forge : démarrer un SaaS avec un monorepo structuré](<https://sebastien.rigaux.be/veille/liens/next-forge-demarrer-un-saas-avec-un-monorepo-structure>)

Next-forge fournit un template Turborepo séparant application, API, emails, site et documentation. Cette organisation pose les bases d’un produit Next.js comportant plusieurs surfaces.

2025-08-16 · [Markdown](<https://sebastien.rigaux.be/veille/liens/next-forge-demarrer-un-saas-avec-un-monorepo-structure.md>) · [Ressource originale](<https://www.next-forge.com/>)

## [DivKit : décrire une interface multiplateforme depuis le serveur](<https://sebastien.rigaux.be/veille/liens/divkit-decrire-une-interface-multiplateforme-depuis-le-serveur>)

DivKit décrit éléments, états et animations dans des données envoyées au client. Les rendus natifs Android, iOS et web permettent de faire évoluer des interfaces sans une nouvelle release pour chaque changement.

2025-08-08 · [Markdown](<https://sebastien.rigaux.be/veille/liens/divkit-decrire-une-interface-multiplateforme-depuis-le-serveur.md>) · [Ressource originale](<https://divkit.tech/en/>)

## [Vogen : générer des value objects autour des types .NET](<https://sebastien.rigaux.be/veille/liens/vogen-generer-des-value-objects-autour-des-types-net>)

Vogen enveloppe des types primitifs dans des types métier générés. L’exemple CustomerId montre comment obtenir comparaisons et construction encadrée sans écrire tout le code répétitif.

2025-02-09 · [Markdown](<https://sebastien.rigaux.be/veille/liens/vogen-generer-des-value-objects-autour-des-types-net.md>) · [Ressource originale](<https://stevedunn.github.io/Vogen/overview.html>)

## [Eraser : produire des diagrammes à partir de texte ou de code](<https://sebastien.rigaux.be/veille/liens/eraser-produire-des-diagrammes-a-partir-de-texte-ou-de-code>)

Eraser accepte des descriptions, fichiers et extraits de code pour construire des diagrammes. Les entrées comme Terraform ou un document de conception permettent d’illustrer une architecture à discuter en équipe.

2025-01-06 · [Markdown](<https://sebastien.rigaux.be/veille/liens/eraser-produire-des-diagrammes-a-partir-de-texte-ou-de-code.md>) · [Ressource originale](<https://www.eraser.io/>)

## [La loi de Gall appliquée aux projets logiciels complexes](<https://sebastien.rigaux.be/veille/liens/la-loi-de-gall-appliquee-aux-projets-logiciels-complexes>)

Jennifer Pahlka revient sur healthcare.gov pour défendre la progression depuis un système simple qui fonctionne. Le texte relie les risques des grands projets à la volonté de livrer toute la complexité d’un seul coup.

2023-10-07 · [Markdown](<https://sebastien.rigaux.be/veille/liens/la-loi-de-gall-appliquee-aux-projets-logiciels-complexes.md>) · [Ressource originale](<https://bigthink.com/smart-skills/complex-project-galls-law/>)

## [Générer des builders .NET qui guident la construction d’objets](<https://sebastien.rigaux.be/veille/liens/generer-des-builders-net-qui-guident-la-construction-d-objets>)

Ce générateur automatise les builders pour classes, structs et records. Les étapes imposent les informations obligatoires avant les options, tout en favorisant l’immutabilité des objets.

2023-08-27 · [Markdown](<https://sebastien.rigaux.be/veille/liens/generer-des-builders-net-qui-guident-la-construction-d-objets.md>) · [Ressource originale](<https://github.com/bnayae/Bnaya.BuilderPatternGenerator>)

## [Frappe : un framework métier piloté par les métadonnées](<https://sebastien.rigaux.be/veille/liens/frappe-un-framework-metier-pilote-par-les-metadonnees>)

Frappe associe un backend Python à une interface JavaScript pour développer des applications métier. Son modèle de métadonnées, utilisé par ERPNext, structure les objets et leur comportement pour réduire le code répétitif.

2023-05-06 · [Markdown](<https://sebastien.rigaux.be/veille/liens/frappe-un-framework-metier-pilote-par-les-metadonnees.md>) · [Ressource originale](<https://github.com/frappe/frappe>)

## [Appliquer les principes SOLID aux composants Vue 3](<https://sebastien.rigaux.be/veille/liens/appliquer-les-principes-solid-aux-composants-vue-3>)

L’article transpose les principes SOLID au développement frontend avec Vue 3. Il montre comment utiliser ces règles de conception pour structurer du code plus maintenable au-delà des seuls détails du framework.

2023-05-06 · [Markdown](<https://sebastien.rigaux.be/veille/liens/appliquer-les-principes-solid-aux-composants-vue-3.md>) · [Ressource originale](<https://medium.com/@moein.mirkiani/solid-principles-in-vue-29ecc988f968>)

## [Modéliser les flux de sécurité dès la conception d’une application](<https://sebastien.rigaux.be/veille/liens/modeliser-les-flux-de-securite-des-la-conception-d-une-application>)

Damien Bod propose de représenter les flux d’authentification et d’autorisation dans un modèle de contexte. Cette approche aide à repérer les frontières de confiance et les erreurs de conception avant l’implémentation.

2023-05-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/modeliser-les-flux-de-securite-des-la-conception-d-une-application.md>) · [Ressource originale](<https://damienbod.com/2023/05/01/application-security-context-models/>)

Page 1 / 2

[Suivant](<https://sebastien.rigaux.be/veille/tags/software-architecture/page/2>)
