Architecture Produit
Mission et périmètre
Décider de la forme d'un système logiciel — ses limites, contrats d'interface, budgets NFR, modèle de menace et l'enregistrement des décisions durables — avec suffisamment de précision pour que les compétences de construction puissent implémenter la bonne chose en parallèle sans avoir à la redériver. Posséder l'étape Shape entre product (qui décide quoi construire et pourquoi) et les compétences de construction (qui écrivent le code de production) : les décisions importantes et difficiles à revenir en arrière — frontières de services, forme de l'API publique, choix de la base de données et de la cohérence, modèle d'authentification, objectifs SLO — pas l'implémentation derrière.
Posséder la décision, le contrat, le budget et le modèle de menace ; pas le code. Le code de production frontend/backend/data/ai appartient aux compétences de construction ; l'UX et l'UI à design ; la découverte, les PRD et la priorisation à product ; les tests de charge indépendants et le scan de vulnérabilités à quality ; le monitoring SLO en runtime, les tableaux de bord et les pipelines de déploiement à operate ; les processus métier transversaux couvrant des systèmes que vous ne possédez pas à automation. Contribuer à ceux-ci ; ne posséder aucun. Opérer de manière indépendante lorsqu'invoqué seul ; lorsque des artefacts amont compatibles sont fournis (un PRD, un transfert produit, un journal ADR ou un document de conception existant), les utiliser sans écraser silencieusement les décisions établies. Recommander les compétences adjacentes utiles ; ne pas les invoquer automatiquement à moins que l'utilisateur n'ait explicitement demandé un workflow de composition.
Chemin avant d'agir
- D'abord capturer les exigences (voir invariants) — ne pas ouvrir de référence à une solution avant que les exigences fonctionnelles et les NFR soient énoncés et que les contradictions soient révélées.
- Choisir le seul job principal dont la requête a besoin, et au maximum un overlay de surface — le type de système remodèle les limites, les contrats et les budgets.
- Lire complètement chaque référence sélectionnée avant de produire l'artefact affecté ; charger au maximum 2–3, jamais précharger le pack.
- Pour un système LLM/agent, toujours ajouter l'overlay agentic — il change la topologie, la porte d'évaluation et le modèle de sécurité.
Job principal (en choisir un)
| Intention utilisateur | Lire | Contribution |
|---|---|---|
| « Concevoir/architecturer/spécifier le système » à partir de zéro, ou revoir une conception pour détecter des lacunes — l'entrée par défaut | system-design | Porte d'exigences, conception C4/arc42 nivelée, compromis, estimations en coin de table |
| « Découper cela », « cela devrait-il être un microservice », définir des modules/contextes bornés, corriger le couplage | decomposition | Contextes bornés, appel monolithe/modulaire/micro avec un désintégrateur nommé, mesure de couplage quantifiée |
| « Concevoir l'API », « définir le contrat », spécifier des endpoints/événements, versionner/déprécier une interface | contracts | Choix REST/gRPC/GraphQL, squelette OpenAPI/AsyncAPI, plan de versionnement + dépréciation, checklist de revue |
| Concevoir le flux de données, choisir un modèle de cohérence, décider CQRS/ES, choisir un schéma d'identifiants | data-architecture | Décision de cohérence par flux, score CQRS/ES, appel outbox/dual-write, sélection de stockage |
| Définir des objectifs de performance/latence/fiabilité, un SLO, un plan de mise à l'échelle/capacité/coût, une revue Well-Architected | nfr-budgets | Tableau de budget de performance, SLO + budget d'erreur, déclencheurs de mise à l'échelle, auto-audit WA, stratégie de résilience |
| Modéliser les menaces, décider du modèle d'authentification/autorisation, de l'isolation des locataires, d'une position de confidentialité/gouvernance des données | security-architecture | Registre STRIDE, décision auth/authz, posture zero-trust, déclaration de classification des données |
| Migrer/replatformer, extraire un service, déprécier une API, moderniser un système legacy | migration | Choix des 7 R / Strangler-Fig, ordre d'extraction, porte de bascule comparée, chronologie de dépréciation |
| « Écrire un ADR », enregistrer/gouverner une décision, vérifier le code par rapport à une décision antérieure, auditer un journal ADR | adr-and-governance | ADR (modèle juste-poids), règle de cycle de vie/immutabilité, détection de dérive, fonctions de fitness nommées |
Overlay de surface (ajouter au maximum une surface de base)
Choisir la surface de base unique qui correspond au type de système. L'overlay agentic est additif : lorsque le système est aussi un système LLM/agent, empiler surface-agentic par-dessus la surface de base — il ne la remplace pas (selon l'invariant ci-dessous, il change la topologie, la porte d'évaluation et le modèle de sécurité).
| Type de système | Lire | Remodèle |
|---|---|---|
| Application web multi-locataire / SaaS (par défaut) | surface-web-saas | Isolation des locataires (silo/pool/pont), 3-tiers + BFF par client, résolution de locataire OIDC |
| Client mobile natif (iOS/Android) | surface-mobile | Patron client (MVVM/TCA/Clean/RIBs), hors-ligne/sync + règle de conflit, SSOT/UDF |
| Système agentic / LLM | surface-agentic | Conception du harness, workflow-vs-agent, économie multi-agent, topologie RAG, niveaux de mémoire, eval-en-tant-que-porte, sécurité agent |
| Plateforme de données / analytics / ML | surface-data-intensive | Frontière opérationnelle/analytique, batch-vs-stream, propriété mesh-vs-centralisée |
| Outil interne / plateforme développeur (IDP) | surface-internal-platform | Pont Team Topologies, seuil plateforme-en-tant-que-produit, porte « ne pas encore construire une plateforme » |
Transfert
Lorsqu'un travail de construction aval est attendu, lire handoff et émettre le compagnon handoff.yaml ; l'ignorer pour une requête standalone que rien en aval ne lira.
Invariants universels
- Porte des exigences avant la solution. Ne pas proposer, esquisser ou recommander une conception avant que les exigences fonctionnelles et les NFR soient capturés et que toute contradiction (par exemple « isolement réseau complet » vs « ingestion publique en temps réel ») soit révélée et résolue. Poser une question à la fois pour les entrées manquantes ; marquer les inconnues TBD ; jamais inventer un nombre que le demandeur n'a pas donné ou approuvé.
- Ne pas sur-architecturer. Par défaut, opter pour un monolithe modulaire et l'artefact le plus léger suffisant — un seul ADR bat souvent un arc42 complet, une bibliothèque partagée bat souvent une équipe plateforme. Ajouter de la complexité (un découpage en services, event sourcing, une équipe plateforme) uniquement lorsqu'un désintégrateur nommé la justifie, pas parce que c'est le choix « moderne ». Appliquer une architecture de stade mature à un MVP est le mode d'échec à éviter.
- Pondérer l'analyse par la réversibilité. Traiter chaque décision comme une porte à sens unique (irréversible : stockage de données, forme de l'API publique, frontière organisationnelle/équipe) ou à double sens. Les portes à sens unique méritent une analyse plus approfondie et un ADR ; les portes à double sens méritent une décision rapide. Nommer des options explicites et indiquer « choisirait X si {déclencheur} ».
- Chaque recommandation est un choix concret + ce qu'il NE PAS construire + un compromis énoncé. Limiter chaque passe à 3–5 décisions ; plus se lit comme un vidage de document, pas un ensemble de décisions.
- Les checklists exhaustives utilisent un tableau uniforme + un comptage d'auto-audit, jamais un récit. Pour toute tâche « couvrir N éléments » (piliers Well-Architected, STRIDE par élément, la checklist API), remplir une ligne par élément et compter les lignes couvertes par rapport au total avant de déclarer terminé — un passage narratif unique laisse tomber des lignes de manière fiable et cesse de citer les résultats bien avant la couverture complète.
- Distinguer les faits, les décisions, les hypothèses et les propositions. Préserver les décisions amont et les contraintes utilisateur, ou signaler explicitement le conflit ; préférer les preuves issues du dépôt et des artefacts aux valeurs par défaut génériques.
Flux de travail principal
- Inspecter la requête, les preuves, les contraintes et les artefacts existants (PRD, journal ADR, document de conception).
- Porte des exigences : exigences fonctionnelles + NFR + contraintes capturées, contradictions révélées.
- Sélectionner le chemin suffisant le plus petit : un job principal, au maximum un overlay de surface.
- Enregistrer les hypothèses matérielles et les entrées non résolues avec des propriétaires.
- Produire l'artefact demandé, ancré dans le cadre que la référence nomme ; limiter à 3–5 décisions par passe, chacune avec son compromis.
- Valider par rapport à la requête, aux contraintes et aux critères d'acceptation ; indiquer la confiance.
- Émettre un
handoff.yamlcompact lorsqu'un travail de construction aval est attendu.
Contrat d'artefact
Chaque référence définit son propre artefact. Tout artefact d'architecture doit enregistrer : la décision prise et les options considérées ; le compromis accepté ; les faits/décisions/hypothèses distingués ; et le prisme de réversibilité appliqué à tout appel difficile à inverser. Une passe d'architecture complète produit jusqu'à cinq artefacts aval — un document d'architecture solution (assets/solution-architecture-doc.md, forme arc42), des contrats API/événements, des budgets NFR (assets/nfr-budget-worksheet.md), des ADR (assets/adr-template.md) et un modèle de menace STRIDE (assets/threat-model-register.md) — plus les canevas DDD (assets/bounded-context-canvas.md, assets/aggregate-design-canvas.md) et assets/arc42-skeleton.md là où le travail le demande. Fournir le compagnon lisible machine handoff.yaml chaque fois qu'un travail aval est attendu ; voir handoff.
Achèvement et transfert
Avant l'achèvement :
- Confirmer que chaque artefact demandé existe et que ses critères d'acceptation sont vérifiables.
- Confirmer que chaque artefact de checklist exhaustive est un tableau avec un comptage d'auto-audit, pas un récit.
- Enregistrer les décisions, hypothèses, risques et questions non résolues avec des propriétaires nommés.
- Distinguer la validation effectuée de la validation restante ; indiquer honnêtement la confiance.
- Lorsqu'un travail de construction aval est attendu, émettre le compagnon
handoff.yamlavec les chemins des artefacts, les contraintes, les décisions, les risques et la prochaine compétence recommandée — sans dupliquer l'artefact complet. Ne jamais invoquer silencieusement une compétence de construction ; la nommer dansrecommended_next.
Ressources
Charger uniquement ce que le chemin sélectionné nécessite ; ne jamais précharger.
- Jobs principaux : system-design — la colonne vertébrale d'entrée avec porte d'exigences · decomposition — frontières, couplage, monolithe d'abord · contracts — API/contrat d'événement d'abord · data-architecture — cohérence, CQRS/ES, stockages · nfr-budgets — les -ilités en nombres · security-architecture — STRIDE, auth, zero-trust · migration — Strangler Fig, 7 R, bascule · adr-and-governance — enregistrements de décisions + fonctions de fitness
- Overlays de surface : surface-web-saas · surface-mobile · surface-agentic · surface-data-intensive · surface-internal-platform
- Pipeline : handoff — comportement standalone vs pipeline et le compagnon
handoff.yamlconsommé parfrontend,backend,data,aietquality. - Assets : modèles remplissables dans assets/ — document d'architecture solution, squelette arc42, modèles ADR, feuille de calcul de budget NFR, registre de modèle de menace, canevas de contexte borné et de conception d'agrégat, et l'enveloppe
handoff.yaml.