Aller au contenu

Projet indépendant de R&D · Cologne

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.

  1. 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
  2. Validation de schéma à l'exécution

    Principes: P-1, P-5

    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_json sur la réponse brute ; un modèle de réponse explicite
    TypeScript et Node
    safeParse avec 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
  3. 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
    inject et extract d'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
  4. 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
  5. É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
  6. Tests d'architecture

    Principes: P-1, P-6, P-7

    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
  7. 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é
  8. 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.Protocol et 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
  9. 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
  10. 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

COADF Engineering Companion 1.0 · non normatif · se rapporte à COADF Core 2.2

Droits de publication réservés. Aucune licence publique n'est accordée à ce jour pour le COADF Engineering Companion 1.0 ni pour ses exemples de référence.

Statut de propriété intellectuelle et de publication