Zum Inhalt springen

Unabhängiges F&E-Projekt · Köln

Technologiematrix

Eine Eigenschaft pro Zeile, in jeder Spalte mit einer anderen Technologie umgesetzt.

Nicht normativ

Companion-Version
1.0
Bezug zu COADF Core
2.2
Status
Aktuell
Zuletzt geprüft

Jede Zeile ist eine Architektureigenschaft; jede Spalte zeigt, wie ein Stack sie einhalten kann. Die Matrix zeigt, dass die Eigenschaft gleich bleibt, während die Technologie wechselt.

Die Matrix bewertet die Stacks nicht, und keine Spalte wird empfohlen.

  1. Validierung an der Grenze

    Prinzipien: P-1

    Java und Spring
    Jakarta Validation auf Request-Typen mit @Valid, und erneut in der Factory der Domäne
    Python und FastAPI
    Pydantic-Modelle mit extra="forbid" und Strict Mode; FastAPI beantwortet ungültige Eingaben mit 422
    TypeScript und Node
    Ein Zod- oder JSON-Schema auf jeder empfangenden Seite, mit daraus abgeleitetem Typ
    Cloud-native und Kubernetes
    Keine Eigenschaft der Infrastruktur: Admission sieht nie Anwendungsdaten
  2. Schemavalidierung zur Laufzeit

    Prinzipien: P-1, P-5

    Java und Spring
    Bean-Constraints und eine explizite Regel für nicht deklarierte Properties bei Typen an der Grenze
    Python und FastAPI
    model_validate_json auf der unveränderten Antwort; ein explizites Response-Modell
    TypeScript und Node
    safeParse mit strikten Objekten; Ajv hinter den Routen-Schemata von Fastify
    Cloud-native und Kubernetes
    Strikte Schemavalidierung von Manifesten, bevor sie angewendet werden
  3. Weitergabe des Trace-Kontexts

    Prinzipien: P-4

    Java und Spring
    Micrometer Tracing mit der OpenTelemetry-Bridge; Task-Decorators, die den Kontext weitergeben
    Python und FastAPI
    OpenTelemetry inject und extract; der Kontext wird in Threads kopiert
    TypeScript und Node
    OpenTelemetry JS mit dem AsyncLocalStorage-Kontextmanager
    Cloud-native und Kubernetes
    OpenTelemetry-SDK-Einstellungen pro Workload; standardmäßig W3C Trace Context
  4. Dauerhafte Prüfspur

    Prinzipien: P-4

    Java und Spring
    Einträge, die in der Geschäftstransaktion geschrieben werden; Datenbankberechtigungen und Trigger
    Python und FastAPI
    PostgreSQL mit einer Rolle, die nur einfügen darf, ablehnenden Triggern und idempotenten Schreibvorgängen
    TypeScript und Node
    Dasselbe PostgreSQL-Schema über einen Treiber, in der Geschäftstransaktion
    Cloud-native und Kubernetes
    Der eigene Speicher der Anwendung, niemals die Telemetrie-Pipeline
  5. Auswertung von Regeln

    Prinzipien: P-8

    Java und Spring
    Eine Schnittstelle im Besitz der Domäne mit einem OPA-Adapter, oder Regeltabellen
    Python und FastAPI
    OPA über seine REST-API hinter einer Schnittstelle; keine Entscheidung ohne Revision
    TypeScript und Node
    OPA über HTTP, oder Rego, nach WebAssembly kompiliert und im Prozess ausgewertet
    Cloud-native und Kubernetes
    OPA als Dienst oder Sidecar, mit Bundle-Revisionen in den Decision Logs
  6. Architekturtests

    Prinzipien: P-1, P-6, P-7

    Java und Spring
    ArchUnit-Regeln oder die Verifikation von Spring Modulith
    Python und FastAPI
    Verträge von import-linter
    TypeScript und Node
    dependency-cruiser, ESLint-Regeln für Grenzen oder Project References
    Cloud-native und Kubernetes
    Tests für Manifeste und für die Admission-Regeln selbst
  7. Durchsetzung in der CI

    Prinzipien: P-6

    Java und Spring
    Architektur- und Vertragstests als erforderliche Checks
    Python und FastAPI
    Import-Verträge, negative Tests und der Veröffentlichungs-Fence als erforderliche Checks
    TypeScript und Node
    Abhängigkeitsregeln, Schematests und Vertragstests als erforderliche Checks
    Cloud-native und Kubernetes
    Ein zusammenfassender Job, der scheitert, sobald ein Fence gescheitert ist oder übersprungen wurde
  8. Isolierung von Standards

    Prinzipien: P-7

    Java und Spring
    Port-Schnittstellen im Domänenmodul; ein Adaptermodul pro Anbieter
    Python und FastAPI
    Ein typing.Protocol-Port und ein Adapter, der als einziger den Anbieter kennt
    TypeScript und Node
    Port-Schnittstellen; ein Adapterpaket pro Anbieter im Workspace
    Cloud-native und Kubernetes
    Egress zu jedem externen Dienst ausdrücklich erlaubt, und sonst nichts
  9. Beobachtbarkeit

    Prinzipien: P-4

    Java und Spring
    Micrometer Observation
    Python und FastAPI
    Die OpenTelemetry-API und das SDK
    TypeScript und Node
    Das OpenTelemetry-JS-SDK, vorab geladen, mit dem Loader-Hook für ES-Module
    Cloud-native und Kubernetes
    Eine OpenTelemetry-Collector-Pipeline, die sampeln darf
  10. Durchsetzung beim Deployment

    Prinzipien: P-6

    Java und Spring
    An die Plattform delegiert, auf der der Dienst läuft
    Python und FastAPI
    An die Plattform delegiert, auf der der Dienst läuft
    TypeScript und Node
    An die Plattform delegiert, auf der der Dienst läuft
    Cloud-native und Kubernetes
    ValidatingAdmissionPolicy oder Gatekeeper; Images per Digest; Revisionen auf jedem Objekt

COADF Engineering Companion 1.0 · nicht normativ · bezieht sich auf COADF Core 2.2

Veröffentlichungsrechte vorbehalten. Für den COADF Engineering Companion 1.0 und seine Referenzbeispiele wird derzeit keine öffentliche Lizenz erteilt.

Schutzrechts- und Veröffentlichungsstatus