Matrice technologique
Une propriété par ligne, tenue par une technologie différente dans chaque colonne.
Non normatif
- Version du Companion
- 1.0
- Se rapporte à COADF Core
- 2.2
- Statut
- À jour
- Dernière relecture
Chaque ligne est une propriété d'architecture ; chaque colonne montre comment une pile peut la tenir. La matrice montre que la propriété reste la même pendant que la technologie change.
La matrice ne classe pas les piles et ne recommande aucune colonne.
Validation à la frontière
Principes: P-1
- Java et Spring
- Jakarta Validation sur les types de requête avec
@Valid, et de nouveau dans la fabrique du domaine - Python et FastAPI
- Modèles Pydantic avec
extra="forbid"et le mode strict ; FastAPI répond 422 à une entrée invalide - TypeScript et Node
- Un schéma Zod ou JSON Schema de chaque côté qui reçoit, avec le type qui en est inféré
- Cloud-native et Kubernetes
- Pas une propriété d'infrastructure : l'admission ne voit jamais les données de l'application
Validation de schéma à l'exécution
- Java et Spring
- Contraintes Bean, et une règle explicite sur les propriétés non déclarées pour les types de frontière
- Python et FastAPI
model_validate_jsonsur la réponse brute ; un modèle de réponse explicite- TypeScript et Node
safeParseavec des objets stricts ; Ajv derrière les schémas de route Fastify- Cloud-native et Kubernetes
- Validation stricte des manifestes par leur schéma avant leur application
Propagation de la trace
Principes: P-4
- Java et Spring
- Micrometer Tracing avec le pont OpenTelemetry ; des décorateurs de tâches qui propagent le contexte
- Python et FastAPI
injectetextractd'OpenTelemetry ; le contexte copié dans les threads- TypeScript et Node
- OpenTelemetry JS avec le gestionnaire de contexte AsyncLocalStorage
- Cloud-native et Kubernetes
- Réglages du SDK OpenTelemetry par charge de travail ; W3C Trace Context par défaut
Piste d'audit persistante
Principes: P-4
- Java et Spring
- Entrées écrites dans la transaction métier ; droits et triggers de la base de données
- Python et FastAPI
- PostgreSQL avec un rôle limité à l'insertion, des triggers de refus et des écritures idempotentes
- TypeScript et Node
- Le même schéma PostgreSQL au travers d'un driver, dans la transaction métier
- Cloud-native et Kubernetes
- Le stockage propre à l'application, jamais le pipeline de télémétrie
Évaluation des règles
Principes: P-8
- Java et Spring
- Une interface qui appartient au domaine, avec un adaptateur OPA, ou des tables de règles
- Python et FastAPI
- OPA par son API REST derrière une interface ; aucune décision sans révision
- TypeScript et Node
- OPA par HTTP, ou Rego compilé en WebAssembly et évalué dans le processus
- Cloud-native et Kubernetes
- OPA comme service ou comme sidecar, avec les révisions de bundle dans les journaux de décision
Tests d'architecture
- Java et Spring
- Règles ArchUnit, ou vérification Spring Modulith
- Python et FastAPI
- Contrats import-linter
- TypeScript et Node
- dependency-cruiser, règles de frontière ESLint, ou références de projet
- Cloud-native et Kubernetes
- Tests des manifestes et des règles d'admission elles-mêmes
Application dans la CI
Principes: P-6
- Java et Spring
- Tests d'architecture et de contrat comme contrôles requis
- Python et FastAPI
- Contrats d'import, tests négatifs et fence de publication comme contrôles requis
- TypeScript et Node
- Règles de dépendances, tests de schéma et tests de contrat comme contrôles requis
- Cloud-native et Kubernetes
- Un job de synthèse qui échoue dès qu'un fence a échoué ou a été ignoré
Isolation des normes
Principes: P-7
- Java et Spring
- Interfaces de port dans le module du domaine ; un module d'adaptateur par fournisseur
- Python et FastAPI
- Un port
typing.Protocolet un adaptateur qui est seul à connaître le fournisseur - TypeScript et Node
- Interfaces de port ; un package d'adaptateur par fournisseur dans le workspace
- Cloud-native et Kubernetes
- Sortie vers chaque service externe autorisée explicitement, et rien d'autre
Observabilité
Principes: P-4
- Java et Spring
- Micrometer Observation
- Python et FastAPI
- L'API et le SDK OpenTelemetry
- TypeScript et Node
- Le SDK OpenTelemetry JS, préchargé, avec le hook de chargement pour les modules ES
- Cloud-native et Kubernetes
- Un pipeline OpenTelemetry Collector, qui peut échantillonner
Application au déploiement
Principes: P-6
- Java et Spring
- Délégué à la plateforme sur laquelle tourne le service
- Python et FastAPI
- Délégué à la plateforme sur laquelle tourne le service
- TypeScript et Node
- Délégué à la plateforme sur laquelle tourne le service
- Cloud-native et Kubernetes
- ValidatingAdmissionPolicy ou Gatekeeper ; images par digest ; révisions sur chaque objet
